# Wishlist

Type |
Dependencies |
Order | 16
Owner | Amani Rose
Section | Wishlist
Status | Review requested

In the upcoming development iterations, we have outlined several key features and improvements that the developers and the Project Owner consider to be of high priority. These requirements include:

1. Code Refactoring and Internal System Improvement: Developers should focus on enhancing the internal system by organizing the code for improved functionality. This involves optimizing the codebase for better maintainability and scalability.

2. Login Using Microsoft Credentials: Implement a secure authentication system that allows users to log in using their Microsoft credentials. This feature should integrate with Microsoft's identity services for seamless authentication.

3. Two-Factor Authentication (2FA): Implement 2FA as an additional security layer to protect user accounts. Users should have the option to enable 2FA for enhanced account security.

4. Messaging Functionality: Develop a messaging system that enables users to communicate with each other within the application. Messages should support text as well as attachments, such as images and documents.

5. User Connections: Implement features to facilitate user connections, including the ability to send and accept connection requests. Users should be able to check their connection status and view a list of incoming connection requests on their profiles.

6. Secure Logouts: Provide users with a secure option to log out of their accounts. Ensure that the logout process terminates user sessions and clears sensitive data.

7. Badges and Trophies: Enable mentees to earn badges and trophies as they progress in learning pathways. These achievements should be visible on their profiles and dashboards. Additionally, allow mentees to share their badges and trophies on social media platforms.

8. Learning Roadmaps: Enhance the learning roadmap functionality by allowing super mentors and mentors to create, save, and assign multiple learning roadmaps to multiple mentees. These roadmaps should outline skills and acceptance criteria. Users should also be able to exchange external resources like links and documents within the roadmaps.

9. Discovery and User Profiles: Enable users to discover and view other users' profiles. Users should have the option to set their profiles as public or private. Additionally, provide the option for users to initiate connection requests with each other.

10. User Testing: Several features and functionalities, such as user-initiated connection requests and daily reminders for mentees, may require user testing to assess their value and importance accurately. The project owner anticipates that user testing will help refine these features based on user feedback.

11. Online Hosting: Consider transitioning from local hosting to online hosting to make the application accessible to a wider audience and improve scalability.

These outlined requirements reflect the conjoined expectations of the development team and teh project owner for the next development iterations, emphasizing security, user engagement, and scalability. The next development team should prioritize these tasks to meet the objectives effectively.

    Name,Features,MoSCoW,Size,Status
    Define Clear Version Control and Branching Strategies,Development Process,Should,L,Not started
    Design Consistent Naming Conventions for Codebase,Software Design,Should,L,Not started
    Enforce Consistent Naming Conventions for Codebase,Software Design,Should,L,Not started
    Enhance Logout Mechanism for Secure User Sessions,Account Management,Must,M,Not started
    Ammend pages without design to follow design pattern,UI/UX,Should,L,Not started
    Add Ability to Amend Mentee Progress from Mentor/Supermentor Dashboard - backend,Account Management,Should,M,Not started
    Add Ability to Amend Mentee Progress from Mentor/Supermentor Dashboard - frontend,Account Management,Should,M,Not started
    Add ability to ammend user name on profile - backend,Account Management,Should,S,Not started
    Add ability to ammend user name on profile - frontend,Feature,Should,S,Not started
    Implement a way for mentor to be aware of mentees with no currently assigned pathways,Feature,Should,S,Not started
    Identify the additional abilities required by admins,Account Management,Should,M,Not started
    Identify the additional abilities required by mentors,Account Management,Should,M,Not started
    Identify the additional abilities required by mentees,Account Management,Should,M,Not started
    Design what happens after a pathway has been completed,Learning Pathway,Should,L,Not started
    Create architecture design for user connection and Badge Assignment Capabilities,Research,Should,L,Not started

Certainly, here are example bullet points outlining how to implement some of the improvements and best practices based on the identified shortcomings:

Development Process Improvements:

1. Clear Version Control and Branching Strategies:
   - Establish a version control strategy using a version control system like Git.
   - Adopt a branching model (e.g., Git Flow) that defines branches for features, bug fixes, and releases.
   - Encourage developers to create feature branches for each user story or feature, promoting isolation of changes.
   - Implement code reviews to ensure that each feature is developed and tested independently before merging into the main branch.

2. Automated Testing and Continuous Integration:
   - Set up a continuous integration (CI) pipeline using CI/CD tools like Jenkins, Travis CI, or GitHub Actions.
   - Integrate automated testing frameworks (e.g., JUnit for Java, pytest for Python) into the CI pipeline.
   - Define a suite of unit tests, integration tests, and end-to-end tests to cover different aspects of the application.
   - Configure the CI pipeline to run tests automatically on code changes and provide immediate feedback to developers.

Architecture/Design Enhancements:

1. Well-Defined System Architecture:
   - Document the system architecture using architectural diagrams (e.g., UML diagrams) and documentation tools.
   - Clearly define the roles and responsibilities of each component in the architecture.
   - Use design patterns and principles (e.g., SOLID) to ensure a clean and maintainable architecture.
   - Regularly update and review the architecture documentation as the system evolves.

2. Consistent Naming Conventions:
   - Establish naming conventions guidelines for the codebase and document them in a style guide.
   - Ensure that file names, method names, variable names, and routing follow these conventions.
   - Enforce naming conventions through code reviews and automated linting tools.
   - Educate team members on the importance of adhering to naming conventions.

3. Addressing Creative Workarounds:
   - Conduct a code review to identify areas where creative workarounds were implemented.
   - Refactor and rewrite code to replace workarounds with proper, systematic solutions.
   - Document the refactoring process to ensure that future developers understand the changes made.
   - Train developers to recognize and address technical challenges systematically.

Application/Usage Security Enhancements:

1. Secure Logout and Routing Mechanisms:
   - Implement a secure logout process that invalidates user sessions and prevents access to restricted content.
   - Use authentication tokens or cookies with expiration times to manage user sessions.
   - Perform security testing (e.g., penetration testing) to identify and address vulnerabilities.
   - Regularly update security libraries and frameworks to stay protected against known security threats.

2. Data Encryption and Security Best Practices:
   - Apply encryption mechanisms (e.g., HTTPS) to protect data during transmission.
   - Encrypt sensitive data at rest using encryption algorithms and proper key management.
   - Follow OWASP's top security practices to prevent common web application vulnerabilities.
   - Train developers on security best practices and conduct security code reviews.

The wishlist encompasses a comprehensive set of user stories grouped into distinct categories, each addressing specific shortcomings and improvements for the application. These categories include

1. Software Clean-Up: This section focuses on addressing issues related to version control, branching strategies, and codebase consistency, aiming to streamline development processes and maintain code quality.
   - Define Clear Version Control and Branching Strategies
   - Design Consistent Naming Conventions for Codebase
   - Enforce Consistent Naming Conventions for Codebase

2. Development Processes: It includes user stories to document procedures for uploading content to GitHub, enhancing development practices, and ensuring efficient workflows.
   - Document the procedures for uploading content to GitHub

3. Account Management: This category covers various aspects of user account management, including registration, authentication, security enhancements, and administration capabilities.
   - Allow supermentor to register another user after completing one registration
   - Enable administrators to designate mentors and mentees as coaches for skill sharing
   - Allow administrators to delete user accounts
   - Provide users with a secure option to log out of their account
   - Enable users to set up 2FA on their account
   - Enable all users to sign in using their Microsoft Credentials
   - Enhance Logout Mechanism for Secure User Sessions
   - Enable super mentors and mentors to assign coaches to mentees for skill development within their pathway
   - Identify the additional abilities required by admins
   - Identify the additional abilities required by mentors
   - Identify the additional abilities required by mentees

4. Learning Roadmaps: These stories aim to empower mentors and supermentors to create, customize, and assign learning roadmaps efficiently, providing structured guidance to mentees.
   - Allow supermentors and mentors to enhance learning roadmaps with external resources (links, documents, videos)
   - Enable super mentors and mentors to create and save learning roadmaps for public or private use, detailing skills and acceptance criteria
   - Enable super mentors and mentors to assign multiple learning roadmaps to multiple mentees
   - Enable super mentors and mentors to assign a chosen learning roadmap to multiple mentees
   - Enable super mentors and mentors to assign multiple learning roadmaps to a single mentee
   - Define what happens after a pathway has been completed
   - Add Ability to Amend Mentee Progress from Mentor/Supermentor Dashboard - backend
   - Add Ability to Amend Mentee Progress from Mentor/Supermentor Dashboard - frontend

5. Design UI/UX: This section highlights the need for aligning pages with the established design patterns to ensure a consistent and user-friendly interface.
   - Ammend pages without design to follow design pattern

6. Research and Architecture: It emphasizes the importance of defining architecture and design considerations for user connection and badge assignment capabilities.
   - Create architecture design for user connection and Badge Assignment Capabilities

7. Connections and Networking: These user stories focus on improving user interactions, enabling connections, and enhancing networking features within the application.
   - Enable users to view incoming connection requests
   - Facilitate users to initiate connections with others
   - Enable users to initiate connection requests with each other
   - Enable users to check their connection status on their profile's connection list
   - Allow users to discover and view the existence of other users
   - Enable users to check connection status by viewing other users' profiles
   - Empower users to accept or reject connection requests

8. Badges and Recognition: This category aims to implement a robust system for recognizing and rewarding users through badges and trophies, enhancing the user experience.
   - Allow mentees to earn badges and trophies as they progress in learning pathways
   - Facilitate real-time notifications for mentees when they earn badges
   - Provide option for mentees' badges and trophies to be publicly or privately visible on their profile and dashboard
   - Display mentees' badges and trophies on their account profile and dashboard
   - Empower mentees to share their badges and trophies on social media platforms like LinkedIn, Twitter, etc.