This project is an online platform for selling courses. The primary goal of the project is to provide users with an intuitive interface for searching, purchasing, creating, and taking educational courses.
Read this in other languages: Π ΡΡΡΠΊΠΈΠΉ.
The published version of the site <>
-
Authentication and Registration: Users can create accounts, log in, and manage their sessions.
-
Course Management: A course includes information about content, instructor, and reviews and ratings. Courses can be loaded using Firebase Firestore and displayed as cards on the platform's pages.
-
Reviews: Users can leave reviews for completed courses. Each review is associated with a specific course and user.
-
Data Storage: The project uses Firebase Firestore to store information about users, courses, and reviews. User data, including avatars, is uploaded and stored in Firebase Storage.
- Client-side data storage in LocalStorage. This feature allows the web application to work efficiently even after a page reload.
- Implement course creation functionality for users
- Add the ability to edit and manage created courses
- Add course purchase functionality
- Add functionality for creating course reviews
- Add course search functionality on the main page
- Develop an admin panel for managing course content and moderating user-created courses
The project uses the architectural methodology for frontend projects Feature-Sliced Design, which ensures a clear separation of functional modules, improving code scalability and maintainability.
The project structure is as follows:
βββ src/
βββ 1_app/ # Application initialization logic #
| #
βββ 2_pages/ # Layer: Application pages
| βββ {some-page}/ # Slice: (example: Homepage page)
| | βββ ui/ # Segment: UI components, component styles
| | βββ index.ts # Public API
| ... #
| #
βββ 3_widgets/ # Layer: Self-contained and complete blocks for pages
| βββ {some-widget}/ # Slice: (example: Header widget)
| | βββ lib/ # Segment: Infrastructure logic (helpers/utils)
| | βββ model/ # Segment: Business logic
| | βββ ui/ # Segment: UI components, component styles
| | βββ index.ts # Public API
| ... #
βββ 4_features/ # Layer: Handled user scenarios
| βββ {some-feature}/ # Slice: (example: SearchCourse feature)
| | βββ lib/ # Segment: Infrastructure logic (helpers/utils)
| | βββ model/ # Segment: Business logic
| | βββ ui/ # Segment: UI components, component styles
| | βββ index.ts # Public API
| ... #
| #
βββ 5_entities/ # Layer: Business entities handled by the domain
| βββ {some-entity}/ # Slice: (example: Course entity)
| | βββ lib/ # Segment: Infrastructure logic (helpers/utils)
| | βββ model/ # Segment: Business logic
| | βββ ui/ # Segment: UI components, component styles
| | βββ index.ts # Public API
| ... #
| #
βββ 6_shared/ # Layer: Reusable modules not tied to business logic
| βββ api/ # Segment: Backend interaction (request functions, mappers)
| βββ config/ # Segment: Application configuration (configuration keys, ...)
| βββ lib/ # Segment: Application infrastructure logic (utils/helpers)
| βββ types/ # Segment: Global types (entity types, errors, status ...)
β βββ ui/ # Segment: Reusable UI resources (UI components, UI templates, icons, images)
| ... #
| #
βββ main.tsx/ # Application entry point
- Clone the repository
git clone https://github.com/OnliEducation/Learning_Management_System.git- Switch to the project directory
cd Learning_Management_System
- Install dependencies
npm install- Run the application
npm run dev