Projects

A selection of backend and full-stack software projects built with Java, Spring Boot, Next.js and Node.js, demonstrating API design, business logic, testing, database integration and deployed application development.

Java & Spring Boot APIs

Focused backend projects demonstrating REST API design, business-rule modelling, layered architecture, validation, persistence and automated testing with Java and Spring Boot.

Activity Tracker API request flow from the client through the controller, validation, service and repository to the H2 database.

Activity Tracker API

A CRUD REST API for recording activities such as running, cycling, walking, jump rope and strength training.

Technologies

  • Java 21
  • Spring Boot
  • Spring Web MVC
  • Spring Data JPA
  • H2
  • MockMvc

Engineering highlights

  • Request and response DTOs keep the HTTP contract separate from JPA entities.
  • Controller, service and repository layers separate application responsibilities.
  • Bean Validation and MockMvc tests cover CRUD, validation and not-found behaviour.
Subscription Pricing API flow showing request validation, pricing calculation, structured errors and the JSON response.

Subscription Pricing API

A focused REST API that calculates monthly and annual subscription costs for tiered plans, with GBP as the explicit supported currency.

Technologies

  • Java 21
  • Spring Boot
  • Spring Web MVC
  • Bean Validation
  • JUnit
  • MockMvc

Engineering highlights

  • Request and response DTOs separate the HTTP contract from pricing logic.
  • Enums model subscription plans, billing cycles and the supported currency.
  • Global exception handling returns structured validation and currency errors.
Parking Calculator API flow showing the controller, service and interchangeable parking charge strategies.

Parking Calculator API

A compact REST API that calculates parking charges using interchangeable hourly, flat-rate and all-day tariff strategies.

Technologies

  • Java 21
  • Spring Boot
  • Spring Web MVC
  • Bean Validation
  • JUnit
  • Maven

Engineering highlights

  • A strategy interface and polymorphic implementations isolate tariff calculations.
  • The service selects a pricing strategy without coupling the controller to tariff implementations.
  • Structured bad-request responses and unit tests cover strategy and service behaviour.

Full-Stack Applications

Larger application projects built with technologies including Next.js, TypeScript, Node.js and modern databases, covering authentication, data modelling, deployment and user-facing product development.