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 git@github.com: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.example
to.env
and 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
main
branch, 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
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.