A comprehensive, cloud-native eLearning platform built with React, Node.js, and designed for AWS deployment. EduPort enables users to access courses, watch lectures, take quizzes, and track their learning progress with high availability and performance.
- User Management: Role-based authentication (Students, Instructors, Admins)
- Course Catalog: Browse and search courses with filtering by category and difficulty
- Video Learning: Stream video lectures with progress tracking
- Interactive Quizzes: Take timed quizzes with instant feedback and scoring
- Progress Tracking: Monitor learning progress with detailed analytics
- Responsive Design: Optimized for desktop, tablet, and mobile devices
- Three-Tier Architecture: Clean separation of presentation, business logic, and data layers
- RESTful API: Comprehensive API with detailed documentation
- JWT Authentication: Secure token-based authentication
- Real-time Updates: Progress tracking and notifications
- File Management: Support for video, documents, and course materials
- Database Optimization: Indexed queries and efficient data structures
- Framework: React 18 with TypeScript
- Styling: Tailwind CSS with custom design system
- State Management: Context API for authentication and global state
- Routing: React Router for client-side navigation
- HTTP Client: Axios with interceptors for API communication
- Runtime: Node.js with Express.js framework
- Authentication: JWT tokens with bcrypt password hashing
- Security: Helmet, CORS, rate limiting, and input validation
- File Upload: Multer for handling file uploads (ready for S3 integration)
- Error Handling: Centralized error handling with detailed logging
- Primary Database: MySQL/PostgreSQL compatible schema
- Data Structure: Normalized tables with proper indexing
- Relationships: Foreign key constraints and referential integrity
- Performance: Optimized queries with proper indexes
- React 18
- TypeScript
- Tailwind CSS
- React Router
- Axios
- Lucide React Icons
- Node.js
- Express.js
- JWT (jsonwebtoken)
- bcryptjs
- MySQL2
- Helmet
- CORS
- Express Rate Limit
- ESLint
- Prettier
- Git
- npm/yarn
- Node.js 16+ and npm
- MySQL 8.0+ or PostgreSQL 12+
- Git
- Clone the repository
git clone <repository-url>
cd eduport- Install frontend dependencies
npm install- Install backend dependencies
cd backend
npm install- Database Setup
# Create database and run schema
mysql -u root -p < database/schema.sql- Environment Configuration
# Copy and configure environment variables
cp backend/.env.example backend/.env
# Edit .env with your database credentials and secrets- Start the application
Backend (Terminal 1):
cd backend
npm run devFrontend (Terminal 2):
npm run devThe application will be available at:
- Frontend: http://localhost:3000
- Backend API: http://localhost:5000
- Frontend: React app hosted on Amazon S3 + CloudFront CDN
- Backend: Node.js API on Amazon EC2 with Elastic Load Balancer
- Database: Amazon RDS (MySQL/PostgreSQL) with Multi-AZ deployment
- Storage: Amazon S3 for course videos, materials, and user uploads
- DNS: Amazon Route 53 for custom domain management
- Security: AWS Certificate Manager for HTTPS, IAM roles for access control
- Database: Set up Amazon RDS instance and run schema
- Backend: Deploy Node.js API to EC2 instances behind ALB
- Frontend: Build React app and deploy to S3 + CloudFront
- DNS: Configure Route 53 for custom domain
- Security: Set up SSL certificates and security groups
The API provides comprehensive endpoints for all platform functionality:
POST /api/auth/register- User registrationPOST /api/auth/login- User loginGET /api/auth/profile- Get user profile
GET /api/courses- List all coursesGET /api/courses/:id- Get course detailsPOST /api/courses/:id/enroll- Enroll in courseGET /api/courses/my/enrolled- Get enrolled courses
GET /api/quizzes/:id- Get quiz questionsPOST /api/quizzes/:id/submit- Submit quiz answers
POST /api/progress/lesson/:id/complete- Mark lesson completeGET /api/progress/course/:id- Get course progress
See API_DOCUMENTATION.md for complete API reference.
The database schema includes the following main tables:
- users: User accounts with role-based access
- courses: Course information and metadata
- lessons: Individual course lessons
- enrollments: User course enrollments
- quizzes: Quiz definitions and questions
- quiz_attempts: User quiz submissions
- user_progress: Learning progress tracking
- reviews: Course reviews and ratings
Backend (.env):
NODE_ENV=production
PORT=5000
DB_HOST=your-rds-endpoint.amazonaws.com
DB_USER=admin
DB_PASSWORD=your-secure-password
DB_NAME=eduport
JWT_SECRET=your-super-secure-jwt-secret
AWS_REGION=us-east-1
AWS_S3_BUCKET=eduport-media-bucket- Configure IAM roles for EC2 and S3 access
- Set up security groups for database and application tiers
- Configure CloudFront distribution for static assets
- Set up Route 53 hosted zone for domain management
- VPC and Networking: Create VPC with public/private subnets
- Database: Launch RDS instance in private subnet
- Application: Deploy EC2 instances with Auto Scaling
- Load Balancer: Configure Application Load Balancer
- CDN: Set up CloudFront for global content delivery
- Monitoring: Configure CloudWatch for logging and metrics
Set up automated deployment using:
- AWS CodePipeline for continuous integration
- AWS CodeBuild for building applications
- AWS CodeDeploy for automated deployments
- GitHub Actions for code quality checks
- Code splitting with React.lazy()
- Image optimization and lazy loading
- Bundle size optimization with Webpack
- Service worker for offline capability
- Database query optimization and indexing
- Redis caching for frequently accessed data
- Connection pooling for database connections
- API response compression
- CloudFront caching strategies
- Auto Scaling based on demand
- RDS Read Replicas for read-heavy workloads
- S3 Transfer Acceleration for global uploads
- JWT token-based authentication
- Password hashing with bcrypt (12 rounds)
- Input validation and sanitization
- SQL injection prevention
- XSS protection with security headers
- Rate limiting to prevent abuse
- IAM roles and policies for least privilege access
- Security groups for network-level firewall
- SSL/TLS certificates for encrypted communication
- VPC isolation for network security
- Regular security updates and patches
# Frontend tests
npm test
# Backend tests
cd backend
npm test
# E2E tests
npm run test:e2e- Unit tests for React components
- API endpoint testing
- Database integration tests
- Authentication flow testing
- Error tracking and logging
- Performance metrics collection
- User activity analytics
- API response time monitoring
- CloudWatch metrics and alarms
- Application Load Balancer health checks
- RDS performance insights
- S3 access logging
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Development Team: Full-stack developers
- DevOps Team: AWS infrastructure specialists
- UI/UX Team: Design and user experience experts
- QA Team: Testing and quality assurance
For support and questions:
- Email: [email protected]
- Documentation: API Docs
- Issues: GitHub Issues tracker
- Live Streaming: Real-time video lectures with chat
- Mobile Apps: Native iOS and Android applications
- AI Integration: Personalized learning recommendations
- Advanced Analytics: Detailed learning analytics dashboard
- Integration APIs: Third-party LMS integrations
- Offline Mode: Download courses for offline viewing
- Microservices: Break down monolithic API into microservices
- GraphQL: Implement GraphQL for flexible data fetching
- WebRTC: Peer-to-peer video calls for tutoring
- Machine Learning: Content recommendation engine
- Blockchain: Credential verification system
Built with β€οΈ for the future of online education