Requirements
Create a system for a small university where students who pay for a premium subscription can study their own notes and prepare for teacher-created tests. They should be able to upload their notes (using screenshots or photos of printed or handwritten material) and receive automatically generated questions based on the content. The questions must be closely related to the original information, without any alterations. Students can provide their own responses to complete the generated test. Afterward, the system will evaluate their answers in either strict mode or lenient mode, depending on the student's selection, and return a final score. Students will be able to view their results, compare their answers against the reference answers, and update, delete, or retry the generated tests at any moment.
Users
Dozens, possibly hundreds.
Purpose
Build a full-stack AI-powered web application organized as a microservices architecture that lets students upload notes (handwritten or printed) and instantly receive automatically generated practice tests. The system extracts text from images using Google Cloud Vision AI, lets users review and edit the extracted content, generates questions through a Custom GPT model exposed by dedicated FastAPI microservices, and grades answers in either strict (literal match) or lenient (semantic match) mode. Users authenticate through a secure JWT-based flow with email verification and password reset, organize content in sections, manage notes, and run, retry, or delete tests. All requests are routed through a central API Gateway that validates tokens, enforces authorization, and decouples the frontend from the underlying services.
Features
- Authentication: The user can create an account using their email, confirm the account using a token sent via email, log in with their credentials, and reset the password if forgotten, using the same token-based method.
- Authorization: The user can only access their own information; every protected endpoint validates the JWT and the resource ownership before responding.
- Create Custom Tests: The user can create a test by filling out the test's information (name, description, subject) inside a specific section.
- Upload Notes (Images ≤10 MB): The user can upload up to 10 images per upload with a maximum of 10 MB per file. Text extraction is delegated to Google Vision AI, which provides strong support for printed and handwritten text recognition with built-in auto-rotation and layout understanding. The architecture can evolve into a Cloud Run-based OCR microservice when user load grows.
- Review the Extracted Information: Once the extracted content is received, the system presents it directly to the user for manual review and editing. There is no automatic restructuring; users manually organize and confirm the content before submission. A manual input mode is also available for users who prefer to type or paste their notes directly.
- Submit the Final Version to Custom GPT: After the user confirms their edited content, it is sent to a Custom GPT hosted on the GPTs platform through a dedicated FastAPI microservice that generates relevant, well-structured questions from the notes.
- Create a Custom Quiz Based on the Notes: Once the GPT returns the questions, the user can begin answering the quiz, choosing between strict mode (case-, space-, and punctuation-normalized literal match) or lenient mode (semantic equivalence). The system evaluates each submission using accuracy and number of valid answers.
- Learning Experience: After submission, the user can review their answers side by side with the correct ones, see per-question feedback hints, and the final accuracy score. The quiz can be reset and reused, retaining the generated questions.
- Adjustments: Users can freely update any test (redirected to the corresponding component), delete existing tests, and try out quizzes multiple times.
Software Architecture Characteristics
Explicit
- Scalability: Capability of the system to attend more users or requests as they grow.