A comprehensive UPSC preparation tracking application with REVISION MODE support, built for multiple users.
- Two default users: Abhiraj and Ajay
- Add new users dynamically
- Individual progress tracking for each user
- User-specific stats and accountability
- User selection homepage with profile cards
- Dashboard with exam countdowns:
- Prelims: May 24, 2026
- Mains: August 20, 2026
- Phase indicator (6 phases from Foundation to Mains Final)
- Quick stats display:
- Today's study hours
- Weekly progress
- Topics completed (out of 642 total)
- Study streak counter
- MATHS Optional: 218 topics
- Paper I: 118 topics (Linear Algebra, Calculus, ODE, PDE, Statics, Dynamics, etc.)
- Paper II: 100 topics (Abstract Algebra, Real Analysis, Complex Analysis, etc.)
- GS Subjects: 424 topics
- Geography: 82 topics
- History: 104 topics
- Polity: 89 topics
- Economy: 74 topics
- Environment: 43 topics
- Science & Tech: 17 topics
- Ethics (GS4): 15 topics
- Flexible subject selector (choose MATHS or GS topics daily)
- Library schedule time block tracker (10 AM - 6:30 PM weekdays)
- MATHS Optional topic-wise tracker with problem-solving counter
- GS subjects topic-wise tracker with answer writing integration
- Daily accountability & streak system
- Answer writing log
- Mock test scheduler
- Progress analytics with charts
- Weekly/monthly reviews
- Express.js with TypeScript
- SQLite database (better-sqlite3)
- Excel file import (ExcelJS)
- RESTful API
- React 18 with TypeScript
- Vite (fast dev server)
- TailwindCSS (styling)
- Lucide React (icons)
- date-fns (date handling)
- Axios (HTTP client)
- Zustand (state management - planned)
- Recharts (analytics - planned)
- Node.js (v18 or higher)
- npm
-
Navigate to project directory:
cd /Users/abhiraj/Documents/upsc-prep-app -
Backend Setup:
cd backend npm install npm run devThe backend will:
- Initialize SQLite database
- Import 642 topics from Excel file
- Start server on
http://localhost:3000
-
Frontend Setup (in a new terminal):
cd frontend npm install npm run devThe frontend will start on
http://localhost:5173 -
Open the app:
- Navigate to
http://localhost:5173in your browser - Select your user (Abhiraj or Ajay) or create a new user
- Start tracking your UPSC preparation!
- Navigate to
upsc-prep-app/
├── backend/
│ ├── src/
│ │ ├── config/
│ │ │ └── database.ts # SQLite setup & schema
│ │ ├── controllers/
│ │ │ └── users.controller.ts # User API logic
│ │ ├── routes/
│ │ │ └── users.routes.ts # API routes
│ │ ├── services/
│ │ │ └── excel-import.service.ts # Import topics
│ │ └── index.ts # Express server
│ ├── package.json
│ └── tsconfig.json
├── frontend/
│ ├── src/
│ │ ├── components/
│ │ │ ├── UserSelection.tsx # User selection page
│ │ │ └── Dashboard.tsx # Main dashboard
│ │ ├── services/
│ │ │ └── api.ts # API client
│ │ ├── types/
│ │ │ └── index.ts # TypeScript types
│ │ ├── App.tsx # Main app component
│ │ ├── main.tsx # Entry point
│ │ └── index.css # Global styles
│ ├── package.json
│ ├── vite.config.ts
│ └── tailwind.config.js
└── README.md
The app uses SQLite with the following key tables:
- users: Multi-user support (id, name, color_code, last_active)
- subjects: 9 subjects (MATHS Paper I/II, Geography, History, etc.)
- topics: 642 topics imported from Excel
- topic_progress: Per-user progress tracking
- time_blocks: Library schedule (weekday/weekend)
- daily_accountability: Daily check-ins and streaks
- answer_writing_log: Answer practice tracking
- mock_tests: Test scheduling and results
- current_affairs: Daily CA tracking
- weekly_reviews: Weekly reflection
GET /api/users- Get all usersGET /api/users/:id- Get user by IDGET /api/users/:id/stats- Get user statisticsPOST /api/users- Create new userPUT /api/users/:id/activity- Update last activeDELETE /api/users/:id- Delete user
More endpoints will be added as features are implemented.
- On first launch, you'll see the user selection screen
- Click on Abhiraj or Ajay to continue, or create a new user
- Each user has individual stats displayed:
- Current streak
- Topics started
- Week hours
- Monthly answers
- View days remaining until Prelims and Mains
- See current preparation phase
- Track today's study hours
- Monitor weekly progress
- View topics completed (out of 642)
- Check current streak
- Click "Switch User" button in dashboard to return to user selection
This app is optimized for REVISION MODE - for those who have previously studied the subjects:
- 3-4x faster than first-time learning
- Focus on speed over perfection
- Problem-solving focus (30-40 problems per MATHS topic)
- Answer writing practice from day one
- Smart recommendations based on revision status
- Phase-wise progression optimized for revision
- Prelims 2026: May 24, 2026
- Mains 2026: August 20, 2026
- Prelims: 100-110 / 200 (Cut-off: ~95-100)
- MATHS Mains: 380-420 / 500
- GS Mains: 450-500 / 1000
- Overall Mains: 850-930 / 1400
cd backend
npm run dev # Development with auto-reload
npm run build # Build TypeScript
npm start # Productioncd frontend
npm run dev # Development server
npm run build # Production build
npm run preview # Preview production buildThis is a personal project for UPSC preparation. Feel free to adapt it for your own use!
MIT
- The app automatically imports topics from
UPSC_COMPLETE_Syllabus_Coverage_final.xlsxon first run - Database file is created at
backend/upsc_prep.db - User selections are saved in browser localStorage
- All study data is stored locally in SQLite
Good luck with your UPSC 2026 preparation! 🎯📚