The Task Management System
is a web-based application developed for Business Automation Ltd
.
Please refer to the system requirements details given below, which I have attempted to follow:
There are two types of users: Managers and Teammates. Managers can sign up using their Email, Name, Employee ID, and Password. They can also create Teammates who can then log in. Managers have access to all features, whereas Teammates have some limitations. A member can only access their assigned data. However, they cannot view tasks assigned to other members.
Managers can access: Team management, Project management, and Task management.
Teammates can access: They can only view their task list, filter it, and update the status.
Managers can create Projects, each with a unique code and name. They can also create Tasks, which include task name, project code, description, and status.
Managers can assign tasks to teammates, and teammates, upon logging in, can view their assigned tasks and update their status.
For the search functionality, there is a datatable named Yajra
where any word can be easily searched.
Additionally, there is a filter option where Managers and Teammates can filter tasks based on Project and status. Managers can also filter projects according to project name.
- PHP - 8.1
- Laravel- 10
- MySQL - 8
- Bootstrap - 4
- jQuery, Ajax
composer update
- Just copy paste your existing .env.example to .env
- You have to setup database related credentials properly in .env
php artisan key:generate
Just run this command
php artisan migrate
php artisan db:seed
php artisan serve
If need to run test, then please run the following the command after DB Seed
./vendor/bin/pest
or run individually
./vendor/bin/pest tests/Feature/LoginTest.php
./vendor/bin/pest tests/Feature/TeamMemberTest.php
./vendor/bin/pest tests/Feature/ProjectTest.php
./vendor/bin/pest tests/Feature/TaskTest.php
You can check my Feature test result : Click Here
url: your_domain/login
Email: manager@gmail.com
Password: manager123
url: your_domain/member-login
Email: member123@gmail.com
Password: member123
or,
url: your_domain/member-login
Email: member456@gmail.com
Password: member456
or goto direct your_domain. There are two options.
- When rolling back, first drop the foreign keys, and then other constraints.
- For code clean and formatting, I used
Laravel Pint
. - Used
Yajra
datatable for server-side rendering, data filtering, sorting and pagination. - jQuery Ajax was used for performing actions without reloading the page.
Sweetalert
was used to display success or error messages.- A member can only view their own tasks.
- I tried to write some test code using the
PEST Testing Framework
. Currently, I've only written some feature test codes. - A member can access only their assigned data. However, they cannot view tasks assigned to other members. Managers have access to all tasks.
- I separated the data layer and business logic from the controller to facilitate method reusability and parallel testing.
- Implement error handling using
try..catch
. When multiple data operations are performed, I followed the transaction mechanism. If successful, the transaction is committed; otherwise, it is rolled back (Used transaction in "Task" operations).
- Laravel Pint
- Default Auth
- Artisan View
- Yajra Datatable
- PEST Testing Framework