Exam Buddy
This project came about because of a request from my wife. She needed a simple application to help her prepare for a few exams using a known set of questions and answers. I wanted to use the opportunity to get my hands dirty with Angular, work with APIs, and play around with architecture and implementation.
The first version of the app was nothing but ugly code—mostly because of a tight deadline ("I need this now...") - no authentication, only few tests (mainly for questions import), limited UI. I managed to deliver an MVP that did the trick, and it helped my wife achieve her goal: prepare for and pass her exams.
But it was bugging me. I had something that worked, but it looked terrible behind the scenes in terms of code, design, and architecture. So, I decided to spend some time making it right. I had just finished reading a great blog post by Milan Jovanović about Vertical Slice Architecture, and I figured this small application would be the perfect candidate to test that approach out in the field.
In comparison to the initial version the following features were added:
authentication through the e-mail and authentication code
exams historical results
categories for questions
create exam for category
On the API side:
minimal API plus Carter for endpoints registration in framework
MediatR to practice command-request approach
FluentValidation for requests verification
Mapster for request to command mapping
Entity Framework with PostrgreSQL and SQLite for tests
On the UI side:
- Angular with PrimeNg for components and icons
The AI (Codex) usage for this project:
convert original source of the questions and answers into the JSON format, so that we could load the data
validation rules for commands
styling on UI side plus some help with PrimeNg components setup
once TypeGen configured and used with the initial contracts the agent was instructed to add code for new ones
graphic on the landing page
