A modern, responsive web application for comparing and discovering online courses across different domains and platforms.
- Course Discovery: Browse courses by domains, sections, and categories
- Advanced Filtering: Sort courses by price, duration, rating, and more
- Real-time Chat: Discuss courses with other users in domain-specific chat rooms
- Course Ratings & Reviews: Rate and review courses with detailed feedback
- Responsive Design: Fully responsive design that works on all devices
- Admin Panel: Comprehensive admin interface for managing content
- User Authentication: Secure login/register system with JWT
- Course Comparison: Compare courses side-by-side
- Affiliate Integration: Direct links to course platforms
- Search Functionality: Advanced search with filters
- Mobile-First Design: Optimized for mobile and tablet devices
- User Management: Manage user accounts and permissions
- Course Management: Add, edit, and delete courses
- Domain Management: Organize courses by domains
- Section Management: Categorize domains into sections
- Content Moderation: Moderate reviews and discussions
- React 19 - Modern React with latest features
- Vite - Fast build tool and development server
- Tailwind CSS - Utility-first CSS framework
- Redux Toolkit - State management
- React Router - Client-side routing
- React Icons - Icon library
- Axios - HTTP client
- Socket.io Client - Real-time communication
- Swiper - Touch slider component
- Node.js - JavaScript runtime
- Express.js - Web framework
- MongoDB - NoSQL database
- Mongoose - MongoDB object modeling
- JWT - Authentication
- Socket.io - Real-time communication
- Cloudinary - Image upload and management
- Multer - File upload handling
- bcryptjs - Password hashing
- Helmet - Security middleware
- CORS - Cross-origin resource sharing
- Node.js (v18 or higher)
- npm (v9 or higher)
- MongoDB (local or cloud instance)
-
Clone the repository
git clone <repository-url> cd course_comparator
-
Install backend dependencies
cd backend npm install -
Environment Configuration Create a
.envfile in the backend directory:PORT=5000 MONGO_URI=your_mongodb_connection_string JWT_SECRET=your_jwt_secret_key CLOUDINARY_CLOUD_NAME=your_cloudinary_cloud_name CLOUDINARY_API_KEY=your_cloudinary_api_key CLOUDINARY_API_SECRET=your_cloudinary_api_secret NODE_ENV=development
-
Start the backend server
npm run dev
-
Install frontend dependencies
cd frontend npm install -
Environment Configuration Create a
.envfile in the frontend directory:VITE_BACKEND_URL=http://localhost:5000
-
Start the frontend development server
npm run dev
cd backend
npm run seedcd backend
npm run make-adminnpm run dev- Start development server with nodemonnpm start- Start production servernpm run seed- Seed database with initial datanpm run make-admin- Create admin usernpm test- Run testsnpm run lint- Lint codenpm run format- Format code
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm test- Run testsnpm run lint- Lint codenpm run format- Format code
course_comparator/
βββ backend/
β βββ config/
β β βββ db.js
β β βββ data/
β β β βββ course.js
β β β βββ domain.js
β β β βββ section.js
β β βββ middleware/
β β β βββ authMiddleware.js
β β βββ models/
β β β βββ Chat.js
β β β βββ Course.js
β β β βββ Domain.js
β β β βββ Review.js
β β β βββ Section.js
β β β βββ Subscriber.js
β β β βββ Users.js
β β βββ routes/
β β β βββ adminRoutes.js
β β β βββ chatRoutes.js
β β β βββ courseAdminRoutes.js
β β β βββ courseRoutes.js
β β β βββ domainAdminRoutes.js
β β β βββ domainRoutes.js
β β β βββ sectionRoutes.js
β β β βββ subscriberRoutes.js
β β β βββ uploadRoutes.js
β β β βββ userRoutes.js
β β βββ server.js
β β βββ package.json
β βββ frontend/
β β βββ src/
β β β βββ components/
β β β β βββ Admin/
β β β β βββ Chat/
β β β β βββ Common/
β β β β βββ Courses/
β β β β βββ Layout/
β β β β βββ pages/
β β β β βββ redux/
β β β β β βββ slices/
β β β β βββ assets/
β β β β βββ App.jsx
β β β β βββ main.jsx
β β β β βββ package.json
β β β β βββ vite.config.js
β β β βββ README.md
β βββ README.md
PORT- Server port (default: 5000)MONGO_URI- MongoDB connection stringJWT_SECRET- JWT secret keyCLOUDINARY_CLOUD_NAME- Cloudinary cloud nameCLOUDINARY_API_KEY- Cloudinary API keyCLOUDINARY_API_SECRET- Cloudinary API secretNODE_ENV- Environment (development/production)
VITE_BACKEND_URL- Backend API URL
cd backend
npm testcd frontend
npm testThe application is fully responsive and optimized for:
- Mobile: 320px - 768px
- Tablet: 768px - 1024px
- Desktop: 1024px+
- JWT-based authentication
- Password hashing with bcrypt
- CORS protection
- Helmet security headers
- Rate limiting
- Input validation
- XSS protection
- Set up environment variables
- Build the application
- Deploy to your preferred platform (Heroku, Vercel, etc.)
- Build the application:
npm run build - Deploy the
distfolder to your hosting platform
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is licensed under the MIT License.
For support and questions:
- Create an issue in the repository
- Contact the development team
Stay updated with the latest features and improvements by:
- Following the repository
- Checking the releases page
- Reading the changelog
Built with β€οΈ by the Course Comparator Team