Build an app you can keep running.

The backend, integrations and release process matter as much as the screens. Plan them around the app’s actual job and the data it handles.

Choose architecture from the constraints

Expected usage, offline needs, device features, data sensitivity and existing systems guide the stack. Record the tradeoffs and recurring-cost assumptions before choosing services.

Connect only what the release needs

Specify each integration’s inputs, permissions, failure behavior and owner. Test against realistic examples. Legacy systems, migrations and uncertain APIs receive their own discovery scope.

Make AI behavior reviewable

Where an app uses AI, define the task, representative examples and unacceptable failures. Keep latency, cost limits, provider settings and human review visible. An attractive demo is not a measured quality result.

Prepare for failures

Use the agreed logging, recovery, backups and rollback approach. Avoid putting secrets in documents or repositories. Give the client a named recovery owner and a tested handoff checklist.

Check the complete journey

Validate the app, API and stored data together for the agreed use cases. Record device and OS coverage, known limitations and release evidence. Independent security assessment or certification is a separate engagement.

What would a useful first release look like?

Tell us about it