A modern, responsive, and accessible admin dashboard built with Shadcn UI, Laravel, and Vite. This project combines the elegance of Shadcn's UI components with the robustness of Laravel's backend framework, providing a seamless development experience.
This project is inspired by Shadcn-admin and adapted to work seamlessly with Laravel and Inertia.js.
- Light/dark mode
- Responsive
- Accessible
- With built-in Sidebar component
- Global Search Command
- 10+ pages
- Extra custom components
UI: ShadcnUI (TailwindCSS + RadixUI)
Backend: Laravel 12.x
Frontend Integration: InertiaJs
Build Tool: Vite
Type Checking: TypeScript
Linting/Formatting: Eslint & Prettier
Icons: Tabler Icons
- Clone the project
git clone [email protected]:binjuhor/shadcn-lar.git- Go to the project directory
cd shadcn-lar- Install dependencies
- Install JavaScript dependencies:
pnpm install- Install PHP dependencies:
composer install- Data migration
php artisan migrate- Start the dev Frotnedend and Backend server
- Start the Vite development server:
pnpm run dev- Start the Laravel development server:
php artisan serve- Open your browser and visit http://localhost:8000 to view the dashboard.
This project includes automated CI/CD workflows using GitHub Actions. The workflows are located in the .github/workflows/ directory and provide continuous integration and deployment capabilities.
Automatically runs on every push to the main branch and performs:
- PHP Setup: Uses PHP 8.2 with required extensions
- Environment Setup: Copies
.env.exampleto.envand generates application key - Dependencies: Installs Composer dependencies
- Frontend Build: Installs Node.js dependencies and builds production assets
- Database Setup: Creates SQLite database for testing
- Test Execution: Runs PHPUnit/Pest tests (unit and feature tests)
Automatically deploys to production server on successful pushes to main branch:
- Code Deployment: Uses rsync to sync code to production server
- Frontend Build: Builds production assets before deployment
- Dependencies: Installs/updates Composer dependencies via Docker
- Database Migration: Runs Laravel migrations
- Cache Management: Clears and optimizes application cache
- Docker Integration: Restarts Docker containers for updated services
For the deployment workflow to work, configure these GitHub repository secrets:
PRIVATE_KEY- SSH private key for server accessSSH_HOST- Production server hostname/IPSSH_USER- SSH username for server accessWORK_DIR- Application directory path on serverDOCKER_DIR- Docker compose directory path on server
Note: Ensure your server is set up to allow SSH access using the provided private key. Public key should be added to the server's ~/.ssh/authorized_keys. Folder permissions should allow the SSH user to read/write as needed..ssh folder should have 700 permissions and authorized_keys file should have 600 permissions.
-
Before Committing:
# Run tests locally php artisan test # Build frontend assets pnpm run build # Check code formatting pnpm run lint
-
Push to Main:
- Tests workflow runs automatically
- If tests pass and on
mainbranch, deployment begins - Monitor workflow progress in GitHub Actions tab
To modify the CI/CD behavior:
- Test Configuration: Edit
.github/workflows/test.yml - Deployment Steps: Edit
.github/workflows/deploy.yml - Add Quality Checks: Consider adding code style checks, static analysis, or security scans
This project uses nwidart/laravel-modules for a modular monorepo architecture. Each module is self-contained with its own controllers, models, migrations, and React frontend.
| Module | Description |
|---|---|
| Finance | Personal finance tracking (accounts, transactions, budgets) |
| Invoice | Invoice management |
| Permission | Roles and permissions management |
| Settings | Application settings |
| Blog | Blog posts and categories |
| Ecommerce | Products, orders, and categories |
| Notification | User notifications |
# Basic module scaffolding
php artisan module:scaffold ModuleName
# With CRUD scaffolding (model, migration, policy, controller, pages)
php artisan module:scaffold ModuleName --with-crud
# Specify entity name for CRUD
php artisan module:scaffold Inventory --with-crud --entity=Product
# Preview without creating files
php artisan module:scaffold ModuleName --dry-runExtract selected modules into a completely new Laravel project:
# Create a finance-only site
php artisan site:generate FinanceApp --modules=Finance --output=~/Projects
# Create a multi-module site
php artisan site:generate AdminPanel --modules=Finance,Settings,Permission --output=~/Projects
# Preview what would be created
php artisan site:generate TestApp --modules=Finance --dry-runThe site:generate command:
- Copies base Laravel+React project structure
- Includes only selected modules
- Updates all configuration files (composer.json, tsconfig.json, vite.config.js)
- Removes unused module references
- Shows next steps after generation
# Enable a module
php artisan module:enable ModuleName
# Disable a module
php artisan module:disable ModuleName
# List all modules
php artisan module:listModules/
└── ModuleName/
├── app/
│ ├── Http/Controllers/
│ ├── Models/
│ ├── Policies/
│ └── Providers/
├── config/
├── database/
│ ├── migrations/
│ └── seeders/
├── resources/
│ └── js/
│ ├── pages/
│ └── types/
├── routes/
│ ├── api.php
│ └── web.php
└── module.json
Here are some of the planned features for future updates:
-
User Permissions & Roles: Manage user roles and permissions with a flexible and intuitive system.
-
Profile Manager: Allow users to update their profiles, including personal information and security settings.
-
Post & Page Manager: Create and manage dynamic posts and pages with a rich text editor.
-
Theme & Plugin Manager: Easily install and manage themes and plugins to extend functionality.
-
File & Media Manager: A powerful file and media manager for handling uploads and organizing assets.
This project was crafted with 🤍 by @binjuhor
This project is open-source and licensed under the MIT License. Feel free to use, modify, and distribute it as needed.
