# Project Plan

Type |
Dependencies |
Order | 11
Owner | Rose
Section | Project Plan
Status | In progress

# Learnr Project Plan

## Project Overview

The Learnr project is a comprehensive application designed to facilitate user interactions, track skills, and provide seamless communication between the frontend and backend services. The project adopts an Agile development approach and is divided into six development sprints. This project plan outlines the planning, hardware and software resources, and the completed user stories for each sprint.

## Hardware and Software Resources

Hardware:

- None: The project does not require specific hardware.

Software:

- HTML, CSS, Javascript

- Bootstrap

- NPM

- Node.js (v18.17.1)

- Express.js

- Git

- GitHub and GitHub Desktop

- MySQL

- Visual Studio Code

- Figma

- StarUML

- Windows 11 PC OR Mac OS 13

# Sprint Planning

## Sprint 1

General Overview:

- Sprint 1 primarily focused on project initiation, research, and setting up essential development tools.

- Key tasks included defining the MVP, researching required technologies, and creating user stories.

- The frontend work in this sprint allowed super mentors to create user accounts, and initial UI/UX designs for dashboards were developed.

Specific User Stories:

1. Create user stories for the MVP: User stories were drafted to define the MVP's scope.

2. Categorize PO requests and decide on the project MVP: Project requests were categorized, and the MVP scope was determined.

3. Research technologies needed for MVP (JavaScript, HTML, CSS, Express.js, Node.js, npm): A technology stack for the MVP was researched and finalized.

4. Discuss project needs with PO: Project needs and requirements were discussed with the Product Owner (PO).

5. Set up GitHub Desktop, GitHub repository, and VSCode: Development tools were configured, including GitHub repositories and VSCode for coding.

6. Create frontend that enables super mentors to create user accounts (super mentor, mentor, mentee): The frontend was developed to allow super mentors to create user accounts.

7. Design mentee dashboard UI that shows progress within a single pathway: UI design for displaying pathway progress on the mentee dashboard was created.

8. Enable all users to sign in using a username and password: Functionality was implemented for all users to sign in with usernames and passwords.

9. Create backend that enables super mentor to create user accounts (super mentor, mentor, mentee): Backend logic was implemented to allow super mentors to create user accounts.

10. Users with accounts created by super mentors can sign in with provided credentials: Users with accounts created by super mentors could successfully sign in.

## Sprint 2

General Overview:

- Sprint 2 continued frontend development with a focus on UI/UX design for various user roles.

- User profiles, dashboard designs, and improved registration capabilities were developed.

Specific User Stories:
11.
Design UI side menu bar components for mentors, supermentors, and mentees: UI components for side menus tailored to mentors, super mentors, and mentees were designed.
12.
Design a user profile UI: UI design for user profiles was created.
13.
Design mentor/supermentor dashboard UI that shows progress of all assigned mentees: UI design for mentor/supermentor dashboards displaying progress of assigned mentees was developed.
14.
Design mentee dashboard UI that shows all assigned pathways: UI design for mentee dashboards showing all assigned pathways was created.
15.
Allow supermentor to register another user after completing one registration: Capability was added for super mentors to register multiple users.
16.
Design a user-friendly sign-in interface using email and password: UI design for a user-friendly email and password-based sign-in interface was created.

## Sprint 3

General Overview:

- Sprint 3 involved creating essential project documentation, optimizing the codebase, and implementing password reset functionality.

Specific User Stories:
17.
Create HTTP://Readme.md file for the project: A project README file was created to document essential information.
18.
Reformat code base to follow an MVC architecture: The codebase was restructured to adhere to the Model-View-Controller (MVC) architecture.
19.
Create backend that enables super mentor to reset passwords for any account: Backend functionality was implemented to allow super mentors to reset user passwords.
20.
Create frontend that enables super mentor to reset passwords for any account: A frontend interface for super mentors to reset passwords was developed.

## Sprint 4

General Overview:

- Sprint 4 marked a significant milestone with the transition to a SQL database, improving account management, and database design.

Specific User Stories:
21.
Create backend that enables super mentor to create user accounts (super mentor, mentor, mentee), now with SQL Database: Backend functionality was adapted to work with a SQL database.
22.
Create backend that allows users to edit their account information, including bio, school, and interests, now using SQL database: Backend functionality for users to edit account information was adapted to use the SQL database.
23.
Create backend that allows users to add information to their account, including bio, school, and interests, now using SQL database: Backend functionality for users to add account information was adapted to use the SQL database.
24.
Create back end that enables super mentor to reset passwords for any account, now with SQL database: Password reset functionality was adapted to use the SQL database.
25.
Reformat database from CSV to Relational Database to efficiently manage and access data: The database was reformatted to a relational database structure for efficient data management.
26.
Populate database with fictional users: The database was populated with fictional user data.
27.
Create data for the database: Data was generated and added to the database.
28.
Create database using ER diagram: The database was designed and created based on an Entity-Relationship (ER) diagram.
29.
Set up database connection files: Files for connecting to the database were established.
30.
Create frontend that enables super mentor to input high-level info (email, position) and log in info (username and password) when creating user accounts, now using the SQL database: The frontend was adapted to input high-level and login information using the SQL database.
31.
Develop an Entity-Relationship Diagram for the database: An ER diagram was created to visualize the database structure.
32.
Create frontend that allows users to add/edit their account information, including bio, school, and interests: Frontend interfaces were developed to allow users to add or edit account information.
33.
Create database design (ER diagram): The database design was documented based on an ER diagram.
34.
Document the database schema: The database schema was documented for reference.

## Sprint 5

General Overview:

- Sprint 5 focused on enhancing user authentication by enabling email-based sign-ins and implementing proper authorization checks.

Specific User Stories:
35.
Update backend to enable all users to sign in only using email and password: Backend functionality was updated to support email-based sign-ins.
36.
Update frontend to enable all users to sign in only using email and password: Frontend interfaces were updated to facilitate email-based sign-ins.
37.
Develop a login screen that maintains functionality and user experience: A login screen was developed to ensure a smooth user experience.
38.
Implement proper authorization checks before granting access to secure pages: Authorization checks were implemented to control access to secure pages.
39.
Develop UI side menu bar components for mentors, supermentors, and mentees: UI components for side menus for mentors, super mentors, and mentees were developed.

## Sprint 6

General Overview:

- Sprint 6 marked the final sprint, focusing on the creation of learning roadmaps, continuous documentation updates, and additional frontend and backend features.

Specific User Stories:
40.
Create backend that allows super mentors and mentors to create learning roadmaps: Backend functionality was developed to enable the creation of learning roadmaps.
41.
Create backend that allows super mentors to delete learning pathways: Backend functionality was implemented to allow super mentors to delete learning pathways.
42.
Create backend that enables super mentors and mentors to assign existing learning roadmaps to a mentee: Backend functionality was developed to assign existing learning roadmaps to mentees.
43.
Continuously update the project README: The project README file was regularly updated with relevant information.
44.
Create frontend profile page that allows users to delete their own account: A frontend profile page was created to allow users to delete their accounts.
45.
Build the frontend for the mentor/supermentor dashboard UI that shows all their assigned mentees and their progress within their assigned pathways: The frontend for mentor/supermentor dashboards displaying assigned mentees and their progress was developed.
46.
Build the backend logic for the mentee single pathway tracker that gets info about progress within a single pathway: Backend logic for tracking mentee progress within single pathways was implemented.
47.
Build the backend logic for the mentor/supermentor dashboard UI that gets info about all assigned mentees and their progress within their assigned pathways: Backend logic was developed to obtain information about all assigned mentees and their progress.
48.
Build the frontend for the mentee single pathway progress dashboard UI that shows progress within a single pathway: The frontend for mentee single pathway progress dashboards was developed.
49.
Build the backend logic that gets info about all assigned pathway progress for the mentee dashboard: Backend logic was implemented to retrieve information about assigned pathway progress for the mentee dashboard.
50.
Build the frontend for the mentee dashboard UI that shows all assigned pathways: The frontend for the mentee dashboard displaying all assigned pathways was developed.
51.
Create frontend that allows super mentors and mentors to create learning roadmaps: Frontend interfaces were developed to allow super mentors and mentors to create learning roadmaps.
52.
Create backend that enables super mentors and mentors to update mentees' progress in pathways: Backend functionality was developed to allow super mentors and mentors to update mentee progress in pathways.
53.
Create backend logic that enables every user to delete their own account: Backend logic was implemented to allow all users to delete their accounts.
54.
Allow super mentors and mentors to revisit the 'assign' page for already assigned pathways: The feature was implemented to enable super mentors and mentors to revisit the 'assign' page.
55.
Create frontend that allows super mentors to delete learning pathways: Frontend interfaces were developed to allow super mentors to delete learning pathways.
56.
Create frontend that enables super mentors and mentors to assign existing learning roadmaps to a mentee: Frontend functionality was developed to enable super mentors and mentors to assign existing learning roadmaps to mentees.
57.
Update database to allow pathways to be soft deleted: Database updates were made to enable soft deletion of pathways.
58.
Create a management dashboard for mentors: A management dashboard tailored for mentors was created.
59.
Create a management dashboard for super mentors: A management dashboard tailored for super mentors was created.
60.
Develop a user profile following UI mockups: UI mockups were followed to develop user profiles.

With the completion of these 61 user stories across six sprints, the Learnr project successfully achieved its goals and delivered a functional Minimum Viable Product (MVP) that provides a robust learning management system with a user-friendly interface and advanced backend capabilities.