Numbered cards for the text sections (1.1-1.3, 2, 4, 11, 12) on the overview, domain interfaces on the technical context, black-box descriptions for every building block, blocks mapped to nodes in the deployment view, crosscutting concepts on level 1, and a 1000-quality folder with the quality tree. The example test checks each section's card.
92 lines
3.1 KiB
Plaintext
92 lines
3.1 KiB
Plaintext
schema_version: 1
|
|
model:
|
|
id: cinema-tickets
|
|
name: Cinema Tickets
|
|
description: >
|
|
An arc42 example: seat booking for the fictional Lantern Cinemas.
|
|
1 Requirements, quality goals, stakeholders; 2 Constraints;
|
|
4 Solution strategy; 11 Risks; 12 Glossary: cards on this overview.
|
|
3 Context: this overview (business) and 0300-context (technical).
|
|
5 Building blocks: 0500-building-blocks, black boxes in registry/.
|
|
6 Runtime: 0600-runtime. 7 Deployment: 0700-deployment.
|
|
8 Crosscutting concepts: card on 0500-building-blocks/level-1.
|
|
9 Decisions: decisions/. 10 Quality: 1000-quality.
|
|
diagram_type: architecture
|
|
meta:
|
|
title: Cinema Tickets - business context
|
|
output: main.html
|
|
components:
|
|
- ref: customer
|
|
pos: [40, 60]
|
|
size: [130, 60]
|
|
- ref: usher
|
|
pos: [40, 260]
|
|
size: [130, 60]
|
|
- ref: tickets
|
|
pos: [280, 160]
|
|
size: [150, 60]
|
|
- ref: psp
|
|
pos: [540, 60]
|
|
size: [150, 60]
|
|
- ref: mail
|
|
pos: [540, 160]
|
|
size: [150, 60]
|
|
- ref: pos
|
|
pos: [540, 260]
|
|
size: [150, 60]
|
|
connections:
|
|
- { from: customer, to: tickets, label: books seats, variant: emphasis }
|
|
- { from: usher, to: tickets, label: checks in }
|
|
- { from: tickets, to: psp, label: payments, variant: security }
|
|
- { from: tickets, to: mail, label: tickets }
|
|
- { from: tickets, to: pos, label: seat sales }
|
|
cards:
|
|
- dot: orange
|
|
title: 1.1 Requirements
|
|
items:
|
|
- "Browse shows and pick seats on a seat map"
|
|
- "Hold seats, pay online, get QR tickets by e-mail"
|
|
- "Ushers check tickets in at the door"
|
|
- "Box-office POS sells from the same seats"
|
|
- dot: cyan
|
|
title: 1.2 Quality goals
|
|
items:
|
|
- "No seat is ever sold twice"
|
|
- "Checkout under 2 s at Friday peak"
|
|
- "Door check-in works offline"
|
|
- dot: amber
|
|
title: 1.3 Stakeholders
|
|
items:
|
|
- "Moviegoer: quick booking, tickets on the phone"
|
|
- "Usher: fast scans even without Wi-Fi"
|
|
- "Box-office staff: one seat map with online sales"
|
|
- "Lantern Cinemas management: fewer refunds, low cost"
|
|
- dot: slate
|
|
title: 2 Constraints
|
|
items:
|
|
- "Existing box-office POS stays"
|
|
- "Card data only at the provider"
|
|
- "Team of four; hosted in the EU"
|
|
- dot: emerald
|
|
title: 4 Solution strategy
|
|
items:
|
|
- "Node.js, PostgreSQL, Redis on managed EU k8s: fits a team of four"
|
|
- "Three services by job: booking, tickets, POS sync"
|
|
- "No double sale: Booking API sole seat owner (booking-owns-seat-inventory)"
|
|
- "Checkout speed: Redis holds with TTL (seat-holds-with-ttl)"
|
|
- "Offline check-in: signed QR codes (signed-qr-codes)"
|
|
- dot: rose
|
|
title: 11 Risks and technical debt
|
|
items:
|
|
- "Risk: POS vendor API is slow and undocumented"
|
|
- "Risk: forwarded QR e-mails, first scan wins"
|
|
- "Debt: POS Sync adapter has no automated tests"
|
|
- "Debt: QR key rotation needs an app release"
|
|
- dot: violet
|
|
title: 12 Glossary
|
|
items:
|
|
- "Show: one screening of a film in a hall"
|
|
- "Hold: a seat locked for one customer"
|
|
- "Check-in: first valid scan of a ticket"
|
|
- "POS: point-of-sale till at the box office"
|