Skip to main content

Command Palette

Search for a command to run...

Exam Buddy

Updated
2 min read

Exam Buddy repository

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

Side projects

Part 1 of 1

A quick reference and brief overview of the side projects I work on in my free time.