Photogram
An unfinished microservices study: a gateway, service discovery and a user service wired together. The remaining services are scaffolds.
- Role
- Solo: architecture study
- Year
- 2024
- Status
- Paused
- Type
- Systems study
01Problem
Why it exists
After building Pulse as a single application, I wanted to see what the same kind of product costs when it is split into services: discovery, routing, and identity that has to cross a network boundary.
02Approach
How I went about it
Start with the platform pieces, then add services one at a time behind the gateway. I got as far as the first one.
03Architecture
Decisions that shaped it
Diagram aboveSolid boxes run. Dashed boxes are scaffolds with no behaviour yet.
01
Discovery before services
A Eureka server runs first; the gateway and the user service register with it, and the gateway resolves routes by service name rather than by address.
02
One real service
The user service registers a user with validated input and a hashed password, and exposes a status route through the gateway. Token issuance from the authorisation server is marked as a to-do in the code.
03
The rest is outline
Post, feed, email verification and password reset are runnable Spring applications with empty controllers and the intended endpoints written as comments.
04Build
What it does
- Gateway routing through service discovery works end to end for one route
- User registration with validation and password hashing
- Eight separately buildable Spring Boot modules
- Services
- Java 21 · Spring Boot 3.2 · Spring Data JPA
- Platform
- Spring Cloud Gateway · Netflix Eureka
- Scaffolded
- Spring Authorization Server
05Outcome
Where it stands
Paused, and listed here as what it is: a study, not a product. Roughly five hundred lines of Java.
The useful lesson: the platform work arrived long before the first feature did. That is the trade-off LedgerOne’s first decision record weighs before choosing a monolith.
Checked against the repository on 11 November 2026