A themed Kanban board todo app with Laravel 12, Inertia.js 2, Vue 3, and Tailwind CSS 4. Features Breeze authentication, per-user todo scoping, and dual coffee/nes themes.
- Kanban Board — Drag-and-drop columns: To Do, In Progress, Done
- Authentication — Login, register, password reset, email verification (Breeze/Inertia stack)
- Per-User Scoping — Each user sees only their own todos
- Dual Themes — Coffee (default dark) and NES (retro purple/pink) with CSS variables
- Priority System — 5-level priority with color-coded badges
- Due Date Tracking — Set due dates with overdue indicators
- CSV Export — Download your todos as a CSV file from the Kanban board
- Responsive — Works on desktop and mobile
| Layer | Technology |
|---|---|
| Backend | Laravel 12, PHP 8.2 |
| Frontend | Vue 3 (Composition API), Inertia.js 2 |
| Styling | Tailwind CSS 4, CSS variables for theming |
| Build | Vite 7 |
| Database | SQLite (local/testing), MySQL (local dev), PostgreSQL (production) |
| Auth | Laravel Breeze |
| Drag & Drop | vuedraggable |
- PHP 8.2+, Node 18+, Composer
- Herd (recommended) or XAMPP for local dev
- MySQL via DBngin (or use SQLite by setting
DB_CONNECTION=sqlite)
git clone <repository-url>
cd laravel-boost
composer install
npm install
cp .env.example .env
php artisan key:generateFor MySQL (default local):
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=my_boosted_app
DB_USERNAME=root
DB_PASSWORD=For SQLite (testing / fallback):
DB_CONNECTION=sqlitephp artisan migrate
php artisan db:seedThis creates two test users (password: password):
test@example.comuser2@example.com
npm run build
php artisan serveVisit http://127.0.0.1:8000 — you'll be redirected to login.
composer run dev # Start all dev processes (artisan serve, queue, pail, npm run dev)
composer run test # Run test suite (config:clear + php artisan test)
npm run build # Vite production build
vendor/bin/pint --dirty # Format PHP (dirty only)
php artisan ziggy:generate # Refresh JS routes after changing routes/web.php| Column | Type | Notes |
|---|---|---|
| id | bigint | Primary key |
| user_id | bigint | FK → users, NOT NULL |
| title | string | Required |
| description | text | Nullable |
| status | enum | todo, in_progress, done |
| priority | integer | 1–5 |
| completed | boolean | |
| due_date | date | Nullable |
| created_at | timestamp | |
| updated_at | timestamp |
Standard Laravel users table with name, email, password, plus email_verified_at and remember_token.
Toggle between Coffee (warm dark) and NES (retro purple) via the button in the nav bar. Theme preference persists in localStorage. CSS variables (--color-*) control all colors across auth pages, layouts, and the Kanban board.
The Dockerfile builds for Render's free tier:
- Set
DB_CONNECTION=pgsqland PostgreSQL credentials via Render env vars - Migrations run at startup via
docker-entrypoint.sh - Assets are built during
docker build
# Render env vars
DB_CONNECTION=pgsql
DB_HOST=<render-postgres-host>
DB_PORT=5432
DB_DATABASE=<db-name>
DB_USERNAME=<db-user>
DB_PASSWORD=<db-password>
APP_URL=https://your-app.onrender.comNotes:
APP_URLshould be set to your Render app URL to ensure correct asset URLsbootstrap/app.phpconfigures trusted proxies (*) so Laravel generateshttps://URLs behind Render's proxy- Migrations automatically create a System user if orphaned todos exist with no users (for
user_idNOT NULL constraint)
MIT