Skip to content

Commit 7cff1f3

Browse files
jnrahmeclaude
andcommitted
Document image caching, linting, and dynamic type in README and showcase
Add decision-table rows and showcase cards for expo-image caching, ESLint/Prettier gates, and capped dynamic type so the docs match the shipped implementation. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 66af46d commit 7cff1f3

2 files changed

Lines changed: 31 additions & 2 deletions

File tree

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,9 @@ flowchart LR
167167
| Zod at the mock API boundary | Mock data is treated like real backend data: it is validated before reaching the UI, and TypeScript types are inferred from the schemas. | [schema.ts](src/domain/orders/schema.ts), [ordersApi.ts](src/services/ordersApi.ts) |
168168
| FlashList for the timeline | Order history is a list surface that can grow. Virtualization is included now so the implementation scales beyond seed data. | [OrdersListScreen.tsx](src/features/orders/OrdersListScreen.tsx) |
169169
| Native share with web fallback | The primary experience is mobile. Web preview still behaves reasonably through `navigator.share` or clipboard fallback. | [calendar.ts](src/domain/orders/calendar.ts), [shareCalendar.ts](src/services/shareCalendar.ts) |
170+
| expo-image for cached artwork | Remote event images are the heaviest content. A shared wrapper adds memory/disk caching, a blurhash placeholder, and a fade so cards never flash blank. | [CachedImageBackground.tsx](src/components/CachedImageBackground.tsx) |
171+
| Capped dynamic type on display text | Large headings cap their font multiplier so big accessibility text sizes do not break fixed layouts, while body text scales freely. | [tokens.ts](src/theme/tokens.ts) |
172+
| ESLint and Prettier as quality gates | Linting and formatting run locally and in CI so style and common bugs are caught before review, not during it. | [eslint.config.js](eslint.config.js), [.prettierrc.json](.prettierrc.json) |
170173

171174
## AI-Assisted Delivery Model
172175

docs/index.html

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -995,6 +995,23 @@ <h3>FlashList anticipates real order volume.</h3>
995995
ready for larger data sets without changing the screen API.
996996
</p>
997997
</article>
998+
<article class="card">
999+
<h3>expo-image for cached artwork.</h3>
1000+
<p>
1001+
Remote event images load through a shared
1002+
CachedImageBackground: memory and disk caching, a blurhash
1003+
placeholder, and a short fade. The heaviest content on the
1004+
screen never re-downloads or flashes blank on scroll.
1005+
</p>
1006+
</article>
1007+
<article class="card">
1008+
<h3>Dynamic type without broken layouts.</h3>
1009+
<p>
1010+
Large display text is capped with a maximum font multiplier so
1011+
big accessibility text sizes never overflow fixed layouts,
1012+
while body text stays free to scale.
1013+
</p>
1014+
</article>
9981015
<article class="card">
9991016
<h3>Native screenshots prove the surface.</h3>
10001017
<p>
@@ -1064,6 +1081,14 @@ <h3>Tests target behavior, not snapshots.</h3>
10641081
validation, share fallbacks, and list/detail interactions.
10651082
</p>
10661083
</article>
1084+
<article class="card">
1085+
<h3>Linting and formatting are enforced.</h3>
1086+
<p>
1087+
ESLint (expo config) and Prettier run locally and in CI.
1088+
`npm run verify` chains strict typing, linting, and tests, and
1089+
CI fails on any unformatted file.
1090+
</p>
1091+
</article>
10671092
<article class="card">
10681093
<h3>Runtime schemas protect the boundaries.</h3>
10691094
<p>
@@ -1076,8 +1101,8 @@ <h3>Runtime schemas protect the boundaries.</h3>
10761101
<h3>Expo compatibility is verified.</h3>
10771102
<p>
10781103
Node 22, Expo SDK 56, React Native 0.85, React Navigation,
1079-
TanStack Query, FlashList, and SDK-matched packages are encoded
1080-
in the repo and checked before push.
1104+
TanStack Query, FlashList, expo-image, and SDK-matched packages
1105+
are encoded in the repo and checked before push.
10811106
</p>
10821107
</article>
10831108
<article class="card">
@@ -1090,6 +1115,7 @@ <h3>Mobile resilience is built in.</h3>
10901115
</article>
10911116
</div>
10921117
<pre class="code-strip" aria-label="Verification commands"><code><b>$</b> nvm use
1118+
<b>$</b> npm run format
10931119
<b>$</b> make verify
10941120
<b>$</b> make expo-check</code></pre>
10951121
</div>

0 commit comments

Comments
 (0)