Stellar is a live AI-powered exam-prep platform for CBSE, ICSE and AP SSC learners across grades 1-10.
Live product: https://stellaredu.in
The platform combines adaptive practice, AI explanations, real-time competition rooms, progress analytics, parent/teacher workflows, payments and offline-capable web/mobile clients. It is built as a full-stack product with a React web client, Flutter mobile app, Express API, MongoDB, Redis, Socket.IO and Claude-backed RAG workflows.
| Area | Technologies |
|---|---|
| Web | React, Vite, React Router, Zustand, Axios, PWA service worker |
| Mobile | Flutter |
| Backend | Node.js, Express, REST APIs, Joi validation, JWT auth |
| Data | MongoDB, Mongoose, Redis |
| Realtime | Socket.IO |
| AI/RAG | Claude API, retrieval over NCERT/topic content, cache-first AI pipeline |
| Payments | Razorpay subscriptions and coupons |
| Infra/Ops | Docker, GitHub Actions, PM2, Sentry, k6 load testing |
- Adaptive practice engine with board/grade/topic routing and prerequisite-aware recommendations.
- AI explanations that use RAG over curriculum content and student mistake context.
- Real-time Socket.IO competition rooms and live leaderboard flows.
- Exam engine with mock papers, score prediction and Z-score normalization.
- Parent, teacher, school-group and admin workflows.
- Razorpay subscription billing with coupons and trial support.
- Offline-capable PWA and a Flutter mobile client sharing the same API.
- CI workflows, automated tests, smoke tests and k6 load testing.
React Web (Vite/PWA) Flutter Mobile
| |
+------ REST API -----+
|
Express API
JWT, CSRF, validation, rate limits
| | |
MongoDB Redis Socket.IO
users/content cache live rooms
|
RAG content + student context
|
Claude API
The AI path is designed to keep latency and cost controlled before calling the model:
- Correct-answer short-circuit avoids model calls when the answer is already deterministically known.
- Stored solutions and static mistake-pattern maps answer common cases without using Claude.
- Redis and MongoDB caches reuse validated explanations across students.
- RAG retrieval injects the most relevant NCERT/topic chunks into explanation prompts.
- Redis-backed per-user and global token budgets guard daily/monthly spend.
- Model failover returns a controlled fallback instead of crashing the request path.
- Output guardrails check generated content before it reaches students.
- PASS/FAIL verification rejects poor AI-generated questions before they enter the pool.
Relevant code areas:
ai-learning-backend/backend/services/aiService.jsai-learning-backend/backend/utils/ragStore.jsai-learning-backend/backend/utils/featureFlags.jsai-learning-backend/backend/scripts/buildRagIndex.jsai-learning-backend/backend/scripts/buildRagFromTopicContent.jsai-learning-frontend/frontend/src/components/DoubtChat.jsx
| Landing | Personalized Path |
|---|---|
![]() |
![]() |
| Adaptive System | Sign In |
|---|---|
![]() |
![]() |
| Start Flow | Mobile |
|---|---|
![]() |
![]() |
Authenticated dashboard, practice, analytics and competition-room screenshots should be added with a demo account or anonymized local data.
Prerequisites:
- Node.js 20+
- MongoDB local or Atlas
- Redis optional for local development
- Anthropic/Claude API key for AI features
Backend:
cd ai-learning-backend/backend
npm install
cp .env.example .env
npm run devFrontend:
cd ai-learning-frontend/frontend
npm install
npm run devMobile:
cd ai-learning-mobile
flutter pub get
flutter runCommon backend environment variables:
| Variable | Purpose |
|---|---|
MONGO_URI |
MongoDB connection string |
JWT_SECRET |
Access-token signing secret |
JWT_REFRESH_SECRET |
Refresh-token signing secret |
ANTHROPIC_API_KEY |
Claude API key |
REDIS_URL |
Redis cache/session/token-budget store |
RAZORPAY_KEY_ID |
Razorpay checkout key |
RAZORPAY_KEY_SECRET |
Razorpay server secret |
FRONTEND_URL |
Allowed frontend origin |
Keep real values in .env, GitHub Actions secrets or the hosting provider's secret store. Do not commit them.
Backend:
cd ai-learning-backend/backend
npm test
npm run test:integrationFrontend:
cd ai-learning-frontend/frontend
npm test
npm run test:e2eLoad test:
k6 run load-tests/practice-session.jsCI:
.github/workflows/ci.yml.github/workflows/health-check.yml.github/workflows/prod-deploy.yml.github/workflows/staging-deploy.yml
The public repo is configured to ignore local secrets and generated artifacts:
.env.env.production- backend
.env - frontend
.env - test results
- Playwright reports
- local AI/editor tooling
- private security notes
- build caches and generated graph artifacts
Sensitive runtime values should be stored only in GitHub Secrets or deployment environment variables:
- MongoDB URI
- Claude/Anthropic key
- Razorpay key secret
- JWT secrets
- VAPID private key
- SMTP credentials
- Sentry DSN
Security-related implementation areas:
- JWT and refresh-token-family tracking
- CSRF double-submit protection
- Helmet security headers
- rate limiting
- Joi validation
- bcrypt password hashing
- role-based admin middleware
- AI output guardrails
.
|-- ai-learning-backend/backend/ # Express API, services, models, routes, tests
|-- ai-learning-frontend/frontend/ # React/Vite web app
|-- ai-learning-mobile/ # Flutter mobile client
|-- load-tests/ # k6 load tests
|-- scripts/ # deployment and smoke-test scripts
|-- docs/ # public project docs and assets
|-- docker-compose.yml
`-- README.md
Public docs live under docs/:
Copyright (c) Salma Siddiqua. Source is shared for portfolio review; no license is granted for reuse.





