Skip to content
Michael Lizzio

U-Fund: A New Page

A team project for requesting, approving and funding books for people in prison

  • Java 21
  • Spring Boot
  • Angular 17
  • TypeScript
  • REST API
  • Maven
  • JUnit
  • JSON file storage
  • Three-tier architecture

February–April 2025RIT SWEN 261 team project

Human-led
A New Page inmate request screen showing two requested books and their costs
An inmate could submit book requests and keep track of the books attached to their account.
What it is
A full-stack web app where people in prison request books, prison staff approve or deny them, and people outside pay for the approved ones.
Why I made it
It was my SWEN 261 team project at RIT, and one of my first times building a big app with several kinds of users.
What I did
I worked with Liam Pennino, Nina Sagawa and Selene Shen on both the Angular front end and the Spring Boot back end. We split up the features and made them fit together, with no AI.
How it turned out
It all worked by the final presentation, with at least 91% test coverage on every part of the back end, plus notifications we added on top of the requirements.

The details

Working as a team

This was a really fun project because the four of us had to work on both sides of a big system together. I worked with Liam Pennino, Nina Sagawa and Selene Shen. We split features between the Angular front end and the Spring Boot back end, and then had to make sure everything fit together.

It was real practice at dividing up work, reading other people's code, and building features that depended on a teammate's part. We didn't use any AI on it.

Three kinds of users

Inmates request books. Admins review those requests and approve or deny them with a message. Helpers browse the approved books, add them to a basket and check out (the payment was simulated). Each step sends the inmate a notification, which was one of the features we added on top of the requirements.

  • A New Page login and account creation screen with username, password, name, and role fields
    Logging in or making an account.
  • Administrator review queue showing inmate book requests with message, approve, and deny controls
    An admin reviewing book requests.
  • Helper book cupboard showing an approved book that can be added to the funding basket
    Approved books, ready for helpers.
  • Helper funding basket showing two requested books and a seven dollar checkout total
    A helper's basket before checkout.

How we built it

U-Fund architecture diagram showing the Angular client, Spring REST controllers, Java model and persistence layers, and file storage
How the layers fit together.

The back end is Java and Spring Boot, split into controllers, data access and models, and it saves everything to JSON files. The front end is Angular, with a page and a set of routes for each kind of user.

One request, start to finish

Sequence diagram tracing a helper's book search and add-to-basket request through the Angular client, Spring controller, services, and data access objects
A helper's search and add-to-basket request.

This diagram follows a helper searching for a book and adding it to their basket, from the Angular app, through the Spring controller and services, to the saved data and back.

Testing

We tested with JUnit, in the browser, and with curl. By the final presentation every part of the back end had at least 91% test coverage. We also ran SonarQube and went through what it found, and we listed the issues we'd clean up next.