Courage Library
Co-founding and engineering an EdTech platform for India's government exam aspirants — from zero to 1,200+ articles, mock tests, and a physical study center.
What is Courage Library?
Courage Library is a hybrid EdTech platform designed for aspirants preparing for Indian government competitive exams — SSC, Banking, Railway, and Defence. It combines an online learning platform with a physical study center in Kanpur Nagar, UP.
I co-founded this with four co-founders and took ownership of the entire technical side — from day one architecture decisions to ongoing feature development.
What we set out to solve
Government exam aspirants in tier-2 and tier-3 cities like Kanpur face a fragmented preparation experience — expensive coaching institutes, scattered online resources with no quality control, and zero personalized tracking.
Expensive coaching
Quality offline coaching in Kanpur costs ₹20,000–₹50,000+ per course, out of reach for most aspirants.
Scattered resources
No single trusted source for SSC + Banking + Railway + UPSC content with consistent quality and updates.
No progress tracking
Aspirants had no way to measure performance, identify weak areas, or benchmark against peers.
No local study community
Solo preparation at home with no structured environment, accountability, or peer learning.
What we built
Courage Library delivers a dual model — a free-to-access online platform with structured content + an affordable physical study center in Kanpur. I was responsible for the full technical implementation.
Structured content library
1,200+ articles organized by exam type, topic, and difficulty. Built a custom content pipeline for structured CSV-to-database upload using Supabase.
Mock test system
Full-featured mock test dashboard with timer, scoring, leaderboard with podium layout, percentile ring, and skeleton loaders. Built as separate HTML/CSS/JS files per architectural requirements.
Leaderboard & analytics
Percentile-based leaderboard, rank tracking, and performance comparison against other aspirants — mobile-optimized stat pills for small screens.
Physical study center
Launched a physical library and study space in Kanpur Nagar, UP — providing a structured environment for offline preparation alongside the digital platform.
Fully responsive & fast
Optimized for mobile-first usage since most aspirants access the platform on budget Android devices. Built with TailwindCSS + Vanilla JS — no heavy frameworks.
Why these choices?
Supabase over Firebase
Postgres-based, generous free tier, real-time subscriptions, and row-level security. The SQL interface made content querying significantly easier than Firestore's document model for structured exam data.
Vanilla JS over React
No build pipeline overhead. Faster initial load for users on slow connections. Easier to hand off to non-React-familiar co-founders for small changes without a full dev environment.
TailwindCSS for speed
Utility-first approach cut CSS authoring time by ~60% compared to custom CSS. PurgeCSS kept the production bundle small despite Tailwind's large class library.
Vercel for deployment
Zero-config deployment from GitHub, automatic HTTPS, edge CDN, and preview deployments for each PR. Free tier covers full traffic needs.
What was hard
Content pipeline at scale
Ingesting 1,200+ articles with consistent structure, UUID-based tagging across five subject sections, and deduplication required building a Node.js CSV-to-Supabase pipeline — done manually at first, then automated.
Mock test architecture
Building a fair, tamper-resistant timer and scoring system without a backend — using Supabase RLS, client-side state, and submission timestamps to prevent score manipulation.
Balancing coursework + startup
As a 3rd year B.Tech student with coursework obligations, managing feature development, content strategy, and business decisions simultaneously required strict prioritization.
Mobile performance on slow networks
Target users are on budget phones with 2G/3G connections. Required aggressive image optimization, lazy loading, and deferring non-critical JS to hit acceptable load times.
What I took away
Shipping fast and iterating beats waiting for perfection. Version 1 was rough — the current platform looks nothing like it.
Talk to users constantly. Several features we almost built were not what aspirants actually needed. Direct feedback saved weeks.
Architectural decisions compound. The choice to use Vanilla JS initially made early development fast but introduced friction when adding complex interactive features.
Google Tag Manager + analytics from day one. Without it you're guessing. Even basic pageview data changed our content strategy significantly.
Want to work together?
I'm always open to interesting projects, internships, and collaborations.