TASK MGT is a simple task management app.
- Technology used in the Frontend: React, Typescript, Tailwind, Socket.io, Zustand (for state management).
- Technology used in the Backend: Express, Typescript, MongoDB, Socket.io, Jest, Prisma.
- Key features
- Authentication with JWT
- Role Based Authtorization
- New users can sign up
- Users can easily navigate through projects and tasks.
- All users can create tasks
- All users can drag and drop tasks accross the board column
- All users can update a task
- Only admins can delete tasks
A fundamental principle of software engineering that emphasizes the importance of dividing a system into distinct modules or components, each with a specific and independent responsibility.
For this project, SoC was implemented using a modular architecture, where each module is responsible for a single task or functionality.
In Clean Architecture, dependencies are injected, which means the higher-level modules should depend on lower-level modules. This ensures that the business logic is not coupled with the infrastructure details.
For this project, this architecture was implemtented.
These are some assumptions made when developing this application:
- Projects already exists in the system.
- The Admin user already exists in the system.
- The system is a passwordless application.
- This application is only to be used on a desktop screen (no compatibility with mobile screens).
Here is a link to the Postman Docs.
Pre-requisite: Make sure you have docker setup on your machine.
- Clone the repository:
$ git clone https://github.com/ebukaodini/task-mgt-postgres.git- Setup environment variables:
$ cp api/.env.sample api/.env
$ cp app/.env.sample app/.env - From the root dir, build the docker image
$ npm run docker:build- Also from the root dir, spin up all services:
$ npm run docker:upOpen the application on your browser: http://localhost:3000
Switch to the api directory, and run this command:
$ npm run testThese are the default accounts seeded into the database. Use them for different the roles.
- admin@example.com -
ADMIN - john.doe@example.com -
USER - jane.doe@example.com -
USER

