A MERN smart classroom management app for courses, faculty, rooms, notifications, AI timetable generation, timetable PDF export, and an AI scheduling assistant.
- Course, faculty, room, and notification management
- AI-powered timetable generation
- Weekly schedules with optional Saturday/Sunday classes
- One-day special class timetable mode
- Professional PDF export for generated timetables
- Responsive dashboard and management screens for laptop, tablet, and mobile
- Deployment-ready API configuration for Render and Netlify
- Frontend: React, Vite, Tailwind CSS
- Backend: Node.js, Express, MongoDB, Mongoose
- AI: OpenAI-compatible chat completion API
- Deployment: Render for backend, Netlify for frontend
backend/ Express API, MongoDB models, AI timetable generator
frontend/ React/Vite client
render.yaml Render service blueprint
cd backend
npm install
cp .env.example .env
npm run devRequired backend environment variables:
MONGO_URI=your_mongodb_connection_string
PORT=5000
CLIENT_URL=http://localhost:5173
OPENAI_API_KEY=your_openai_or_openrouter_key
OPENAI_MODEL=gpt-4o-mini
OPENAI_BASE_URL=https://api.openai.com/v1cd frontend
npm install
cp .env.example .env
npm run devFrontend environment:
VITE_API_URL=http://localhost:5000- Create a new Render Web Service from this repository.
- Use
backendas the root directory. - Build command:
npm install - Start command:
npm start - Health check path:
/api/health - Add environment variables in Render:
MONGO_URICLIENT_URLset to your Netlify URL, for examplehttps://your-site.netlify.appOPENAI_API_KEYOPENAI_MODELOPENAI_BASE_URLif using a non-default OpenAI-compatible provider
- Create a new Netlify site from this repository.
- Base directory:
frontend - Build command:
npm run build - Publish directory:
frontend/dist - Add environment variable:
VITE_API_URL=https://your-render-backend.onrender.com
The included frontend/netlify.toml handles SPA route refreshes.
- Real
.envfiles are ignored by Git. - Only
.env.exampleplaceholder files should be committed. - Add production secrets only in Render and Netlify dashboards.
Recommended checks before deployment:
cd backend
npm test
cd ../frontend
npm run lint
npm run build