Back

Church / Community Management System

An internal system for event registration, attendance tracking, outing requests, and role-based administration — optimized for busy ministry teams and student fellowships.

The Problem

Administrative Nightmare

  • Data Fragmentation: Relied on duplicating Google Forms for every event, causing scattered data.
  • Manual Logistics: Admins had to manually count participants by region to arrange transportation.
  • Data Duplication: Members frequently submitted multiple registrations due to uncertainty.
  • Painful Auditing: Year-end attendance tracking required manually cross-referencing massive Google Sheets.
The Solution

Centralized Automation

  • Self-Service Portal: Members can track, update, or cancel their own registrations via internal accounts.
  • Automated Logistics: Dashboards auto-filter and aggregate transportation needs by area.
  • Smart Attendance: Cell Group Leaders get 1-click attendance checklists pre-filtered for their members, replacing Excel entirely.
  • Anti-Spam Architecture: Public registration is allowed, but strictly blocks duplicate phone numbers.

Event Registration

Visitors can register for open events directly from the navbar without logging in. Registration collects name, phone, and address. Each phone number can register only once per event to prevent duplicates. Logged-in users are redirected to the registration page and will see their default address prefilled; they can update or cancel their registration later.

Event Management

Authorized roles can create and manage events, with filters by event type and date for quick lookup. When creating an event, you can mark it as a regular event (attendance required) and choose a regular event type, and optionally open it for public registration. Deleting events is restricted and discouraged, because regular events are linked to attendance records.

Attendance

Regular events show an Attendance button visible only to specific roles. Cell Group Leaders see only their group’s active members, while senior leaders and the secretary can see all groups and filter by group. Taking attendance is intentionally simple: tick names and save. An attendance rate report (admin-only) can be generated for a selected date range and event type to list members who meet a target attendance rate.

Outing Request & Approvals

Cell Group Leaders and Trainee Leaders can request an outing by providing topic, date, time, venue, and description, and by adding participants from their own or other groups. Mentors (SV) and the Transportation Team Leader review requests in detail and can approve or reject them; statuses update in real time.

User Management & Roles

Users with sufficient role level can view member profiles; the Administrative Team can assign roles and groups, set members as inactive (with bulk operations), and changes propagate automatically — e.g., roles are auto-removed when a member becomes inactive. Lists are filterable by group and status. Clicking a phone number opens WhatsApp for quick contact.

CSV Import (Bulk Events & Users)

For internal use, sign-up is disabled. Admins import members and events via CSV. On import, new users automatically receive an email with their login credentials. CSV rules enforce clean data: specific date/time formats, lowercase yes/no flags for regular/open events, and strict event type names for regular events. For users, required fields include name, email, phone, gender, and area; phone must start with 0 and use no dashes; some areas require an address; baptism is a yes/no value.

Engineering Spotlight

01. Granular RBAC & Security

To handle complex church hierarchies, I implemented a multi-tier Role-Based Access Control (RBAC) system. Using Next.js Middleware and JWT, routes are strictly protected. On the client side, custom React hooks compute integer-based role levels (e.g., Level > 5 for Admins) to dynamically render UI components. Account creation is entirely closed off from the public (handled exclusively via CSV import) to eliminate spam accounts.

02. Prisma Aggregation & Data Integrity

Replaced manual spreadsheet calculations with dynamic PostgreSQL queries via Prisma. The backend API handles pagination, multi-parameter filtering (by date and event type), and complex joins to generate instant attendance rate statistics. Additionally, the system enforces strict unique constraints (like phone number validation) to prevent data duplication from visitors.

Tech Stack

Built with a modern TypeScript/JavaScript stack for speed, maintainability, and low operational overhead.

Next.jsReactTailwindCSSPrismaPostgreSQLNode.jsVercel

Frontend: React, Next.js, Tailwind CSS

Backend: Node.js, Next.js API Routes, Prisma

Database: PostgreSQL

Auth: NextAuth.js with role levels and per-route guards

Deployment: Vercel

Access Control Snapshot

Visitors

Register for open events without an account

Members

Manage their registrations, update profiles, view relevant lists

Leaders & Admins

Create events, take attendance, request/approve outings, administer roles & groups

Future Roadmap

Attendance Insights

Advanced analytics for cohort trends and pastoral follow-up

Automated Notifications

Email/WhatsApp reminders for registrations, approvals, and absences