DEV Community

Building CannyCart Series' Articles

Back to Ibukun Demehin's Series
I'm building a shopping app you talk to — here's the stack
Cover image for I'm building a shopping app you talk to — here's the stack

I'm building a shopping app you talk to — here's the stack

Comments
4 min read
One backend, three environments: the 4 KiB limit that redesigned my EAS setup
Cover image for One backend, three environments: the 4 KiB limit that redesigned my EAS setup

One backend, three environments: the 4 KiB limit that redesigned my EAS setup

Comments
7 min read
Every icon vanished: a Metro debugging story (featuring a babel package from 2017)
Cover image for Every icon vanished: a Metro debugging story (featuring a babel package from 2017)

Every icon vanished: a Metro debugging story (featuring a babel package from 2017)

Comments 3
5 min read
My main branch wouldn't deploy: CloudFormation forensics on Amplify Gen 2
Cover image for My main branch wouldn't deploy: CloudFormation forensics on Amplify Gen 2

My main branch wouldn't deploy: CloudFormation forensics on Amplify Gen 2

Comments
6 min read
"Milk, and a dozen eggs": a voice-to-Claude shopping list that never trusts the AI
Cover image for "Milk, and a dozen eggs": a voice-to-Claude shopping list that never trusts the AI

"Milk, and a dozen eggs": a voice-to-Claude shopping list that never trusts the AI

Comments
6 min read
Light, dark, and system themes in Expo + NativeWind — the whole app, from one setting
Cover image for Light, dark, and system themes in Expo + NativeWind — the whole app, from one setting

Light, dark, and system themes in Expo + NativeWind — the whole app, from one setting

Comments
6 min read
Working offline in the cereal aisle: TanStack Query offline on Amplify
Cover image for Working offline in the cereal aisle: TanStack Query offline on Amplify

Working offline in the cereal aisle: TanStack Query offline on Amplify

Comments
6 min read
I deleted the drag-and-drop library and shipped four buttons instead
Cover image for I deleted the drag-and-drop library and shipped four buttons instead

I deleted the drag-and-drop library and shipped four buttons instead

Comments
5 min read
Whose categories are these? Making an LLM's throwaway labels feel like real things
Cover image for Whose categories are these? Making an LLM's throwaway labels feel like real things

Whose categories are these? Making an LLM's throwaway labels feel like real things

Comments
6 min read
You can't GROUP BY in DynamoDB — so the client does the counting
Cover image for You can't GROUP BY in DynamoDB — so the client does the counting

You can't GROUP BY in DynamoDB — so the client does the counting

Comments
6 min read
A template is just a list with a flag: reusable shopping lists
Cover image for A template is just a list with a flag: reusable shopping lists

A template is just a list with a flag: reusable shopping lists

Comments
7 min read
The polish pass: smart add, pull-to-refresh, sticky headers, tighter archive
Cover image for The polish pass: smart add, pull-to-refresh, sticky headers, tighter archive

The polish pass: smart add, pull-to-refresh, sticky headers, tighter archive

Comments
7 min read
The Expenses tab MVP: prices ride on the items you already have
Cover image for The Expenses tab MVP: prices ride on the items you already have

The Expenses tab MVP: prices ride on the items you already have

Comments
6 min read
Point your camera at a receipt and Claude reads it
Cover image for Point your camera at a receipt and Claude reads it

Point your camera at a receipt and Claude reads it

Comments
8 min read
Barcode lookup: a provider chain with an LLM as the normaliser
Cover image for Barcode lookup: a provider chain with an LLM as the normaliser

Barcode lookup: a provider chain with an LLM as the normaliser

Comments
7 min read
What your receipts know: price history, "last paid", trends, savings
Cover image for What your receipts know: price history, "last paid", trends, savings

What your receipts know: price history, "last paid", trends, savings

Comments
7 min read
Your app hardcodes GBP: currency as a first-class preference
Cover image for Your app hardcodes GBP: currency as a first-class preference

Your app hardcodes GBP: currency as a first-class preference

Comments
6 min read
The purchase ledger: when did you actually buy that?
Cover image for The purchase ledger: when did you actually buy that?

The purchase ledger: when did you actually buy that?

Comments
6 min read
Budgets live on months, not lists: the period-first Expenses rework
Cover image for Budgets live on months, not lists: the period-first Expenses rework

Budgets live on months, not lists: the period-first Expenses rework

Comments
6 min read
Photograph a paper list: the third input modality
Cover image for Photograph a paper list: the third input modality

Photograph a paper list: the third input modality

Comments
6 min read
The EAS build that demanded four packages that never existed
Cover image for The EAS build that demanded four packages that never existed

The EAS build that demanded four packages that never existed

Comments
5 min read
Tablet-worthy without a redesign: the content-column pass
Cover image for Tablet-worthy without a redesign: the content-column pass

Tablet-worthy without a redesign: the content-column pass

Comments
5 min read
Push notifications and the weekly shopping reminder
Cover image for Push notifications and the weekly shopping reminder

Push notifications and the weekly shopping reminder

Comments
5 min read
The compliance sprint nobody blogs about
Cover image for The compliance sprint nobody blogs about

The compliance sprint nobody blogs about

Comments
5 min read
Your prod data, faked: one-way replication with deterministic PII masking
Cover image for Your prod data, faked: one-way replication with deterministic PII masking

Your prod data, faked: one-way replication with deterministic PII masking

Comments
6 min read
The Home dashboard: one screen that earns the default tab
Cover image for The Home dashboard: one screen that earns the default tab

The Home dashboard: one screen that earns the default tab

Comments
5 min read
Polish pass #2: a dozen small things that make it feel real
Cover image for Polish pass #2: a dozen small things that make it feel real

Polish pass #2: a dozen small things that make it feel real

Comments
6 min read
Branded Cognito emails: the customMessage trigger in 20 minutes
Cover image for Branded Cognito emails: the customMessage trigger in 20 minutes

Branded Cognito emails: the customMessage trigger in 20 minutes

Comments
4 min read
Scan now, link later: receipts that wait for the list
Cover image for Scan now, link later: receipts that wait for the list

Scan now, link later: receipts that wait for the list

Comments
6 min read
Shipping to both stores: the release runbook
Cover image for Shipping to both stores: the release runbook

Shipping to both stores: the release runbook

Comments
6 min read
Moving a live backend to a fresh AWS account
Cover image for Moving a live backend to a fresh AWS account

Moving a live backend to a fresh AWS account

Comments
5 min read
Account deletion for real: immediate, guest round-trip, admin-initiated
Cover image for Account deletion for real: immediate, guest round-trip, admin-initiated

Account deletion for real: immediate, guest round-trip, admin-initiated

Comments
6 min read
The app speaks 19 languages: tiered i18n and the AI translation pipeline
Cover image for The app speaks 19 languages: tiered i18n and the AI translation pipeline

The app speaks 19 languages: tiered i18n and the AI translation pipeline

Comments
6 min read
Emails in the user's language, and the frozen Cognito pool
Cover image for Emails in the user's language, and the frozen Cognito pool

Emails in the user's language, and the frozen Cognito pool

Comments
5 min read
In-app announcements: talking to users after the build shipped
Cover image for In-app announcements: talking to users after the build shipped

In-app announcements: talking to users after the build shipped

Comments
6 min read
The activity log: what users did, without their words
Cover image for The activity log: what users did, without their words

The activity log: what users did, without their words

Comments
5 min read
The admin console: a web app on a mobile app's Cognito pool
Cover image for The admin console: a web app on a mobile app's Cognito pool

The admin console: a web app on a mobile app's Cognito pool

Comments
6 min read
MUI vs Tailwind: the cascade-layers war story
Cover image for MUI vs Tailwind: the cascade-layers war story

MUI vs Tailwind: the cascade-layers war story

Comments
5 min read
Polish pass #3: store-release edges and platform traps
Cover image for Polish pass #3: store-release edges and platform traps

Polish pass #3: store-release edges and platform traps

Comments
6 min read