This is a simple task management system that allows users to create, read, update, and delete tasks. The system is built using Laravel Filament.
- ✅ Tech Stack – PHP, Laravel, Filament, SQLite/MySQL/PostgreSQL
- ✅ Filament Admin Panel – Modern UI for managing tasks
- ✅ REST API – Task CRUD operations
- ✅ API Documentation – Auto-generated with Scribe
- ✅ Task CRUD with Soft Delete – Full task lifecycle support
- ✅ Task Status & Priority Enums – Clean, maintainable enums
- ✅ TaskObserver – Automatically assigns
assign_by_id
- ✅ Reusable TaskForm – Efficient form management
- ✅ Form Validations – Enforces business rules
- ✅ Task Assignment – Assign tasks to users
- ✅ Code Styling Check – Used Laravel Pint for automated code styling
- ✅ Static Code Analysis – Used Larastan (PHPStan for Laravel)
- ✅ Unit & Feature Tests – Written using Pest, ensuring application reliability
- ✅ Security Considerations – CSRF protection, validation, authentication
- ✅ Performance Optimizations – Query optimization, caching, eager loading
- ✅ CI/CD Integration – Automated testing & deployment
- Task CRUD with SoftDelete
- Assign a task to a user
- Reuseable TaskForm
- Form Validation
- Ensure due time is not in the past
- Ensure start time is before due time
- Ensure end time is after start time
- Ensure user exists in the database
- Enum for TaskStatus, TaskPriority.
- HasDisplayAttributes Trait for Enum to work with the label and color of the Task Status, Task Priority
- Manage Label and Colors for Task Status, Task Priority mapping inside the Enum
- Create TaskObserver to assign authenticated user id to assign_by_id field when creating a task
Clone the repo locally:
git clone https://github.com/rezwanul7/task-management.git task-management && cd task-management
Install PHP dependencies:
composer install
Setup configuration:
cp .env.example .env
Generate application key:
php artisan key:generate
Create an SQLite database. You can also use another database (MySQL, Postgres), simply update your configuration accordingly.
touch database/database.sqlite
Run database migrations:
php artisan migrate
Run database seeder:
php artisan db:seed
Create a symlink to the storage:
php artisan storage:link
Run the dev server (the output will give the address):
php artisan serve
You're ready to go! Visit the url in your browser, and login with:
- Username: [email protected]
- Password: password
Generate Api Documentation:
php artisan scribe:generate
Preview the documentation by visiting the url displayed in the terminal.
Check for linting issues:
./vendor/bin/pint --test
Automatically Fix linting issues :
./vendor/bin/pint -v
Run static code analysis:
./vendor/bin/phpstan analyse
Run the tests:
php artisan test --env=testing