Background:
Individuals require an effective solution
to efficiently organize their personal tasks spanning various related and/or unrelated responsibilities,
aiming to boost productivity.
Individuals seeking personal task organization.
As a user, I want to be able to sign up for an account, So that I can access the application and manage my tasks.
- Acceptance Criteria:
As a new user, I can sign up for a new account.
On the sign-up form, I can provide my first name, last name, email, password, confirm password, phone number.
Upon successful sign-up, I should receive a confirmation email with a token to validate my account after which I can login using my email and password.
As a registered user, I can log in to my account.
On log-in, I will use my email and password.
Upon successful login I should be able to do the following;
i. Create tasks with specific details such as title, description, deadline, priority level (HIGH, MEDIUM, LOW, NONE) etc.
ii. View details of a specific task by its title or ID
iii. View all tasks associated with a specific user
iv. Edit a task successfully
v. Delete a task successfully
vi. Filter a task by their status e.g. (PENDING, IN_PROGRESS, COMPLETED)
vii. View a list of completed tasks separately
viii. I can log out of my account.
-
Spring Boot
-
Spring security / JWT
-
Postman
-
MySQL / PostgreSQL
-
GIT
-
Description: Set up the initial project structure for the Spring Boot application.
-
Tasks:
i. Initialize a new Spring Boot project using Spring Initializr.
ii. Set up the project in a version control system (Git) and create a repository.
iii. Configure the project to use MySQL/PostgreSQL.
-
Acceptance Criteria:
i. The project structure is created.
ii. The project is successfully pushed to the Git repository.
iii. Database connection is configured and tested.
-
Ticket: User Registration Endpoint
-
Description: Implement the user registration functionality.
-
Tasks:
i. Create a REST endpoint for user registration.
ii. Define a User entity with fields: first name, last name, email, password, confirm password, and phone number.
iii. Implement validation for the input fields.
iv. Send a confirmation email with a token for account validation.
-
Acceptance Criteria:
i. Users can register by providing the necessary information.
ii. Validation errors are returned for incorrect inputs.
iii. A confirmation email is sent upon successful registration.
-
Ticket: Email Confirmation Endpoint
-
Description: Implement email confirmation functionality.
-
Tasks:
i. Create a REST endpoint to handle email confirmation.
ii. Validate the token and activate the user account.
-
Acceptance Criteria:
i. Users can confirm their email using the token sent.
ii. Upon confirmation, users can log in to their accounts.
-
Ticket: User Login Endpoint
-
Description: Implement the user login functionality.
-
Tasks:
i. Create a REST endpoint for user login.
ii. Implement authentication using Spring Security and JWT.
iii. Return a JWT token upon successful authentication.
-
Acceptance Criteria:
i. Users can log in using their email and password.
ii. A JWT token is returned for authenticated users.
-
Ticket: Task Creation Endpoint
-
Description: Implement functionality to create tasks.
-
Tasks:
i. Create a REST endpoint for creating tasks.
ii. Define a Task entity with fields: title, description, deadline, priority level.
iii. Associate tasks with users.
-
Acceptance Criteria:
i. Users can create tasks with the specified details.
ii. Tasks are stored in the database and associated with the correct user.
-
Ticket: View Task Details Endpoint
-
Description: Implement functionality to view details of a specific task.
-
Tasks:
i. Create a REST endpoint to retrieve task details by task ID.
ii. Ensure only the task owner can view the task details.
-
Acceptance Criteria:
i. Users can retrieve task details by providing the task ID.
ii. Task details are correctly returned.
-
Ticket: View All Tasks Endpoint
-
Description: Implement functionality to view all tasks for a specific user.
-
Tasks:
i. Create a REST endpoint to retrieve all tasks associated with a user.
ii. Ensure only the task owner can view the tasks.
-
Acceptance Criteria:
i. Users can view all their tasks.
ii. All tasks associated with the user are returned.
-
Ticket: Edit Task Endpoint
-
Description: Implement functionality to edit a task.
-
Tasks:
i. Create a REST endpoint to edit task details.
ii. Ensure only the task owner can edit the task.
-
Acceptance Criteria:
i. Users can edit their tasks.
ii. Updated task details are saved in the database.
-
Ticket: Delete Task Endpoint
-
Description: Implement functionality to delete a task.
-
Tasks:
i. Create a REST endpoint to delete a task.
ii. Ensure only the task owner can delete the task.
-
Acceptance Criteria:
i. Users can delete their tasks.
ii. The task is removed from the database.
-
Ticket: Filter Tasks by Status Endpoint
-
Description: Implement functionality to filter tasks by their status.
-
Tasks:
i. Create a REST endpoint to filter tasks based on status (PENDING, IN_PROGRESS, COMPLETED).
-
Acceptance Criteria:
i. Users can filter tasks by status.
ii. Filtered tasks are correctly returned.
-
Ticket: View Completed Tasks Endpoint
-
Description: Implement functionality to view a list of completed tasks separately.
-
Tasks:
i. Create a REST endpoint to retrieve completed tasks for a user.
ii. Acceptance Criteria:
iii. Users can view a list of their completed tasks.
iv. Only completed tasks are returned.
-
Ticket: User Logout
-
Description: Implement user logout functionality.
-
Tasks:
i. Invalidate the JWT token upon logout.
-
Acceptance Criteria:
i. Users can log out of their accounts.
ii. The JWT token is invalidated.
-
Ticket: API Documentation
-
Description: Document all REST APIs using Swagger or a similar tool.
-
Tasks:
i. Integrate Swagger into the project.
ii. Document all endpoints with appropriate details.
-
Acceptance Criteria:
i. All APIs are documented.
ii. The documentation is accessible via a web browser.
-
Ticket: Unit and Integration Testing
-
Description: Write unit and integration tests for the application.
-
Tasks:
i. Write unit tests for all service methods.
ii. Write integration tests for all endpoints.
-
Acceptance Criteria:
i. Tests cover all functionalities.
ii. Tests pass successfully.
-
Ticket: Application Deployment
-
Description: Deploy the application to a cloud platform.
-
Tasks:
i. Set up a cloud environment (e.g., AWS, Heroku).
ii. Deploy the application.
-
Acceptance Criteria:
i. The application is deployed and accessible online.
ii. All functionalities are working in the deployed environment.
Consumed Front-end Api for users to sign-up, confirm their mail and login to their dashboard from the browser.