
MyChurch: A Flutter Church Management App
Most "management" apps live or die on one question: who is allowed to do what? For a church app, an admin posting an announcement and a member reading it share almost every screen but need completely different permissions. Getting that split right was the core of MyChurch.
What is a church management app?
A church management app helps a congregation run its day-to-day online — publishing events and announcements, managing members, and keeping everyone connected from their phone. Built in Flutter for Bitwise Solutions, MyChurch gives church admins the tools to organize activities while members get a simple, clear feed of what's happening and when.
The challenge in an app like this is that a single wrong permission — a regular member able to edit or delete an announcement — breaks trust instantly. So role-based access wasn't a feature bolted on at the end; it shaped the architecture from the first screen.
The brief
MyChurch was built for Bitwise Solutions to help churches manage activities and keep members connected. Core modules:
- Events — create, schedule, and browse church events
- Announcements — push important updates to the whole congregation
- Members — an admin view for managing the community
TODO: confirm platforms, the auth method used, and whether giving/donations or media (sermons) were in scope for v1.
Role-based access from day one
Rather than sprinkle permission checks around the UI, roles were modelled explicitly and their capabilities derived from the role itself:
enum ChurchRole { admin, leader, member }
extension Permissions on ChurchRole {
bool get canPublish =>
this == ChurchRole.admin || this == ChurchRole.leader;
bool get canManageMembers => this == ChurchRole.admin;
}
// Gate the action in the UI for a clean member experience:
if (context.read<AuthCubit>().state.role.canPublish)
FloatingActionButton(
onPressed: () => _openAnnouncementComposer(context),
child: const Icon(Icons.add),
),One important note: gating the UI is for user experience, not security. The real enforcement has to live server-side too — the app hides the button, but the backend must still reject an unauthorized write. Treating client-side checks as the security layer is a classic mistake this kind of app can't afford.
Keeping members in the loop
An announcement nobody sees isn't an announcement. Push notifications (via Firebase Cloud Messaging) close that gap, so a new event or urgent update actually reaches the congregation instead of waiting for someone to open the app. TODO: confirm the notification setup and whether topic-based subscriptions (e.g. per-ministry) were included.
Results
MyChurch shipped as a working platform for churches to run events, announcements, and membership from one app. TODO: add real adoption numbers and store links once confirmed with Bitwise.
Planning an app for your organization?
Membership apps — churches, associations, communities — all share the same hard core: roles, permissions, and getting the right information to the right people. If you're planning one, I'm glad to help you design it so it stays simple for members and safe for admins — reach out, or find me on Fiverr and Upwork.


