A full-stack web app I built for Atomic Energy Central School-2, Mumbai. Students could log in with their school email to check exam results, sports prizes, CCA participation, and more.
3 servers, OTP login, CSV-backed data
Student enters school email → gets OTP via Gmail → OTP verified → data pulled from CSVs by roll number
What I used to build this
Component-based frontend with type safety. Used Context API for theming and auth state.
Fast dev server with hot reload. Way quicker than CRA for development.
Utility classes for styling. Made it easy to do dark/light mode across the whole app.
Two separate servers: one handles OTP auth, the other serves student data from CSVs.
Horizontal bar charts to show exam scores by subject. Makes it easy to see where you stand.
Sends OTPs through the school's Gmail. Also has an admin bypass for testing.
All the pages students could access
Exam results with bar graphs, score cards comparing your marks to the class median and topper. You can switch between exams (HY, MCQ-1/2/3, PT-1/2) and years.
Basic student info from the class CSV files: name, class, section, roll number, etc.
Sports achievements table with event, house, position, prize money, and points. Separate pages for primary and secondary students.
Co-curricular activity participation and results across years.
Which clubs a student is part of and their activities.
Study materials and resources students could download.
School circulars and notices, all in one place.
Students could submit feedback or complaints directly through the portal.
How it looked
Enter your school email, get an OTP. That's it.
4-digit OTP sent to your school email. Email is masked for privacy.
Bar chart with your scores, exam selector at the top, score cards below.
Same thing in dark mode. Every page supports both themes.
Table showing events, positions, prize amounts, and house points.
Dark mode version with the active page highlighted in the sidebar.
The main stuff
No passwords. Just enter your school email, get a 4-digit code, and you're in.
Toggle between themes. Your choice is saved so it sticks between sessions.
Picks up the current academic year automatically and looks back up to 2 years if needed.
Bar charts for your marks. Score cards show how you did vs the class median and the topper.
Sidebar collapses on smaller screens. Tested on phones and tablets.
Add -admin to any email and use OTP 0000 to get in without sending a real email.