This project is now OFFICIALLY accepted for:
EduHaven is a platform designed to assist students by providing a productivity-focused environment. It aims to provide a space where students can Learn and grow together by socialising with friends. It incorporates real-time collaboration, task management, analytics, AI-chatbot, note-making, gamification and more.
-
User Dashboard (Home Page)
Study and break timer, stats summary, notes management, goal setting with deadlines, integrated calendar, and study tools like AI chat, calculator, converter, and graph.
-
Real-Time Study Rooms
Create or join study rooms with friends, use video/audio controls, manage permissions, and chat for discussions.
-
Realtime Stats
Track study time, streaks, global and friend ranks, badges, goal completion, and friends' analytics.
-
Realtime Chat
Chat with peers, share notes and study materials, send private messages, and see online/offline presence.
-
Friends and Social Features
Add friends, invite them to rooms, track their status, and share goals and progress.
-
Gamification
Earn badges and rewards, maintain streaks, climb leaderboards, and play games to refresh your mind.
- Frontend: React.js, Tailwind, Zustand, Tansack-query
- Backend: Node.js with Express
- Database: MongoDB, Cloudinary
- Real-Time Communication: Socket.IO, WebRTC
📦EduHaven/
├─ 📂.github/ # 🔧 GitHub workflows, issue & PR templates
│
├─ 📂 client/ # Frontend (React + Vite) =============================
│ ├─ 📂 src/ # Main frontend source code
│ │ ├─ 📂 api/ # API call functions (fetch, axios, etc.)
│ │ ├─ 📂 assets/ # Images, fonts, icons (bundled in app)
│ │ ├─ 📂 Auth/ # Authentication pages (login, signup, OTP, password, etc)
│ │ ├─ 📂 components/ # Reusable UI components (buttons, popups, dropdowns etc.)
│ │ ├─ 📂 contexts/ # React Context providers (global state)
│ │ ├─ 📂 hooks/ # Custom React hooks (useAuth, useFetch, etc.)
│ │ ├─ 📂 lib/
│ │ ├─ 📂 pages/ # Route-level pages (Home, stats, chat, notes, etc )
│ │ ├─ 📂 queries/ # Data fetching/mutations (Tanstack Query, etc.)
│ │ ├─ 📂 routes/ # Route definitions (React Router setup)
│ │ ├─ 📂 stores/ # State management (Zustand)
│ │ ├─ 📂 utils/ # Helper utilities (axios, error handlers, etc.)
│ │ ├─ 📄 App.jsx # Root React component
│ │ ├─ 📄 index.css # Global styles
│ │ └─ 📄 main.jsx # Entry point of app
│ │
│ ├─ 📂 public/ # Static assets (served directly)
│ │ ├─ 📂 EduhavenBadges/ # Badge images
│ │ ├─ 📂 sounds/ # Audio files
│ │ └─ 📄 ....... # Other media files
│ │
│ ├─ 📄 .env.example # Example frontend env variables
│ ├─ 📄 .env.extension # Browser extension config
│ ├─ 📄 vite.config.js
│ ├─ 📄 tailwind.config.js
│ └─ 📄 package.json # Frontend dependencies & scripts
│
├─ 📂 server/ # Backend (Node.js + Express) ===========================
│ ├─ 📂 Controller/ # Request handlers
│ ├─ 📂 Routes/ # API routes
│ ├─ 📂 Model/ # Database models/schemas
│ ├─ 📂 Database/ # Database connection/setup
│ ├─ 📂 Middlewares/ # Express middlewares
│ ├─ 📂 Socket/ # WebSocket functionality
│ ├─ 📂 security/ # Security configurations
│ ├─ 📂 utils/ # Helper functions
│ ├─ 📄 .env.example # Example backend env variables
│ ├─ 📄 index.js # Backend entry point
│ └─ 📄 API_DOCS.md # You can view list of all endpoints here
│
├─ 📄 CONTRIBUTING.md # Contribution guidelines
├─ 📄 CODE_OF_CONDUCT.md # Code of conduct
├─ 📄 .prettierrc.json # Code formatting rules
└─ 📄 LEARN.md # Reference / learning notes
- Make sure you've joined our discord server so you can connect in case you face any issues.
- Prerequisites: Node.js, MongoDB, Git
-
After forking the repository, Clone the forked repository:
git clone https://github.com/<your-username>/EduHaven.git cd EduHaven
-
Install dependencies:
# Install backend dependencies cd Server npm install # Install frontend dependencies cd ../Client npm install
-
Set up environment variables:
-
for frontend:
- create a
.envfile in the/Clientdirectory, and copy all the contents from.env.example.
- create a
-
for backend:
- Create a
.envfile in the/Serverdirectory. - Follow the instructions provided in
.env.examplefile to create a new.envfile for backend.
- Create a
🔴 make sure the contents of
.env.examplefile must remain untouched. -
-
Start the development servers:
# Start backend server cd Server npm run dev # Start frontend server cd ../Client npm run dev
- You must get assigned to the issue before you start working on it. leave comment to get issue assigned.
- Code must be properly formatted. (use preetier configuration provided)
- Commits should generally be minimal
- The body of the commit message should explain why and how the change was made.It should provide clear context for all changes mage that will help both a reviewer now, and a developer looking at your changes a year later, understand the motivation behind your decisions.
We welcome contributions to make EduHaven better for students everywhere! Here’s how you can contribute:
- Fork the repository.
- Create a new branch for your feature/bugfix:
git checkout -b feature-name
- Make your changes and test them thoroughly.
- For frontend changes, also run:
and verify there are no build errors.
npm run build
- Commit and push your changes:
git add . git commit -m "Add a brief description of your changes" git push origin feature-name
- Before pushing frontend changes, run
npm run buildlocally to ensure the project builds successfully. Catch & solve any potential deployment issues early, if any. - Create a Pull Request (PR) with a detailed explanation of your changes.
This project is licensed under the MIT License - see the LICENSE file for details.
- Special thanks to contributors for their efforts in building EduHaven.
- Inspired by productivity tools and online collaborative platforms.
The backend is hosted on Render Free Tier and may go to sleep after short inactivity.
We;re keeping it alive using cron-job.org to ping the backend every 1 minute.
For full details, see KEEP_ALIVE.md.
- Backend URL: https://eduhaven-backend.onrender.com/
For any further queries, feel free to reach out on our Discord group. Let’s make learning fun and productive!

