{"id":17912753,"url":"https://github.com/micro-hawk/studynotion","last_synced_at":"2025-04-03T07:14:07.841Z","repository":{"id":233090313,"uuid":"785987705","full_name":"micro-hawk/studynotion","owner":"micro-hawk","description":"Cloned from Study Notion Project Demo","archived":false,"fork":false,"pushed_at":"2024-04-13T05:01:51.000Z","size":5693,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-08T20:47:34.317Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/micro-hawk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-04-13T04:56:25.000Z","updated_at":"2024-04-13T05:01:56.000Z","dependencies_parsed_at":null,"dependency_job_id":"ba450647-64f1-41f7-84ab-be6f588f2d68","html_url":"https://github.com/micro-hawk/studynotion","commit_stats":null,"previous_names":["micro-hawk/studynotion"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/micro-hawk%2Fstudynotion","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/micro-hawk%2Fstudynotion/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/micro-hawk%2Fstudynotion/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/micro-hawk%2Fstudynotion/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/micro-hawk","download_url":"https://codeload.github.com/micro-hawk/studynotion/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246952278,"owners_count":20859812,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-28T19:46:50.859Z","updated_at":"2025-04-03T07:14:07.820Z","avatar_url":"https://github.com/micro-hawk.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# StudyNotion Online Education Platform (MERN App) [Website Link](https://studynotion-frontend.vercel.app/)\n\n![Main Page](images/mainpage.png)\n\n## Project Description\n\nStudyNotion is a fully functional ed-tech platform that enables users to create, consume,\nand rate educational content. The platform is built using the MERN stack, which includes\nReactJS, NodeJS, MongoDB, and ExpressJS.\nStudyNotion aims to provide:\n* A seamless and interactive learning experience for students, making education\nmore accessible and engaging.\n* A platform for instructors to showcase their expertise and connect with learners\nacross the globe.\nIn the following sections, we will cover the technical details of the platform, including:\n1. System architecture: The high-level overview of the platform's components and\ndiagrams of the architecture.\n2. Front-end: The description of the front-end architecture, user interface design,\nfeatures, and functionalities of the front-end, and frameworks, libraries, and tools\nused.\n3. Back-end: The description of the back-end architecture, features and functionalities of\nthe back-end, frameworks, libraries, tools used, and data models and database schema.\n4. API Design: The description of the API design, list of API endpoints, their\nfunctionalities, and sample API requests and responses.\n5. Deployment: The description of the deployment process, hosting environment and\ninfrastructure, and deployment scripts and configuration.\n6. Testing: The description of the testing process, types of testing, test frameworks and\ntools used.\n7. Future Enhancements: The list of potential future enhancements to the platform,\nexplanation of how these enhancements would improve the platform, estimated\ntimeline and priority for implementing these enhancements.\n\nIn summary, StudyNotion is a versatile and intuitive ed-tech platform that is designed to\nprovide an immersive learning experience to students and a platform for instructors to\nshowcase their expertise. In the following sections, we will delve into the technical details\nof the platform, which will provide a comprehensive understanding of the platform's\nfeatures and functionalities.\n\n## System Architecture\n\nThe StudyNotion ed-tech platform consists of three main components: the front end, the\nback end, and the database. The platform follows a client-server architecture, with the\nfront end serving as the client and the back end and database serving as the server.\n\n### Front-end \n\nThe front end of the platform is built using ReactJS, ReactJS allows for the creation of dynamic and responsive user\ninterfaces, which are critical for providing an engaging learning experience to the students.\nThe front end communicates with the back end using RESTful API calls\n\n### Back-end \n\nThe back end of the platform is built using NodeJS and ExpressJS,. The back end\nprovides APIs for the front end to consume, which include functionalities such as user\nauthentication, course creation, and course consumption. The back end also handles the\nlogic for processing and storing the course content and user data.\n\n\n### Database\n\nThe database for the platform is built using MongoDB, which is a NoSQL database that\nprovides a flexible and scalable data storage solution. MongoDB allows for the storage of\nunstructured and semi-structured data. The database stores the course content, user data, and other\nrelevant information related to the platform.\n\n\n### Architecture Diagram\n\nHere is a high-level diagram that illustrates the architecture of the StudyNotion ed-tech\nplatform:\n\n![Architecture](images/architecture.png)\n\n## Front End\n\nThe front end of StudyNotion has all the necessary pages that an ed-tech platform should\nhave. Some of these pages are:\n\n### For Students:\n* Homepage: This page will have a brief introduction to the platform, as well as links\nto the course list and user details.\n* Course List: This page will have a list of all the courses available on the platform,\nalong with their descriptions and ratings.\n* Wishlist: This page will display all the courses that a student has added to their\nwishlist.\n* Cart Checkout: This page will allow the user to complete the course purchase.\n* Course Content: This page will have the course content for a particular course,\nincluding videos, and other related material.\n* User Details: This page will have details about the student's account, including\ntheir name, email, and other relevant information.\n* User Edit Details: This page will allow the student to edit their account details.\n\n\n### For Instructors:\n* Dashboard: This page will have an overview of the instructor's courses, as well as\nthe ratings and feedback for each course.\n* Insights: This page will have detailed insights into the instructor's courses,\nincluding the number of views, clicks, and other relevant metrics.\n* Course Management Pages: These pages will allow the instructor to create, update,\nand delete courses, as well as manage the course content and pricing.\n* View and Edit Profile Details: These pages will allow the instructor to view and edit\ntheir account details.\nPAGE 3\nFor Admin (this is for future scope):\n* Dashboard: This page will have an overview of the platform's courses, instructors,\nand students.\n* Insights: This page will have detailed insights into the platform's metrics, including\nthe number of registered users, courses, and revenue.\n* Instructor Management: This page will allow the admin to manage the platform's\ninstructors, including their account details, courses, and ratings.\n* Other Relevant Pages: The admin will also have access to other relevant pages, such\nas user management and course management pages.\n\nTo build the front end, we use frameworks and libraries such as ReactJS, We also use CSS and Tailwind, which are\nstyling frameworks that help make the user interface look good and responsive.\nTo manage the state of the application, we use Redux, which is a popular state management\nlibrary for React. \n\n## Back End\n\nDescription of the Back-end Architecture: \nStudyNotion uses a monolithic architecture, with the backend built using Node.js and\nExpress.js, and MongoDB as the primary database. \n\nFeatures and Functionalities of the Back-end: \nThe back end of StudyNotion provides a range of features and functionalities, including:\n1. User authentication and authorization: Students and instructors can sign up and log in\nto the platform using their email addresses and password. The platform also supports\nOTP (One-Time Password) verification and forgot password functionality for added\nsecurity.\n1. Course management: Instructors can create, read, update, and delete courses, as well \nas manage course content and media. Students can view and rate courses.\n1. Payment Integration: Students will purchase and enrol on courses by completing the\ncheckout flow that is followed by Razorpay integration for payment handling.\n1. Cloud-based media management: StudyNotion uses Cloudinary, a cloud-based media\nmanagement service, to store and manage all media content, including images, videos,\nand documents.\n1. Markdown formatting: Course content in document format is stored in Markdown\nformat, which allows for easier display and rendering on the front end.\n\nFrameworks, Libraries, and Tools used: \nThe back end of StudyNotion uses a range of frameworks, libraries, and tools to ensure its\nfunctionality and performance, including:\n1. Node.js: Node.js is used as the primary framework for the back end.\n2. MongoDB: MongoDB is used as the primary database, providing a flexible and scalable\ndata storage solution.\n3. Express.js: Express.js is used as a web application framework, providing a range of\nfeatures and tools for building web applications.\n4. JWT: JWT (JSON Web Tokens) are used for authentication and authorization,\nproviding a secure and reliable way to manage user credentials.\n5. Bcrypt: Bcrypt is used for password hashing, adding an extra layer of security to user\ndata.\n6. Mongoose: Mongoose is used as an Object Data Modeling (ODM) library, providing a\nway to interact with MongoDB using JavaScript\n\n### Data Models and Database Schema: \nThe back end of StudyNotion uses a range of data models and database schemas to\nmanage data, including:\n1. Student schema: Includes fields such as name, email, password, and course details\nfor each student.\n2. Instructor schema: Includes fields such as name, email, password, and course\ndetails for each instructor.\n3. Course schema: Includes fields such as course name, description, instructor details,\nand media content.\n\nOverall, the back-end of StudyNotion is designed to provide a robust and scalable solution\nfor an ed-tech platform, with a focus on security, reliability, and ease of use. By using the\nright frameworks, libraries, and tools, we can ensure that the platform functions smoothly\nand provides an optimal user experience for all its users.\n\n![Database Schema](images/schema.png)\n\n## API Design\n\nThe StudyNotion platform's API is designed following the REST architectural style. The\nAPI is implemented using Node.js and Express.js. It uses JSON for data exchange and\nfollows standard HTTP request methods such as GET, POST, PUT, and DELETE.\nSample list of API endpoints and their functionalities: \n1. /api/auth/signup (POST) - Create a new user (student or instructor) account.\n2. /api/auth/login (POST) – Log in using existing credentials and generate a JWT\ntoken.\n3. /api/auth/verify-otp (POST) - Verify the OTP sent to the user's registered email.\n4. /api/auth/forgot-password (POST) - Send an email with a password reset link to\nthe registered email.\n5. /api/courses (GET) - Get a list of all available courses.\n6. /api/courses/:id (GET) - Get details of a specific course by ID.\n7. /api/courses (POST) - Create a new course.\n8. /api/courses/:id (PUT) - Update an existing course by ID.\n9. /api/courses/:id (DELETE) - Delete a course by ID.\n10. /api/courses/:id/rate (POST) - Add a rating (out of 5) to a course.\nSample API requests and responses: \n1. GET /api/courses: Get all courses\n   * Response: A list of all courses in the database\n2. GET /api/courses/:id: Get a single course by ID\n   * Response: The course with the specified ID\n3. POST /api/courses: Create a new course\n   * Request: The course details in the request body\n   * Response: The newly created course\n4. PUT /api/courses/:id: Update an existing course by ID\n   * Request: The updated course details in the request body\n   * Response: The updated course\n5. DELETE /api/courses/:id: Delete a course by ID\n   * Response: A success message indicating that the course has been deleted.\n\nIn conclusion, the REST API design for the StudyNotion ed-tech platform is a crucial part\nof the project. The API endpoints and their functionalities are designed to ensure seamless\ncommunication between the front-end and back-end of the application. By following\nRESTful principles, the API will be scalable, maintainable, and reliable. The sample API\nrequests and responses provided above illustrate how each endpoint will function and\nwhat kind of data it will accept or return. With this API design, StudyNotion will be able to\nprovide a smooth user experience while ensuring security and stability.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmicro-hawk%2Fstudynotion","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmicro-hawk%2Fstudynotion","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmicro-hawk%2Fstudynotion/lists"}