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
MongoDB not connecting β MongoNetworkError. Use local service or Atlas; example connect:
// Server/Database/Db.js
const mongoose = require('mongoose');
const uri = process.env.MONGO_URI || 'mongodb://localhost:27017/eduhaven';
mongoose.connect(uri, { useNewUrlParser:true, useUnifiedTopology:true })
.then(()=>console.log('MongoDB connected'))
.catch(err=>{ console.error('MongoDB error:', err.message); process.exit(1); });CORS blocked β "blocked by CORS policy". Enable CORS and set client origin:
// Server/index.js (before routes)
const cors = require('cors');
app.use(cors({ origin: process.env.CLIENT_URL || '*', credentials: true }));OAuth / infinite loading β spinner never returns. Clear browser storage for localhost and verify GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET and exact redirect URI in .env and provider console.
- 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!