manna circle sends a private group a daily invitation to share a blessing at a random time. Members can type, dictate, or record a video. Text and voice posts can include a photo, and any blessing can reference a Bible passage. Members see each other’s posts after sharing their own. Earlier days stay readable.
The app uses SwiftUI and Supabase. Each circle chooses its time zone, daily notification range, and how long members have to respond. APNs notifications and an ActivityKit Live Activity show when that window is open on the Lock Screen. WidgetKit widgets show active prompts and past blessings.
Timing and privacy
Postgres sets each prompt’s start time and deadline. When someone opens the capture screen in time, the server records that they can submit. They can then finish writing or recording after the deadline and still post to that day. A database constraint prevents duplicate submissions.
Database policies and server operations check membership and control who can see the current day’s posts. Realtime updates tell the app to fetch the data again with those checks in place. When someone switches circles, the app ignores results from requests for the previous circle.
Timeline and offline saves
Timeline shows blessings chronologically or in threads for each member, with responses, transcripts, and Bible references. Members can save available media and responses privately on their device. Completed saves appear in Timeline offline, where they can be read without access to live sharing or editing.
Audio and video load when someone presses Play. The app uses saved files first and keeps using them when a download link changes. A local backend implements the same service protocols as Supabase, with repeatable demo data for simulator development and tests.
The main screens support Dynamic Type, light and dark mode, and reduced motion. Photo cropping and verse selection have accessible controls alongside gestures. These screenshots use the local demo data.

