§ masterplan.md
Concrete Photo Archives
A brutalist photography archive with massive thumbnails, stark captions and a search that feels like a database query.
01
App overview and objectives
A photography archive presented as an archive: contact-sheet density, hard grid, filenames and metadata visible, powerful search, and prints for sale. Function is the aesthetic.
02
The problem worth solving
Photographers hide their work behind slideshows that show ten images. An archive interface lets serious viewers dig through thousands, which is where the value of a body of work actually lives.
03
Target audience
- Primary — Photographers with deep archives and the editors and curators who mine them.
- Secondary — Collectors buying prints.
04
Roles and permissions
- Visitor — read-only public pages, can sign up.
- Member — owns their own records, cannot see other users' data.
05
Core features
- Dense contact-sheet grid with keyboard navigation
- Series pages with sequencing and notes
- Metadata-driven search: year, location, camera, subject, keyword
- Lightbox with EXIF, caption and download rules per image
- Print shop with sizes, editions and pricing
- Licensing enquiry with usage-type selection
Deliberately later
- Client lightboxes for editors
- Bulk licensing agreements
- Physical exhibition planner
06
Technical stack
React grid with virtualised rendering, a metadata database, and an image CDN with derivative sizes.
Why: Thousands of thumbnails must scroll at sixty frames per second; virtualisation and pre-generated derivatives are the only way.
Alternatives: A digital asset management platform (feature-complete, expensive and ugly) or a standard portfolio (cheap, cannot handle scale).
07
Conceptual data model
Photo — filename, capture date, location, camera, keywords, series, rights
Series — title, sequence, statement, cover
Edition — photo, size, paper, edition size, price, sold count
LicenseRequest — photo, usage type, territory, duration, status
08
Integrations
- Image CDN with on-the-fly resizing
- Payments for prints
- EXIF extraction pipeline
09
UI design principles
- Raw structure on display: visible grid, hard edges, black-on-white with one violent accent.
- System or grotesque type at extreme sizes; no decoration that isn't structural.
- Interactions are instant and blunt — no easing, no fades.
10
Security considerations
- Watermark preview derivatives; originals never publicly reachable.
- Signed URLs for any high-resolution delivery after purchase.
- Track and rate-limit bulk scraping attempts.
11
Development phases
Phase 1 — Prove the core
- — Dense contact-sheet grid with keyboard navigation
- — Series pages with sequencing and notes
- — Metadata-driven search: year, location, camera, subject, keyword
- — Static content and design system in place
- — Basic analytics
Phase 2 — Make it real
- — Lightbox with EXIF, caption and download rules per image
- — Print shop with sizes, editions and pricing
- — Licensing enquiry with usage-type selection
- — Accounts, sign-in and password reset
- — Empty, loading and error states everywhere
Phase 3 — Polish and launch
- — Performance, accessibility and SEO pass
- — Legal pages, contact route and 404 handling
- — Wire up: Image CDN with on-the-fly resizing
- — Wire up: Payments for prints
Phase 4 — Grow
- — Client lightboxes for editors
- — Bulk licensing agreements
- — Physical exhibition planner
12
Challenges and solutions
Risk — Metadata quality determines search usefulness
Solution — Ingest pipeline that extracts EXIF automatically and flags images missing keywords.
Risk — Grid performance at ten thousand images
Solution — Virtualised scrolling, tiny placeholder thumbnails, and pagination by series.
Risk — Print fulfilment logistics
Solution — Partner with a lab and start with three sizes and one paper.
13
Future expansion
- Estate and archive management for other photographers
- Institutional licensing
- Book publishing
14
Page list (13 pages)
- 01 PUBLIC Archive — The full contact-sheet grid.
- 02 PUBLIC Series — Curated sequences with statements.
- 03 PUBLIC Search — Metadata-driven filtering.
- 04 PUBLIC Prints — Editions, sizes and purchase.
- 05 PUBLIC About — Biography, rights and licensing policy.
- 06 AUTH Sign up — Create an account with email or a social provider.
- 07 AUTH Log in — Return to the account, with error and lockout states.
- 08 AUTH Reset password — Request a reset link and set a new password.
- 09 APP (signed in) Account settings — Profile, email, password, language and delete account.
- 10 PUBLIC Contact — Contact form plus real address, phone and email.
- 11 LEGAL & SYSTEM Privacy policy — What data is collected, why, and how to remove it.
- 12 LEGAL & SYSTEM Terms of service — Rules of use, liability and account termination.
- 13 LEGAL & SYSTEM 404 not found — Friendly dead end with search and links back.
15
Page map
PUBLIC AUTH APP (signed in) LEGAL & SYSTEM ────────── ───────────────── ─────────────────── ─────────────────── ├─ Archive ├─ Sign up └─ Account settings ├─ Privacy policy ├─ Series ├─ Log in ├─ Terms of service ├─ Search └─ Reset password └─ 404 not found ├─ Prints ├─ About └─ Contact key flows: Archive ──▶ Search Series ──▶ Archive Archive ──▶ Prints About ──▶ Prints
