PROJECTS
Web appFeatured

BUSIA HOUSE OF TRANSFORMATION

A full-featured church management and engagement platform serving both public visitors and authenticated members through a unified, role-based portal built with Next.js App Router.

BUSIA HOUSE OF TRANSFORMATION

TECH STACK

ReactNode.jsRedisSuperbaseMongoDBExpressNextjsJavascriptSentryBrevoTarnstack queryShadnc UI

DETAILS

Overview

A church management and engagement platform for House of Transformation, a church in Busia County, Kenya. The platform is built around a unified portal — there are no separate admin-only pages. Members and administrators use the same interface, with access to features gated entirely by a role-based permission system enforced on the backend.

Key Features

Public site: homepage with livestream detection, blog with per-device view tracking and likes, sermon archive, event registration with seat reservation, donation campaigns with MPESA STK push, photo gallery, volunteer applications, a five-form feedback system (sermon, service, testimony, suggestion, prayer request), and an integrated AI chatbot.

Member portal: analytics dashboard, blog/sermon/event/gallery management, livestream management, feedback moderation, volunteer application review, role and permission management, user management, real-time announcements via Server-Sent Events, and full donation/MPESA management.

Architecture

The Next.js frontend talks to a separate Node.js/Express backend over REST, backed by MongoDB for content and users and Supabase for identity. SEO-critical pages (homepage, blog, events, sermons, gallery, donate) are server-rendered on every request; the entire member portal is client-rendered and auth-gated. Real-time announcements are delivered over SSE with exponential-backoff reconnection.

Role & Permission System

Every user has a single role made up of granular permission strings (e.g. manage:events, view:analytics, read:feedback:sermon). An admin role bypasses all checks. The frontend uses these permissions only for UX — showing or hiding sidebar sections and actions — while the backend independently enforces every state-changing request.

PWA Support

The app installs as a Progressive Web App with a custom service worker (network-first, cache-fallback for GET requests only), a manifest with home-screen shortcuts to Live Stream, Sermons, Events, and Donate, and Picture-in-Picture support that persists across routes and page reloads.

Tech Stack

Frontend: Next.js (App Router), Tailwind CSS, Supabase Auth, Axios, TanStack Query, TipTap, Framer Motion, Recharts

Backend integration: Node.js/Express REST API, MongoDB, Cloudinary (media), Server-Sent Events (real-time announcements)

Author

Built by Brian Ouma (@rockstarbryant)