Empower Learning, Transform Lives, Ignite Potential
Studious is a fully functional ed-tech platform that enables users to create, consume, and rate educational content. Built using the MERN stack (MongoDB, Express.js, React.js, Node.js), it provides a seamless and interactive learning experience for students while offering instructors a platform to showcase their expertise globally.
- π Course Management: Create, update, delete, and manage educational content
- π₯ Dual User Roles: Separate interfaces for students and instructors
- π³ Payment Integration: Secure course purchases via Razorpay
- βοΈ Cloud Storage: Media management through Cloudinary
- π Secure Authentication: JWT-based auth with OTP verification
- π± Responsive Design: Seamless experience across all devices
- π Analytics Dashboard: Insights for instructors on course performance
- β Rating System: Students can rate and review courses
Before you begin, ensure you have the following installed:
- Node.js (v14 or higher)
- npm (v6 or higher)
- MongoDB (v4.4 or higher)
- Git
-
Clone the repository
git clone https://github.com/AC757/Studious.git cd Studious -
Install dependencies
# Install backend dependencies cd server npm install # Install frontend dependencies cd ../client npm install
-
Set up environment variables
Create a
.envfile in the server directory with the following variables:# Database MONGODB_URL=your_mongodb_connection_string # JWT Secret JWT_SECRET=your_jwt_secret_key # Email Configuration MAIL_HOST=your_smtp_host MAIL_USER=your_email MAIL_PASS=your_email_password # Cloudinary Configuration CLOUD_NAME=your_cloudinary_cloud_name API_KEY=your_cloudinary_api_key API_SECRET=your_cloudinary_api_secret # Razorpay Configuration RAZORPAY_KEY=your_razorpay_key RAZORPAY_SECRET=your_razorpay_secret # Frontend URL FRONTEND_URL=http://localhost:3000
-
Start the backend server
cd server npm run dev -
Start the frontend application
cd client npm start -
Access the application
- Frontend: http://localhost:3000
- Backend API: http://localhost:4000/api
# Build the frontend
cd client
npm run build
# Start the production server
cd ../server
npm startStudyNotion follows a client-server architecture with three main components:
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β β β β β β
β Frontend ββββββΆβ Backend ββββββΆβ Database β
β (React) β β (Node.js) β β (MongoDB) β
β β β β β β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β β β
ββββββββββββββββββββββββββ΄βββββββββββββββββββββββββ
RESTful APIs
POST /api/auth/signup- Create new user accountPOST /api/auth/login- User loginPOST /api/auth/verify-otp- Verify OTPPOST /api/auth/forgot-password- Password reset
GET /api/courses- Get all coursesGET /api/courses/:id- Get specific coursePOST /api/courses- Create new course (Instructor only)PUT /api/courses/:id- Update course (Instructor only)DELETE /api/courses/:id- Delete course (Instructor only)POST /api/courses/:id/rate- Rate a course (Student only)
GET /api/profile- Get user profilePUT /api/profile- Update user profileGET /api/dashboard- Get dashboard data
Run the test suite:
# Run all tests
npm test
# Run tests with coverage
npm run test:coverage
# Run tests in watch mode
npm run test:watchStudyNotion can be deployed using the following services:
- Frontend: Vercel
- Backend: Render
- Database: MongoDB Atlas
- Media Storage: Cloudinary
-
Deploy Database
- Create a MongoDB Atlas cluster
- Get connection string
-
Deploy Backend
- Push code to GitHub
- Connect Render to repository
- Set environment variables
- Deploy
-
Deploy Frontend
- Build the React app
- Deploy to Vercel
- Configure environment variables