01
Product engineering · modernization
PhotoGram
A real photo product shaped by the work of untangling legacy code, data contracts, and runtime dependencies.
Validation in progress
- Period
- 2021 — present
- Role
- Product engineer

Problem
01As a product grows, it becomes more than a codebase. Data contracts, infrastructure dependencies, and earlier runtime choices have to keep working together.
Constraints
- Modernize the runtime without losing existing behavior.
- Treat migrations and health signals as evidence, not promises.
- Keep the path reproducible across local, CI, and server environments.
Engineering decisions
- Keep schema changes explicit through Flyway migrations.
- Make DB, Redis, media storage, liveness, and readiness part of the runtime contract.
- Verify the application with its service dependencies in CI.
Implementation
- A Spring Boot application built with the Java 25 toolchain and Gradle.
- MariaDB, Redis, media storage, Actuator health groups, and Docker Compose runtime definitions.
- React client work and backend contract tests remain separate verification surfaces.
Verification / evidence
Repository baselineobserved
The source repository contains the Java 25 toolchain and Gradle build.
Verification pathobserved
The CI workflow checks build, service health, migrations, and test reports.
External deploymentdeferred
Public deployment state remains a separate live verification target.
Result / current state
PhotoGram is the first case study: a product shown through its modernization decisions and the checks that support them.