← All projects

VidyaArena

A K-12 EdTech platform: adaptive quizzes, gamified learning arenas, a board-wise book library, and an AI tutor that runs on local LLMs at zero API cost. Java 21 backend with 186+ endpoints.

Role
Solo builder & operator
Status
Live
Backend
Java 21 · Spring Boot 3.5

Why I built it

Think Khan Academy meets Quizlet, built for Indian school students. K-12 EdTech in India has a brutal constraint: the market is massive but extremely price-sensitive. A per-student AI bill of even a few rupees a day kills the business model. So the interesting engineering question was not "can I add AI tutoring", it was "can I add AI tutoring that costs me nothing per query".

VidyaArena is also my proof that I am not a one-stack engineer. My daily tools are Python, TypeScript and Rust; this platform is Java 21 and Spring Boot, chosen deliberately for its ecosystem maturity, and built to the same production standard.

What I built

Adaptive quiz arenas

Gamified quiz battles with placement-quiz onboarding: new students take a calibration quiz, and difficulty adapts from there. XP and progress keep streaks alive.

Zero-cost AI tutor

A RAG chatbot that answers syllabus questions from the actual chapter content: Ollama running local models with pgvector retrieval, feature-flagged, at $0 per query.

Role-based platform

Student, Teacher and Admin roles with JWT auth and OTP verification flows backed by Redis. Teachers manage content, students learn, admins run the platform.

186+ endpoint API

Spring Boot 3.5 backend with 38 controllers covering quizzes, study plans, flashcards, doubt solving, progress tracking and gamification.

Board-wise book library

A PDF library organized by board, class and subject, from junior classes upward, served directly without heavyweight infrastructure.

Freemium + referral commerce

Free and Pro tiers on Razorpay, plus a salesperson coupon system where discounts and commissions are computed server-side, invisible to the student.

Architecture

A React + Vite SPA talks to a Spring Boot API over REST and STOMP websockets. Everything server-side lives on a single Oracle Cloud VM in Singapore: the API, Postgres 16, Redis, and the Ollama LLM runtime with pgvector for retrieval. That co-location is the point: the AI tutor never leaves the box, so it never generates an API bill.

Students Teachers · Admins React + Vite SPA MUI · React Query · STOMP ORACLE CLOUD VM · SINGAPORE Spring Boot 3.5 API Java 21 · 38 controllers PostgreSQL 16 JPA · pgvector embeddings Redis OTP · caching Ollama local LLM RAG tutor · $0 per query Book library (PDF store) Razorpay Free / Pro tiers Coupon engine salesperson commissions

Stack: Java 21, Spring Boot 3.5, Spring Data JPA/Hibernate, PostgreSQL 16, Redis, JWT, React + Vite + TypeScript, Tailwind + MUI, React Query, STOMP websockets, Ollama, pgvector, Razorpay, Oracle Cloud, git-submodule monorepo.

Hard problems I actually hit

AI tutoring for a market that cannot pay for tokens

Cloud LLM pricing makes per-student AI tutoring unviable in Indian K-12. My answer: run the models myself. Ollama serves a local model on the same VM, pgvector retrieves the relevant chapter chunks, and the whole RAG loop costs nothing per query. It ships behind a feature flag so I can tune quality before exposing it widely. Marginal cost per doubt answered: zero.

A monorepo that silently lost its code

The platform is a git-submodule monorepo (api, web, app, docs). At one point the .gitmodules file went missing, leaving broken gitlinks: clones looked fine but contained no code. I rewired every submodule to the org remotes and documented the recovery path. Painful lesson in why submodule state deserves the same review attention as source code.

OTP auth that does not leak or linger

Phone/email OTP flows fail in ugly ways: reuse, brute force, stale codes. I built the flow on Redis with strict TTLs, single-use invalidation on verify, and JWT issuance only after the OTP round-trip completes. Redis also carries hot caches, so one small dependency covers two jobs.

Selling through people, not just pages

In this market, subscriptions sell through salespeople who visit schools. I designed a coupon system with hidden commissions: each salesperson gets codes, the student sees a clean discount, and the commission ledger is computed server-side where it cannot be inspected or gamed from the client. Business logic like this is a security surface too.

Proving range beyond my home stack

Everything else I run is Python, TypeScript or Rust. Building 38 controllers of idiomatic Spring Boot, with JPA entity design, layered services and role-based security, was a deliberate choice to stay honest as an engineer: the fundamentals transfer, and the resume line "Java in production" is backed by a running system.

By the numbers

186+
API endpoints
38
Spring controllers
326
Subtopics authored for Class 6
$0
Monthly AI cost (local LLMs)
← All projects Next: ResumeBanao →