Deeve Technologies
Client workWeb Application

MCGI Brunei, Worship Service Attendance System

A worship service attendance system for MCGI Brunei with Zoom integration, tracking 55,000+ attendance records across multiple service types. Handles live vs replay services, local vs Zoom hookup, on-time and late status, group management,...

ClientMCGI Brunei
RoleFull-stack developer
Year2026
TypeWeb Application
Updated23 Sep 2026
Attendance
attendance
Overview

A worship service attendance platform for MCGI Brunei, handling multiple weekly services across more than 55,000 attendance records.

With hybrid in-person and Zoom tracking.

Built with
MySQLPHPTailwind CSSZoom Integration
The problem

What was in the way

Attendance for a large congregation with hybrid services is a data problem, not a spreadsheet.

You need to know who attended, which service, whether they joined in person or on Zoom, which group they belong to, and whether they were on time. Then you need to report on all of it by month, by group and by service, without the interface crawling.

A spreadsheet handles the first week. By the second year it holds tens of thousands of rows, the filters take seconds to apply, two people cannot edit it at once, and nobody trusts the totals because three versions are circulating.

The design constraint throughout was that 55,000-plus records still had to feel instant.

The hybrid part makes it harder. A person who attends locally one week and on Zoom the next is the same member with the same history, and any system that treats those as separate records produces attendance figures that are quietly wrong.

What I built

Five parts, each with a reason

Per-service attendance capture

Worship Service and Pasalamat ng Buong Bayan recorded separately, with local versus Zoom attendance and punctuality tracked per person.

Recording the mode rather than just the fact is what makes the data useful. It answers whether remote attendance is growing, and whether the people who joined on Zoom during a disruption came back in person afterwards.

Member and group administration

Role-based access so different staff see and do different things. A group leader manages their own group. An administrator sees everything.

Zoom links attached per service

The remote join path is part of the schedule rather than a separate message in a chat group. One source of truth for when the service is and how to join it.

Schedule auto-generation

A Generate 4 Weeks action builds recurring service schedules rather than someone creating each one by hand.

Small feature, large effect. Manual schedule creation is the task that gets skipped, and a missing schedule means a service with no attendance record at all.

Reporting by month, group and service

Plus finance tracking and activity logs, generated rather than compiled by hand.

How it was built

The engineering underneath

PHP and MySQLTailwind interface, light and dark mode, Zoom integration, on its own subdomain
ZoomHybrid attendance tracked in the same record as the in-person count
ConventionalRun by volunteers and administrators rather than engineers, so it keeps working unmaintained

PHP with MySQL and a Tailwind interface, light and dark mode, Zoom integration. Hosted on its own subdomain.

Conventional by design. This system is run by volunteers and administrators rather than engineers, and it has to keep working with nobody maintaining it. Every dependency added is something that breaks in eighteen months and nobody knows how to fix.

Most performance complaints at this record count come from missing indexes rather than slow code. Filtering by month and group across a large attendance table without a composite index produces a full scan on every page load, and the usual response is to blame the server.

So the index design followed the actual query patterns rather than being added reactively, and the filters were built to hit them. Pagination happens in the database rather than in PHP, which is the other common mistake: fetching everything and slicing it in application code works fine on test data and falls over on real data.

MySQLPHPTailwind CSSZoom Integration
More work

Projects like this

All projects
Why it matters for your project

I build software, and I measure whether it works.

The same questions I research are the ones I ask on client builds: is it reliable, is it fast, is it easy to use, and is it secure. Those four drove satisfaction in my ICT portal study, and they shape how I scope and test every project.