Case study
ELWC
A church community app: daily devotionals, an offline Bible, group chat, events, sermons and live presentations.
- Live
- iOS
- Android
The problem
A church needed one app for its members' daily devotional, the Bible and community life — groups, testimonies, chat and events — with content its own team can publish.
What I built
- Daily devotionals with a calendar of past entries, and reading-streak tracking
- Offline KJV Bible reader with notes attached to verses
- Community groups (open or approval-only), comments, and testimonies that an admin approves
- Real-time group chat with push notifications
- Events, sermons, and slide presentations from Google Slides, PowerPoint or PDF
- A web admin panel for the church team to publish and moderate content
My role
Sole developer: I built the Flutter app, the Firebase backend, Cloud Functions and the Next.js admin panel, and publish it to Google Play and the App Store.
Tech stack
- Flutter
- Dart
- Firebase
- Cloud Firestore
- Cloud Functions
- Next.js
Technical challenges & decisions
Rebuilding a backend without a server
ELWC began as a copy of an earlier app backed by a Django REST API. I moved it to Firebase: Firestore queries replaced the HTTP endpoints, Firebase Auth (with Google and Apple sign-in) replaced token auth, Firebase Storage replaced the image host, and the Realtime Database carries chat.
Security rules as the permission model
With no server in between, access control lives in Firestore security rules — who can read or write each collection, owner-only edits, and admin-only moderation such as approving testimonies.
Presentations from any format
Cloud Functions take a Google Slides deck, a PowerPoint file or a PDF uploaded to Storage and turn it into slides the app can present during a service, behind authenticated calls.
