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.

Register (Sign Up)

A user can register (sign up) using these fields:

  • username
  • password
  • name (first name, last name)
  • email
  • 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.

Login

The user can log in using his/her credentials:

  • username
  • password

NOTEs:

  • The authentication will be implemented using JWT (JSON Web Token).

Editing Personal Information

The user can edit his/her personal information:

  • password
  • name (first name, last name)
  • birthdate
  • address (country, city, town, street)
  • gender (MALE, FEMALE)

Workspaces

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.

Groups of Tasks

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.

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.

Sub-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.

Hierarchy_Figure

Other Requirements

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 a LoggingAspect 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 and controllers.
⚠️ **GitHub.com Fallback** ⚠️