School Practical Tests Web Application
Built a web application for schools to create, administer, and grade practical tests online, streamlining the assessment process for teachers and students.
Overview
Developed a comprehensive web application that allows schools to manage practical assessments digitally. Teachers can create tests with various question types, assign them to classes, and track student progress in real time. Students complete assessments through an intuitive interface with auto-saving and timed submissions.
Problem
Schools were relying on paper-based practical tests that were difficult to distribute, track, and grade consistently. Teachers spent excessive time on manual grading and had no easy way to analyze student performance across assessments.
Constraints
- Must work reliably on school networks with limited bandwidth
- Support for multiple question types including file uploads and code submissions
- Role-based access for administrators, teachers, and students
- Must handle concurrent test-taking by entire classrooms
- Simple enough for non-technical teachers to use
Approach
We built a full-stack web application with a clean, intuitive interface prioritizing ease of use. The backend handles user management, test creation, submission processing, and automated grading where possible. The frontend provides separate dashboards for teachers and students with real-time status updates.
Key Decisions
Server-rendered web application
Prioritized reliability over fancy UI — school networks can be unreliable, so minimizing client-side JavaScript reduced failure points. Server-rendered pages work even on older devices common in schools.
- SPA with React — richer UI but heavier client requirements
- Mobile app — too many device types to support across schools
Role-based access control from day one
Schools have clear hierarchies (admin, teacher, student) and strict data access requirements. Building RBAC into the core architecture prevented security issues and simplified feature development.
- Simple admin/user split — insufficient granularity for school use cases
Tech Stack
- Node.js
- Express
- MongoDB
- HTML/CSS
- JavaScript
- Bootstrap
Result & Impact
- 60%Grading time reduced
- Cut in halfTest administration time
- Real-timeStudent completion tracking
Teachers reported significantly less time spent on administrative tasks around testing. The real-time progress tracking allowed them to identify struggling students during the test itself, enabling immediate intervention.
Learnings
- Building for low-bandwidth environments forces you to write better, leaner code
- User testing with actual teachers revealed assumptions about 'intuitive' design that were completely wrong
- Auto-save functionality is critical for any assessment platform — students lose work and lose trust fast
Technical Deep Dive
The application uses a straightforward MVC architecture with Express handling routing and MongoDB storing test definitions, submissions, and user data. Authentication uses session-based auth with role middleware that gates access at the route level.
Test creation uses a flexible schema that supports multiple question types — multiple choice, short answer, file upload, and practical code submissions. The grading engine handles auto-grading for objective questions and provides a streamlined interface for teachers to grade subjective responses.
Real-time features like live submission tracking use server-sent events rather than WebSockets, keeping the infrastructure simple and compatible with restrictive school network configurations.