# Mentorship Platform - User Stories
## Types of users:
* Individuals who are willing to volunteer to help and guide (**Mentors**)
* Individuals who need mentorship (**Mentees**)
* Indiviuals who will manage communities (**Community Managers**)
* System Adminstrators (**Admins**)
## User Stories
### Authentication
* **As a** user, **I want to** Sign up to the platform using my email
* **As a** user, **I want to** Login using credintials (email and password)
* **As a** user, **I want to** Reset my password using my email
* **As a** user, **I want to** Logout from the website
### Profile & Personal Information
* **As a** user, **I want to** be able to view my profile
* **As a** user, **I want to** be able to add and edit my personal information
* **As a** user, **I want to** be able to add a personal image **so that** it adds a level of trust and authenticity to my account
* **As a** user, **I want to** have the ability to change my password
* **As a** user, **I want to** be able to choose my timezone , **so that** all scheduled sessions and availability reflect my local time accurately
### User Experience
* **As a** user, **I want to** have the choice whether to use a dark or light theme **so that** I can personalize my experience
* **As a** user, **I want** to be able to report other users for violating the platform or community guidelines, **so that** it helps creating a more safe and respectful space for everyone
### Integration
* **As a** user, **I want to** connect my Google Calendar with my account, **so that** it helps me in different scheduling and booking processes (service availability for mentors, requesting sessions for mentees)
## Mentor Stories
* **As a** Mentor, **I want to** be able to search for other users and communities **so that** I can connect with people
* **As a** Mentor, **I want to** add the list of skills I possess **so that** that mentees seeking guidance in those skills can find me more easily
* **As a** Mentor, **I want to** create a service that I offer and set the session time for it
* **As a** Mentor, **I want to** add an availability time for a service (a weekly routine)
* **As a** Mentor, **I want to** to be able to set date-specific availability exceptions for a service (either making it available or unavailable)
* **As a** Mentor, **I want to** be able to delete a service that I created after resolving all of its session requests
* **As a** Mentor, **I want to** be able to modify my availability for a service that I created **so that** I can keep it updated with my free time
* **As a** Mentor, **I want to** be able to view sessions that have been requested from me for a specific service, displayed in lists categorized by status
* **As a** Mentor, **I want to** be able to view each session request details, **so that** I can decide whether to accept or reject it
* **As a** Mentor, **I want to** have the ability to view the mentee's profile that requested the session, **so that** I can get to know them better
* **As a** Mentor, **I want to** have the ability to reject requests that don't suit me and to have the option to specify a reason for the rejection, **so that** I can be clear and transparent with mentees
* **As a** Mentor, **I want** the platform to send an invitation to both my calendar and the mentee's for the sessions that I accept, **so that** we won't miss them
* **As a** Mentor, I **want to** be able to cancel an upcoming session I've accepted, provided there's enough time left before it starts, **so that** I can deal with urgent and unexpected situations
* **As a** Mentor, I **want to** be able to view other users profiles
* **As a** Mentor, I **want to** be able to request to join a community
* **As a** Mentor, I **want to** be able to withdraw a request that I submitted to join a community
* **As a** Mentor, I **want to** have a page to manage my community memberships, and also to view and manage my pending community join requests
* **As a** Mentor, I **want to** be able to leave communities
## Mentee Stories
* **As a** Mentee, **I want to** be able to search for mentors and communities **so that** I can connect with people who can guide me in my areas of interest
* **As a** Mentee, **I want to** have the ability to view a mentor's profile, **so that** I can get to know them better
* **As a** Mentee, **I want to** send a session request to a mentor that I opened their profile by choosing a service that they offer, choosing an available time that suits me, and providing an agenda for the session, **so that** the mentor can come prepared to the session
* **As a** Mentee, **I want to** have a page that lists the session requests that I've sent, **so that** I can check their statuses and view them
* **As a** Mentee, **I want to** be able to withdraw a session request that I've sent if it's still in a 'pending' state
* **As a** Mentee, **I want to** be able to edit a session request details if it's still in a 'pending' state
* **As a** Mentee, I **want to** be able to search communities by name, **so that** I can find ones that are relative to my field of interest and the kind of support I need
* **As a** Mentee, I **want to** be able to request to join a community
* **As a** Mentee, I **want to** be able to withdraw a request that I submitted to join a community
* **As a** Mentee, I **want to** have a page to manage my community memberships, and also to view and manage my pending community join requests
* **As a** Mentee, I **want to** be able to leave communities
## Community Manager Stories
* **As a** Community Manager, **I want to** be able to create a community
* **As a** Community Manager, **I want to** have a page that shows people that requested to join the community, **so that** I can either accept or reject them
* **As a** Community Manager, **I want to** have the ability to edit the community details (name, image, description, etc.)
* **As a** Community Manager, **I want to** be able to view the community members
* **As a** Community Manager, **I want to** be able to remove community members who violate the community guidelines, **so that** I can maintain a safe and welcoming space for others
## Admin Stories
* **As an** Admin, **I want to** view and manage user reports, **so that** I can ban the reported user or dismiss invalid reports
* **As an** Admin, **I want to** view banned users, **so that** I can I can lift bans for users who have successfully appealed
* **As an** Admin, **I want to** view a detailed profile page for any specific user, including their basic information, related session requests, services, and community involvement (when applicable), **so that** I can directly manage that user by taking actions such as banning them or lifting an existing ban.
## Future Enhancements and Features
### User experience
* **As a** user **I want to** be able to set up 2 factor-authentication using email **so that** it serves as an extra layer of security to protect my account
* **As a** user, **I want to** be able to upload my CV/Resume to my profile, **so that** my information gets auto-filled and I don't have to fill them manually
### Mentee Stories
* **As a** Mentee, **I want to** be able to switch my account to a Mentor account or can be a mentor, **so that** I can start offering services and help others once I feel ready.
* **As a** Mentee, I **want to** recieve notifications when different events happen (a session request status gets accepted, rejected, or canceled, etc.)
### Mentor Stories
* **As a** Mentor, **I want to** be able host spontaneous drop-in sessions whenever I'm available, **so that** more than one mentee can attend.
* **As a** Mentor, I **want to** recieve notifications when different events happen (getting a session request, a session getting canceled by a mentee, etc.)
* **As a** Mentor, **I want** the platform to show me if a time slot conflicts with any events on my Google Calendar, **so that** I don't have to check for it manually
* **As a** Mentor, **I want to** be able to share materials in the community thread, **so that** other members can easily access and benefit from them.
### Community Manger Stories
* **As a** Community Manager, **I want to** send announcements or updates through a thread for all community members
* **As a** Community Manager, **I want to** have a dashboard that shows key information and statistics about the community (number of members, average session times, etc.), **so that** I can better understand and support the community
### Admin Stories
* **As an** Admin, **I want to** have a dashboard that shows general statistics about the platform, **so that** I can gain informative insights to support decision-making