Corner Cafe — Project Status
July 28, 2026
Corner Cafe — Project Status
A local-first iOS reading tracker. Books live on three shelves — reading, read, to-be-read — with progress stored once as a fraction so a paperback, an ebook and an audiobook of the same title share a single position. Everything stays on device; CSV and JSON export exist so the library is never trapped. The visual language is taken from a set of reference screenshots: warm parchment, bordered cards with no shadow, and a slab-serif monospace carrying the numerals.
Status at a glance
Two of three build phases complete. The logic layer and the design system are both merged to main, with 135 tests passing and the app building clean. The five real screens are next. What exists today is a design-system gallery — every component on one screen, ready to be assembled into the app.
The visual system, captured from the simulator, shows the reference palette translated into working components: parchment ground, bordered cards with no shadow, Space Mono carrying the numerals, and a segmented progress meter whose blocks quantise while a marker rule shows the exact value. A dark scheme was designed rather than derived, since the reference screenshots were light-only. At the largest accessibility text size the stat strip stacks vertically, mono labels fall back to a sans face, the numerals deliberately stay monospaced because they carry the design, and the tab bar drops to icons rather than truncating its labels.
Current phase
Phase: Phase 2 of 3 complete — logic layer and design system merged; screens not started
Latest verified checkpoint: Design system merged to main at 48d4ecb; 135 tests passing and xcodebuild succeeding on a fresh run
Recently completed
- Design system merged to main — 10 components, both typefaces bundled
[verified]- Palette, Typography, CafeCard, StatusPill, SegmentedMeter, StatStrip, ChipStrip, UnitToggle, Heatmap, FloatingTabBar, plus a gallery screen. Space Mono and Mulish bundled and confirmed registered in the built app's Info.plist.
- Logic layer complete — models, statistics, CSV/JSON transfer, Open Library client
[verified]- CornerCafeCore builds and tests without a simulator: SwiftData models with user-editable shelves, progress unit conversion, daily progress, streaks, heatmap bucketing, reading goals, a Goodreads-superset CSV codec, an upsert-only importer, lossless JSON snapshots.
- Bundled typefaces confirmed rendering, not silently falling back
[verified]- Checked by inspecting simulator screenshots rather than trusting a green build — a misconfigured font bundle compiles fine and renders in the system font. Space Mono's slab serifs are visibly present.
- Import can no longer run without a backup
[verified]- The importer takes a required backup closure called before any write. The two-argument form was deleted rather than deprecated, so a call site that forgets to back up fails to compile.
- Accessibility behaviour verified at the largest text size
[verified]- Stat strip stacks vertically, mono labels fall back to the sans face, numerals stay monospaced, and the tab bar shows icons rather than truncating to unreadable fragments.
In progress
- Owner testing the design system gallery on device and simulator
[user-reported]- Merged to main specifically so it can be run and judged before screens are built on top of these components.
Remaining work / roadmap
- Phase 3 — the five screens: Now, Library, Add Book, Stats, Book detail, Settings
[planned] - Schema migration plan before the first build that writes to a real device
[planned]- Versioned schema and a migration plan are specified but not built. No store has ever been written outside in-memory tests, so nothing is at risk yet — but this must land before real data exists.
- Wire the import backup closure to actual snapshot files on disk
[planned]- The logic layer now forces a backup step; the app layer still has to write the timestamped snapshot it calls for.
- Cover art download and on-disk caching
[planned] - Barcode scanning — scan an ISBN to add a book
[planned]- Deliberately deferred, not rejected. Small once the Add Book screen exists.
Blockers, decisions, human gates
- Bold Text accessibility setting is unverified
[observed]- The simulator tooling on this Xcode exposes no Bold Text toggle, so this is the one accessibility path with no evidence behind it. Needs a check on a real device.
- Landscape and iPad layouts unverified
[observed]- The app targets iPhone and iPad, but every screenshot so far is portrait iPhone. The horizontally scrolling heatmap and the chip strip are the likely casualties.
- One calendar instance must be threaded through the screens
[planned]- Streak and heatmap lookups match on start-of-day keys. If the app passes different calendars or time zones to the functions that produce and consume those keys, streaks silently read zero — no crash, no error, just a wrong number.
Verification evidence
- swift test → 135 tests in 15 suites passed, zero failures
[verified] - xcodebuild (iOS Simulator, no signing) → BUILD SUCCEEDED
[verified] - Test suite re-run under UTC+14 and UTC−11 to prove date handling is timezone-safe
[verified]- A date bug had exported calendar dates in UTC while everything else used the reader's local calendar, which silently moved books out of the correct year's reading goal.
- Simulator screenshots captured and inspected in light, dark, and the largest accessibility size
[verified] - 46 commits on main; working tree clean
[verified]
Project documents
- Design spec:
docs/superpowers/specs/2026-07-27-corner-cafe-design.md - Logic layer plan:
docs/superpowers/plans/2026-07-27-corner-cafe-core.md - Design system plan:
docs/superpowers/plans/2026-07-28-corner-cafe-design-system.md - Carry-forward gates and accepted limitations:
docs/superpowers/plans/CARRY-FORWARD-TO-PLAN-2.md - Screenshots:
docs/design-system/
Freshness & provenance
- Last updated: 2026-07-28 19:38 UTC.
- All verified claims come from commands run against main at 48d4ecb in this session, not from earlier reports.
- Simulator screenshots of the design system (light, dark, and the largest accessibility text size) live in the project repo at docs/design-system/ rather than on this page.
- Ten defects were found and fixed during the build, none of which a passing test suite would have caught on its own — among them a Goodreads import that reset real reading progress to zero, a backup restore that could leave an empty store, and calendar dates written in the wrong timezone.
- Evidence labels:
[verified]fresh commands/reviewed commits ·[observed]in code/git, not runtime-validated ·[user-reported]confirmed by owner, not independently verified ·[planned]spec'd, not built ·[stale]docs conflict with current state.