Course path

Small quests, real backend artifacts.

Phases stay large enough to tell the engineering story. Quests stay small enough to finish in one focused session.

World 0published

Java Delta

A Kotlin-to-Java kata that makes Java 25 differences explicit.

Estimate
2-3 evenings
Proof
A committed kata file with notes on records, Optional, streams, sealed switch, and virtual threads.
  • Records vs Kotlin data classes
  • Optional vs nullable types
  • Streams vs Kotlin collections
  • Sealed switch vs Kotlin when
  • Virtual threads are not coroutines
Kotlin-to-Java kata committed and tagged phase-0-done.
World 1published

Spring Skeleton

The first Palabas API endpoints under /api/v1.

Estimate
1 weekend
Proof
A wiring test, curl transcript, ADR-001, and a phase-1-done tag.
  • Generate the project
  • First controller
  • Constructor injection
  • Service and repository layers
  • PUT semantics
  • ADR-001
All four cinema endpoints proven by curl and Spring context wiring.
World 2Apublished

SQL First

Flyway migrations for the frozen cinema, screen, movie, and showtime model.

Estimate
1 weekend
Proof
Constraints, EXPLAIN transcripts, schema notes, and time notes.
  • Cinema schema
  • Movie and showtime schema
  • Check constraints
  • Dedup constraints
  • Postgres exclusion constraint
  • Indexes and EXPLAIN
schema-notes.md and time-notes.md explain each invariant with evidence.
World 2Blocked

Hibernate Mental Model

JPA entities mapped after the schema exists.

Estimate
1 weekend
Proof
Educational tests with annotated SQL logs.
  • Map the entities
  • Persistence context
  • Dirty checking
  • Lazy boundary failure
  • Transaction proxy traps
  • Optimistic locking
Behavior tests prove what Hibernate does before the article explains it.
World 2Clocked

Query Performance

N+1 failures, fixes, and a real geo query.

Estimate
1 weekend
Proof
Broken and fixed query-count tests plus a stable paginated endpoint.
  • Cause N+1
  • Fix with join fetch
  • Fix with EntityGraph
  • Fix with DTO projection
  • Pagination trap
  • Bounding-box geo query
The site can point to a test that proves the fix and the trap.
World 3locked

Invariant Testing + Oracle

Postgres and Oracle lanes that enforce the same domain rules differently.

Estimate
2 weekends
Proof
Concurrent overlap tests pass on both databases.
  • Postgres invariant tests
  • Oracle profile
  • Vendor Flyway split
  • Screen row mutex
  • Concurrent insert race
  • oracle-notes.md
The no-overlap rule survives two concurrent writes on both databases.
World 4locked

API Hardening

DTO boundaries, validation, ProblemDetail, and springdoc.

Estimate
1 weekend
Proof
ArchUnit and error-path tests keep the API honest.
  • DTO boundary
  • Overlap validator
  • ProblemDetail
  • Pagination metadata
  • Swagger
Every error path returns ProblemDetail and no controller exposes entities.
World 5locked

Security

Bearer-token resource server with ADMIN writes and USER reads.

Estimate
1 weekend
Proof
Five request outcomes are asserted through the real filter chain.
  • Resource server
  • JWT test key
  • Roles
  • Method security
  • CSRF stance
Anonymous, USER, ADMIN, expired, and garbage-token cases are all proven.
World 6locked

Observability

Operational debugging with logs, metrics, cache behavior, and request IDs.

Estimate
1 weekend
Proof
Two transcripts reconstruct failures and slow paths from telemetry alone.
  • Actuator
  • Prometheus metric
  • Structured logs
  • Correlation ID
  • Cache eviction
A failed request can be traced from ID to log, status, endpoint, and timing.
World 7locked

Shipping

CI, Docker image, read-only demo profile, and live HTTPS docs.

Estimate
1 weekend
Proof
Green CI, live Swagger, and v1.0.0 tag.
  • GitHub Actions
  • Oracle gate
  • ARM image
  • Demo profile
  • HTTPS
The live demo proves reads, docs, health, logs, and metrics without fake public writes.
World 8locked

Interview Mapping

A map from canonical interview questions to commits, tests, ADRs, and articles.

Estimate
2 evenings
Proof
INTERVIEW.md points to concrete artifacts instead of claims.
  • N+1 story
  • Transaction story
  • Concurrency story
  • Security story
  • Oracle story
Every senior-backend claim has a commit hash or test behind it.