We need a task management app with the following requirements:
✅ The app has two types of users, admin user and normal user.
✅ Normal users can register and log in.
✅ Admin users can log in to the admin panel and new admins are only allowed to create from the admin panel.
✅ Each normal user can view, create, edit, and delete their tasks in the user panel.
✅ Each task contains a title, a description, a status, and multiple tags.
✅ Tasks can either be created by the normal user from the user panel or by admins from the admin panel and assigned to a normal user.
✅ Normal users can change the title, text, status, and tags of tasks created by them but are not allowed to change the title, text, and tags of tasks created by admins. Normal users only can change the status of tasks created by admins.
✅ Normal users can delete tasks created by them but are not allowed to delete tasks created by admins.
✅ Each task has a status with the following values: Open, Pending, In-progress, In-review, Accepted, and Rejected.
✅ Normal users can change each task status to Open, Pending, In-progress, or In-review but only admins are allowed to set task status as Accepted or Rejected from the admin panel.
✅ Admins should be able to create tags from the admin panel but normal users only can select tags from the tags list defined by admins.
✅ Admins must be able to filter tasks by assigned user, status, and tag in the admin panel. Normal users must be able to filter their tasks by status or tags in the user panel.
✅ When admins create a new task for a normal user, the user should receive an email to inform them they have a new task.
When a user changes a task status to In-review that was created by an admin, the admin that created the task should receive an email to notify them that the user has done the task and is ready for review.
For the user reused filament with livewire component.
For roles and permissions used filament shield and on top restricted access to filament admin panel in user model. (Could be done without shield, just with restrictions by role)
Seeders for admin user and statuses