# laravel-admin **Repository Path**: funcmf/laravel-admin ## Basic Information - **Project Name**: laravel-admin - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-29 - **Last Updated**: 2026-05-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Laravel Admin Neutral Laravel 13 + Vue admin platform scaffold. ## Structure - `web`: admin UI. - `admin`: Laravel 13 API backend. - `admin/Modules`: Laravel-style modules. A module can include backend code and frontend resources. - `web/src/modules`: frontend runtime modules published from `admin/Modules/*/resources/web`. - `docs`: architecture notes. ## Current Decisions - The backend module namespace is `App\Admin`. - The API prefix is `/admin`. - Tenant support is a system module under `admin/Modules/Tenant`. - Module web resources are published with `php artisan plugin:install tenant --enable --publish-web`. - The web app uses Tailwind CSS 4 utilities (with `@theme` tokens); Element Plus and layout chrome remain in SCSS. ## Docker Deploy The root `docker-compose.yml` starts the full stack: - `nginx`: public entrypoint on `http://localhost:8080`, serves the built Vue app and proxies `/admin` to Laravel. - `app`: Laravel PHP-FPM runtime, runs package discovery, migrations, and config cache on boot. - `mysql`: MySQL 8.4, exposed locally as `127.0.0.1:33060`. - `postgres`: PostgreSQL 17 is supported through `docker-compose.pgsql.yml`, exposed locally as `127.0.0.1:54320`. - `redis`: Redis 7, exposed locally as `127.0.0.1:63790`. ```bash # Default: MySQL docker compose up -d --build docker compose logs -f app nginx # PostgreSQL stack docker compose -f docker-compose.pgsql.yml up -d --build docker compose -f docker-compose.pgsql.yml logs -f app nginx ``` Health checks: ```bash curl http://localhost:8080/up curl http://localhost:8080/admin/health docker compose exec app php artisan admin:deploy-check ``` Default local credentials are intentionally simple for development deployment (`laravel_admin` / `laravel_admin`; MySQL root password `root`). Override them with production secrets before using these compose files on a public server. ## Deployment Check Run the same deployment gate locally, in Docker, or in CI: ```bash pnpm admin:deploy-check php admin/artisan admin:deploy-check docker compose exec app php artisan admin:deploy-check ``` The check verifies: - database connectivity and current driver (`mysql` or `pgsql`); - migration status; - admin route loading; - permission consistency via `admin:permission-audit --sync --fail-on-issues`. Use `--no-sync` when you want a strict read-only check: ```bash php admin/artisan admin:deploy-check --no-sync ``` ## Permission Audit The backend includes a permission consistency command: ```bash php admin/artisan admin:permission-audit php admin/artisan admin:permission-audit --sync --fail-on-issues php admin/artisan admin:permission-audit --json ``` It compares route middleware, database menu permissions, database permission rows, frontend `v-perm` usages, and plugin `module.json` manifests. The `--sync` option synchronizes plugin manifest permissions and menu nodes, then attaches all current menus and permissions to the `admin` role. Frontend permission debugging can be enabled in development with: ```bash VITE_PERMISSION_DEBUG=true pnpm --dir web dev VITE_PERMISSION_DEBUG=true pnpm --dir tenant-web dev ``` When a `v-perm` controlled button is hidden, the browser console prints the required permission, matching mode, missing permission codes, and button text.