AI-assisted learning management system for instructors and students. Professors can upload material, generate and update a Bloom’s taxonomy–aligned syllabus, create adaptive assessments, and review student performance. Students receive adaptive question delivery and rapid feedback with subjective answers evaluated asynchronously.
Project live at: https://polite-coast-0fbcbef1e.3.azurestaticapps.net/login
- Instructor and student portals with JWT-based authentication.
- Intelligent syllabus generation and updates that respect instructor-selected Bloom’s taxonomy levels.
- AI-authored MCQ, MSQ, and subjective questions with UG/PG difficulty choices.
- Adaptive assessment engine that adjusts question difficulty/topic based on student performance.
- Background evaluation for subjective answers and quick grading of objective questions.
- Supabase-backed persistence with optional Azure integrations for AI, blob storage, and search (mock fallbacks available).
| Layer | Technologies |
|---|---|
| Frontend | React 18, TypeScript, Vite, TailwindCSS, React Router, React Query |
| Backend | Node.js, Express, TypeScript, Supabase (PostgreSQL), express-validator, multer |
| AI | Azure OpenAI (mock mode supported), optional Azure Cognitive Search |
| Storage | Azure Blob Storage (optional, mock mode supported) |
- Node.js 18+
- npm 9+
- Supabase project (or compatible PostgreSQL instance)
- Azure credentials (optional — mocked when missing)
-
Clone the repository
git clone https://github.com/Arya-Mayank/DS252-CloudForge1.git cd DS252-CloudForge1 -
Install dependencies (run both commands)
cd backend && npm install cd ../frontend && npm install
-
Environment ready out-of-the-box
backend/.envandfrontend/.envare already committed with course Supabase + Azure credentials.- No additional configuration is required unless you want to override them locally.
- Treat these secrets as private—anyone with repo access can modify shared data and incur Azure usage.
-
Start the servers (use two terminal windows or tabs)
# Backend cd backend npm run dev # Frontend cd frontend npm run dev
Visit
http://localhost:5173(Vite dev server). The backend listens onhttp://localhost:5000and is proxied automatically. -
Log in with seeded accounts
- Instructor:
sakshi@example.com/sakshi123 - Student:
mayank@example.com/mayank123
- Instructor:
- Follow
database/README.mdfor Supabase provisioning and run the SQL scripts in thedatabase/folder (at minimumschema.sqlplus Bloom/assessment migrations). - Ensure storage buckets are created if using Azure Blob Storage; otherwise the backend uses local
backend/uploads/(ignored by git).
# In one terminal (backend)
cd backend
npm run dev
# In another terminal (frontend)
cd frontend
npm run devAccess the UI at http://localhost:5173. The backend listens on http://localhost:5000 by default and proxies API requests from Vite.
# Backend
cd backend
npm run lint
npm run build
# Frontend
cd frontend
npm run lint
npm run buildAll linting and TypeScript builds run clean with the current configuration.
- Backend: Build with
npm run buildand deploy the generateddist/(e.g., Azure App Service). Provide.envvalues via your host’s secret manager. - Frontend: Run
npm run buildand deploy thedist/folder to Vercel, Netlify, or any static host. SetVITE_API_URLto the deployed API endpoint. - Supabase: Load schema migrations and configure RLS policies suitable for production. The included schema enables RLS; adjust policies as needed.
- Azure Services (optional): Provide credentials to activate real AI, blob storage, and search. Without them the system logs warnings and falls back to mock implementations so developers can experiment locally.
DS252-CloudForge1/
├── backend/
│ ├── src/
│ │ ├── config/ # Azure, JWT, Supabase configuration helpers
│ │ ├── controllers/ # Express route handlers
│ │ ├── middleware/ # Auth middleware and validators
│ │ ├── models/ # Supabase data access logic
│ │ ├── routes/ # API route definitions
│ │ └── services/ # Azure OpenAI/Search/Blob service wrappers
│ └── uploads/ # Local storage bucket (git keeps folder only)
├── frontend/
│ ├── src/
│ │ ├── api/ # Axios clients for backend endpoints
│ │ ├── components/ # Shared UI building blocks
│ │ ├── pages/ # Instructor & student route entries
│ │ ├── hooks/ # Auth/context hooks
│ │ ├── styles/ # Tailwind entrypoints
│ │ └── types/ # Shared TypeScript interfaces
├── database/ # SQL schema and migration scripts
└── docs/ # Supplemental product documentation
- Azure credentials missing: backend runs in mock mode. Add keys to enable real AI generation.
- Supabase connection failures: verify
SUPABASE_URLandSUPABASE_KEY, and ensure the schema fromdatabase/has been applied. - Uploads directory missing: the repository ships with
backend/uploads/.gitkeep; ensure your deployment target preserves the folder or configure Azure Blob Storage. - Frontend cannot reach API: confirm
VITE_API_URLpoints to the backend (Vite dev server proxies/apitohttp://localhost:5000). - Shared environment files: the committed
.envfiles grant access to the course’s Supabase project and Azure OpenAI deployment. Do not expose the repository publicly.
Use the following accounts to explore the system without creating new users:
| Role | Password | |
|---|---|---|
| Instructor | sakshi@example.com |
sakshi123 |
| Student | mayank@example.com |
mayank123 |
Maintained for DS252 adaptive learning research. Contributions and issue reports are welcome.