asaday.
← All projects

Case study 02 / The Garden

One church. A system that works together.

Building an organization-owned platform for The Garden: people, giving, serving, check-in, communications, and staff work—with a staged path away from Planning Center.

My role
IT Director · Architecture & engineering
Status
Built in stages · Migration ongoing
Built with
React · TypeScript · Firebase · Stripe · Shared domain packages
The GardenWorkflow / PRODUCT
THE ORGANIZATION, CONNECTEDPeople at the center.
Everything connected.
  1. PeopleA shared record

    Profiles, households, notes, and follow-up

  2. ServeA coordinated team

    Plans, roles, availability, and responses

  3. ParticipateA member experience

    Giving, check-in, and communication

  4. OperateA staff workspace

    Ownership, permissions, and work tracking

One identity

shared across member and staff experiences

10,005

synthetic directory records used in validation

Staged

replacement and migration, workflow by workflow

01 / The problem

Church operations are connected. The software should be too.

A volunteer is also a member, part of a household, and someone a team may need to follow up with. Yet their information often lives in separate tools. Staff spend time reconciling systems, and volunteers experience the gaps as repeated questions or missed communication.

My work for The Garden brings those relationships into a common platform. Replacing Planning Center is part of the goal, but the deeper requirement is continuity: a useful member experience and a reliable operating system for the people running the church.

02 / What I built

The public experience and the work behind it.

The platform spans the public and member website, staff administration, people and household records, giving, check-in, service planning, team scheduling, communications, and work management. Shared packages carry the same domain rules, types, and validation across those surfaces.

People search supports pagination, filters, saved views, and server-side counts beyond the earlier directory limit. Follow-up workflows have owners, due dates, and states. Service plans account for role onboarding, weekday availability, and independent responses to individual services. Communication templates, previews, and retry-safe batches help staff communicate without accidentally duplicating a send.

03 / The engineering decisions

Shared information does not mean unrestricted access.

Permissions follow roles, departments, ownership, and explicit access rules. Sensitive fields are protected on the server, not merely hidden in the interface. Household schedule sharing is consent-based, and people-merging work accounts for relationships and concurrent edits.

Garden Work extends a self-hosted Plane Community foundation for staff work management, with access projected from the Garden platform. I integrated that existing foundation rather than treating it as a second identity system. Demonstration workflows also use isolated data, so training and review do not require exposing real member records.

04 / Where it stands

A replacement earned one real workflow at a time.

The implementation includes meaningful validation: a synthetic directory with 10,005 records, browser checks at mobile and desktop widths, and reviews of administrative and member workflows. Those checks establish implementation behavior; they do not mean every feature has completed production rollout or migration.

The Planning Center replacement remains staged. Check-in details, remaining integration gates, data migration, and staff acceptance have to be completed in context. The same shared foundation leaves room for future native clients without promising a native app that has not launched.

About this case study +

Garden repository architecture, Planning Center implementation notes, Church Center replacement audit, staff-work verification, and demo-mode documentation. Directory volume is synthetic test evidence, not congregation size.

Researched and updated October 3, 2026.

Bring the problem

What are you
trying to make work?

Let’s talk about it ↗