Requirements - najat-mansour/task-go GitHub Wiki
TaskGo is a task management Back-End REST API developed in Spring-Boot framework that allows you to manage your tasks.
A user can register (sign up) using these fields:
- username
- password
- name (first name, last name)
- birthdate
- address (country, city, town, street)
- gender
- image
NOTEs:
- The system generates a UUID for each user.
- Both username and email must be unique.
- The system records the creation date for each user account.
- The password must be at least 8-characters and contains at least one capital-letter, one small-letter, one digit and one special character.
- The password must be encrypted using BCrypt.
- The user can handle forget password case by receiving a new password via his/her email.
- An email verification is required by entering 4-digit code sent via the user's email.
- The user images will be stored either in a folder in the server side or on a cloud service such as AWS S3.
The user can log in using his/her credentials:
- username
- password
NOTEs:
- The authentication will be implemented using JWT (JSON Web Token).
The user can edit his/her personal information:
- password
- name (first name, last name)
- birthdate
- address (country, city, town, street)
- gender (MALE, FEMALE)
The user can add a new workspace using these fields:
- name
- description
NOTEs:
- The system generates a UUID for each workspace.
- The user can edit, delete and filter based on any field his/her workspaces.
- The user can add other users to a workspace.
The user can add a new group of tasks using these fields:
- name
- color: just and indication of the group
- description
NOTEs:
- The system generates a UUID for each group of tasks.
- The user can edit, delete and filter based on any field his/her groups of tasks.
The user can add a new task using these fields:
- name
- description
- status (NOT STARTED, IN PROGRESS, PENDING, FINISHED)
- priority (HIGH, MEDIUM, LOW)
- starting timestamp
- ending timestamp
- group
- owner: the user who is selected to do the task
NOTEs:
- The system generates a UUID for each task.
- The user can add any task to the favorite ones.
- The user can edit, delete and filter based on any field his/her tasks.
The user can add sub-tasks for any task using these fields:
- name
- description
- status (NOT STARTED, IN PROGRESS, PENDING, FINISHED)
- priority (HIGH, MEDIUM, LOW)
- starting timestamp
- ending timestamp
- task
NOTEs:
- The system generates a UUID for each sub-task.
- The user can edit, delete and filter based on any field his/her sub-tasks.
The system handles also the following requirements:
- The user will be notified via his/her email when:
- Another user added his/her to a workspace.
- Another user assign a task to his/her.
- The users can rate the application out of 5.
- The user can get a statistics about his/her usage such as:
- Number of workspaces he/she created as well as joined to.
- Number of tasks he/she created or assigned to.
- Adding logging messages using
Log4j2
in aLoggingAspect
in both the terminal and a log file. - Enable all the actuators.
- Add OpenAPI / Swagger API Documentation.
- Add Caching using
Redis
. - Add UnitTesting for all
utilities
,reporsitories
,services
andcontrollers
.