CityCycle
A small fictional product used to show RFC, ADR, and arc42 — and what you lose if you skip them.
CityCycle is a fictional docked bike-sharing service for the city of Riverside. Riders unlock a bike, ride, and return it. Operators restock stations. Months later, the city adds electric bikes.
There is no application code here. The documents are the point. Start with the tour: it walks the same files in the order they were written, and names the advantage of each one. New projects should start from the empty template, not from this repository.
Read in this order
Section titled “Read in this order”- Goals — what CityCycle is for, and the three quality goals that drive the design.
- Context diagram and section 3 — who touches the system.
- Solution strategy — how those quality goals become technical choices.
- Container diagram and building blocks — the deployable pieces.
- The ADRs, in order:
- RFC 0001 — add electric bikes — a later change with real trade-offs.
- ADR 0003 — the decision that RFC produced.
- RFC 0002 — hold a bike while walking to it — the next change, still in review. ADR 0006 is only proposed, and the runtime view has not been rewritten.
That sequence is the practice: map the system first, record durable choices as ADRs, propose ambiguous work as an RFC, and let an approved RFC leave new ADRs behind. Step 8 is what the docs look like in the middle of a change.