3.1. Feature: User Authentication & Authorization
3.1.1. Description: Allow users to securely register, log in, manage their sessions, and access platform resources according to their roles and permissions.
- As a new user, I want to register an account using my email and password so I can access the platform.
- As a new user, I want to optionally register using my Google account for convenience.
- As a registered user, I want to log in with my email and password to access my account.
- As a registered user, I want to log in using my Google account.
- As a user, I want my session to be managed securely (e.g., via JWT).
- As a user, if I forget my password, I want to be able to request a password reset link/code via email.
- As a user, I want to be able to reset my password using the provided link/code.
- As a user, I want to receive an email to verify my email address upon registration.
- As a user, I want to be able to verify my email address using a code/link.
- As an authenticated user, I want to be able to change my current password.
- As a system, I want to ensure that only authorized users can access specific features or data based on their roles (e.g., student, instructor, admin).
3.2. Feature: User Profile Management
3.2.1. Description: Allow authenticated users to view and update their personal information and preferences.
- As an authenticated user, I want to view my profile details (name, email, photo, etc.).
- As an authenticated user, I want to update my profile information, including my name, contact details, and profile picture.
- As an instructor/consultant, I want to manage my role-specific profile details.
3.2.3. Instructor-Specific Profile Management:
- As an instructor, I want to create and manage my instructor profile, including details like overview, description, expertise, languages, professional experiences, achievements, and social media links.
- As an instructor, I want to be able to upload and manage my resume.
3.3. Feature: Course Creation & Management (Primarily for Instructors/Admins)
3.3.1. Description: Enable authorized users (instructors, admins) to create, structure, and manage e-learning courses.
- As an instructor, I want to create a new course, providing details like title, subtitle, description, category, level, language, and pricing.
- As an instructor, I want to upload a thumbnail image and an introductory video for my course.
- As an instructor, I want to define course sections, subsections, and individual course items (lectures, quizzes, assignments, downloadable files).
- As an instructor, I want to set course requirements, target audience, and what students will learn (inclusions).
- As an instructor, I want to manage the publish status of my course (draft, published, archived).
- As an instructor, I want to update existing course details and content.
- As an instructor, I want to manage co-instructors or managers for my courses.
- As an instructor, I want to view summaries and statistics for my courses.
3.4. Feature: Course Discovery & Consumption (Primarily for Students/Public)
3.4.1. Description: Enable users to find, view details of, and enroll in courses. Allow enrolled students to access and consume course content.
- As a user (guest or logged in), I want to browse and search for courses based on keywords, categories, levels, etc.
- As a user, I want to view detailed information about a course, including its content, instructor, price, reviews, and requirements, before enrolling.
- (Further stories on enrollment and consumption will be added as those modules are analyzed)
3.5. Feature: Consultation Services
3.5.1. Description: Enable qualified consultants to offer and manage one-on-one or recurring consultation services, and allow users to discover, book, and attend these consultations.
- As a consultant, I want to create and define my consultation offerings (e.g., one-off, recurring packages), including details like title, description, duration, price, category, and availability.
- As a consultant, I want to manage my availability for consultations through a calendar or timeslot system.
- As a consultant, I want to specify requirements, benefits, and frequently asked questions for my consultation services.
- As a user, I want to browse and search for available consultation services based on consultant, topic, or category.
- As a user, I want to view detailed information about a consultation service, including consultant profile, service description, pricing, and available timeslots.
- As a user, I want to book an available consultation slot.
- As a user, I want to receive notifications about my upcoming consultations.
- As a user (consultant or client), I want to be able to reschedule or cancel a booked consultation (subject to defined rules and potential fees).
- As a user, I want to be able to leave a review for a completed consultation.
3.6. Feature: Payment Processing & Wallet Management
3.6.1. Description: Enable users to make payments for services using integrated payment gateways, and provide wallet functionality for managing funds and processing withdrawals.
- As a user, I want to be able to pay for a course or consultation using a supported payment gateway (e.g., Paystack).
- As a user, I want to receive confirmation of my payment success or failure.
- As a user, I want to view my history of payments made on the platform.
- As a user (e.g., instructor, consultant), I want to have a wallet where my earnings are credited.
- As a wallet owner, I want to be able to view my wallet balance and transaction history.
- As a wallet owner, I want to be able to request a withdrawal of my available funds.
- As a system, I want to securely process payments and update relevant records (e.g., order status, enrollment) upon successful payment.
- As a system, I want to handle payment gateway webhooks to asynchronously confirm transaction statuses.
- As a user, I want to be able to apply valid coupons to reduce the payable amount.
3.x. Feature: Shopping Cart
3.x.1. Description: Allow users to temporarily collect multiple items (courses, consultations) they intend to purchase.
- As a user, I want to add a course or consultation to my shopping cart.
- As a user, I want to view the items currently in my shopping cart.
- As a user, I want to remove items from my shopping cart.
- As a user, I want my shopping cart to persist if I navigate away and come back (if logged in).
- As a user, I want to proceed from my cart to a checkout/order creation process.
3.y. Feature: Order Management
3.y.1. Description: Formalize a user's intent to purchase selected items, apply discounts, calculate totals, and track the order through to payment and fulfillment.
- As a user, I want to convert my shopping cart into an order for purchase.
- As a user, I want to be able to apply a valid coupon code to my order.
- As a user, I want to see a summary of my order, including all items, discounts, and the final total, before making a payment.
- As a system, I want to track the status of an order (e.g., PENDING, PAID, FAILED, COMPLETED).
- As a system, upon successful payment for an order, I want to trigger relevant fulfillment actions (e.g., course enrollment).
3.z. Feature: Product Marketplace & Discovery
3.z.1. Description: Provide a central marketplace for users to discover, search, and filter courses and consultations. Include recommendation features.
- As a user, I want to search for courses and consultations using keywords.
- As a user, I want to filter marketplace listings by category, price, level, etc.
- As a user, I want to see recommendations for latest products, similar products, or products in specific collections.
3.aa. Feature: Student Enrollment & Progress
3.aa.1. Description: Manage student enrollment in courses and track their progress.
- As a student, I want to easily see all the courses I am enrolled in.
- As a student, I want my progress within a course (e.g., completed sections/lectures) to be tracked.
- As an instructor, I want to view enrollment statistics for my courses.
3.ab. Feature: Reviews and Ratings
3.ab.1. Description: Allow users to submit and view reviews and ratings for courses and consultations.
- As a user who has completed/taken a course/consultation, I want to be able to leave a rating and a written review.
- As a user browsing for products, I want to see average ratings and read reviews from other users.
- As an instructor/consultant, I want to see reviews and ratings for my offerings.
3.ac. Feature: Communication Services
3.ac.1. Description: Provide tools for real-time or asynchronous communication (details depend on specific integrations like Stream/CometChat).
- As a user, I want to be able to obtain necessary tokens to participate in chat or call features.
- (More specific stories depend on the exact communication features implemented).
3.ad. Feature: Content Categorization Management (Admin)
3.ad.1. Description: Allow administrators to create, manage, and organize the hierarchy of categories and subcategories for courses and consultations.
- As an admin, I want to create new top-level categories.
- As an admin, I want to create subcategories under existing categories.
- As an admin, I want to update or delete existing categories.
- As an instructor/consultant, I want to assign my course/consultation to relevant categories/subcategories.
// (Further features like Notifications, etc., will be added here as module analysis progresses)