Skip to content
All work
In progress

2026

Impressions

A spiritual-growth platform — an Expo mobile app and a Next.js admin dashboard sharing one Amplify Gen 2 backend.

Problem

Sermons are consumed once and then evaporate. Turning a message into something a person actually acts on needs structure — and structure needs an editorial tool behind it, not just a media player.

My role

Sole engineer: backend schema and auth, the mobile app, and the admin dashboard.

Outcome

A React Native app for iOS and Android and a Next.js 16 admin dashboard, both on a single Amplify Gen 2 backend with a shared Cognito pool and one GraphQL schema.

The core idea is the snippet. A message is broken into focused sections, each carrying a topic, a reflection prompt and an action step — so the unit a user engages with is small enough to finish and specific enough to journal against. Progress, completion and personal notes all hang off that one model.

The mobile app leans hard on offline. Bible data ships in a local expo-sqlite database rather than being fetched per screen, so the reader works with no signal at all, and React Query plus NetInfo keeps the rest of the data offline-aware. Audio playback and push notifications are handled natively via expo-audio and expo-notifications.

On the admin side, messages move through a DRAFT → PUBLISHED workflow with S3 upload for images and audio, and the dashboard reads through Amplify observeQuery subscriptions so edits appear without a refresh. Cognito groups (ADMIN / USERS) are what separate the two audiences on a single pool, with a post-confirmation Lambda creating the profile row so there's no client-side race.


Stack

Expo
React Native
Next.js
TypeScript
AWS Amplify Gen 2
AppSync
DynamoDB
Cognito
S3
MUI
NativeWind
React Query