This project is an Online Course Platform that allows instructors to create courses and students to enroll in and review courses. The backend is built with Node.js and MongoDB, with JWT-based authentication and integration with Amazon S3 for file uploads. The frontend team uses TypeScript for the client-side development.
-
User Authentication with JWT Refresh Tokens:
- User registration and login with email and password.
- JWT-based authentication with access and refresh tokens.
- OAuth login with Google and Facebook.
-
Course Management:
- Instructors can create, update, and delete courses.
- Students can enroll in and review courses.
- Course search functionality with filters.
-
File Uploads to Amazon S3:
- Instructors can upload course materials (e.g., videos, PDFs).
- Files are securely stored in Amazon S3, and URLs are saved in MongoDB.
-
Track Course Progress:
- Students can track their progress in courses.
-
Backend:
- Node.js
- Express.js
- MongoDB with Mongoose
- JSON Web Tokens (JWT) for authentication
- Passport.js for OAuth (Google, Facebook)
- Amazon S3 for file storage
-
Frontend:
- TypeScript
- React.js
-
DevOps:
- Git & GitHub for version control
- Node.js and npm installed on your local machine.
- MongoDB database setup (local or cloud).
- Amazon S3 bucket for storing course materials.
- Google and Facebook OAuth credentials (Client ID & Secret).
API documentation for the Online Course Platform is available through Swagger. You can view the API documentation by running the server and visiting the following URL in your browser:
http://localhost:5000/api-docs
Swagger will provide detailed information on the available endpoints, including request methods, parameters, and example responses. You can also use Swagger to interact with the API directly from your browser.
Contributions are welcome! Please follow these steps:
- Fork the repository.
- Create a new branch (
git checkout -b feature-branch
). - Commit your changes (
git commit -m 'Add some feature'
). - Push to the branch (
git push origin feature-branch
). - Open a Pull Request.
This project is maintained by:
- Yassin Ali - Backend Developer (Node JS)
- Youssef Ali - Frontend Developer (TypeScript, React.js)
For any inquiries, feel free to reach out:
- Yassin Ali - LinkedIn | Email: yassinalilearning77076@gmail.com
- Youssef Ali - LinkedIn | Email: aliy94476@gmail.com