A role-based project, milestone, and task management system built with Laravel 12, MySQL, Laravel Breeze (Blade), and Spatie Laravel Permission.
- Laravel 12
- MySQL
- Laravel Breeze (Blade + Tailwind)
- Spatie Laravel Permission (roles & permissions)
- MVC + Service Layer architecture
-
Clone and install dependencies
composer install cp .env.example .env php artisan key:generate
-
Configure database (
.env)DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=your_database DB_USERNAME=your_username DB_PASSWORD=your_password
-
Run migrations and seed
php artisan migrate php artisan db:seed
-
Build frontend (optional; Breeze uses Vite)
npm install npm run build
-
Serve the application
php artisan serve
Open
http://localhost:8000.
After seeding, you can log in with:
| Role | Password | |
|---|---|---|
| Super Admin | admin@example.com | password |
| Project Manager | pm@example.com | password |
| Manager | manager@example.com | password |
| HR | hr@example.com | password |
| Team Lead | teamlead@example.com | password |
| User (Employee) | user@example.com | password |
- Super Admin – Full system access: manage users, roles, all projects/tasks, reports.
- Project Manager – Create/edit/delete projects; create milestones; assign managers/team leads; view project progress.
- Manager – Assigned projects/milestones; create and assign tasks; update deadlines; view task status.
- HR – Same as Manager in this app (assign projects, create/assign tasks, view status).
- Team Lead – Tasks assigned to their team; assign tasks to users; update task progress; mark completed.
- User (Employee) – My assigned tasks only; view details; update status (Pending / In Progress / Completed); view deadlines.
create_project,edit_project,delete_project,view_all_projectscreate_milestone,edit_milestone,delete_milestonecreate_task,edit_task,delete_task,assign_task,update_task_statusview_reports,manage_users,manage_roles
Spatie handles role–permission assignment; see database/seeders/RoleAndPermissionSeeder.php for the mapping.
- Project is created (by Project Manager or Super Admin).
- Milestones are added under the project.
- Tasks are created under milestones.
- Tasks are assigned to users (Team Lead or User).
- Task status updates (pending → in_progress → completed) drive milestone and project progress (percentage based on completed tasks).
- Landing (guest) – System overview, Login, Register.
- Super Admin – Stats (projects, milestones, tasks, users), role management, create/edit/delete projects and users, view all.
- Project Manager – My projects, create project, milestones, assign members, project progress.
- Manager / HR – Assigned projects and milestones, create/assign tasks, view/update status and deadlines.
- Team Lead – Team tasks, assign tasks, update progress, mark completed.
- User – My tasks, task details, update status, view deadlines.
- Controllers – Thin; delegate to services and authorize with policies.
- Services –
ProjectService,MilestoneService,TaskServicefor create/update/delete and assignments. - Form Requests – Validation and authorization for store/update (e.g.
StoreProjectRequest,UpdateTaskRequest,UpdateTaskStatusRequest). - Policies –
ProjectPolicy,MilestonePolicy,TaskPolicyfor view/create/update/delete and status updates. - Models – Eloquent relationships: Project → milestones, Milestone → tasks, Task → assignee/creator, User → roles/permissions and assigned projects/tasks.
- Database –
users,projects,milestones,tasks,project_user(pivot), plus Spatie tables (roles,permissions,model_has_roles, etc.).
app/
Http/Controllers/ # Dashboard, Project, Milestone, Task, Admin\User
Http/Requests/ # Store/Update form requests
Models/ # User, Project, Milestone, Task
Policies/ # Project, Milestone, Task
Services/ # Project, Milestone, Task
database/
migrations/ # users, permission tables, projects, milestones, tasks, project_user
seeders/ # RoleAndPermissionSeeder, DemoDataSeeder
resources/views/
dashboard/ # admin, project-manager, manager, team-lead, user
projects/ # index, create, show, edit, members
milestones/ # create, edit
tasks/ # create, show, edit
admin/users/ # index, edit
MIT.