Project Overview
ChurchApps consists of approximately 20 independent repositories, each published under the ChurchApps GitHub organization. This page provides a complete inventory of all projects organized by category, along with their frameworks, ports, and relationships.
Before You Begin
- Install the prerequisites for the project category you want to work on
Backend APIs
All APIs are built with Node.js, Express, and TypeScript, and are deployed to AWS Lambda via Serverless Framework.
| Project | Purpose | Dev Port | Database |
|---|---|---|---|
| Api | Core modular monolith covering membership, attendance, content, giving, messaging, and doing | 8084 | Separate MySQL database per module (6 total) |
| LessonsApi | Lessons.church backend | -- | Single lessons MySQL database |
| AskApi | AI query tool powered by OpenAI | -- | -- |
The core Api project is a modular monolith. Each module (membership, attendance, content, giving, messaging, doing) has its own database and is accessible at a subpath such as /membership or /giving. In production, these are exposed as separate Lambda functions behind API Gateway.
Web Apps
| Project | Framework | Dev Port | Purpose |
|---|---|---|---|
| B1Admin | React 19 + Vite + MUI 7 | 3101 | Church administration dashboard |
| B1App | Next.js 16 + React 19 + MUI 7 | 3301 | Public-facing church member app |
| LessonsApp | Next.js 16 | 3501 | Lessons.church frontend |
| B1Transfer | React + Vite | -- | Data import/export utility |
| BrochureSites | Static | -- | Static church brochure websites |
Mobile Apps
All mobile apps use React Native with Expo.
| Project | Purpose | Key Versions |
|---|---|---|
| B1Mobile | Church member app for iOS and Android | Expo 54, React Native 0.81 |
| B1Checkin | Check-in kiosk app | Expo |
| LessonsScreen | Android TV lesson display | Expo |
| FreePlay | Content playback (including TV OS) | Expo |
| FreeShowRemote | Mobile remote control for FreeShow | Expo |
Desktop
| Project | Stack | Purpose |
|---|---|---|
| FreeShow | Electron 37 + Svelte 3 + Vite | Presentation and worship software |
Shared Libraries
Shared code is published to npm under the @churchapps scope and consumed as regular npm dependencies by the projects above. All shared packages live in a single repository -- Packages -- managed as a Yarn workspace and released with changesets.
| Package | Purpose | Used By |
|---|---|---|
@churchapps/helpers | Base utilities and shared TypeScript interfaces (DateHelper, ApiHelper, CurrencyHelper, etc.) | All projects |
@churchapps/apihelper | Express server utilities (auth, base controllers, database access, AWS integrations) | All APIs |
@churchapps/apphelper | React component library with subpath modules for login, donations, forms, markdown, and website building | All web apps |
@churchapps/content-providers | Third-party content provider abstraction (Lessons.church, Planning Center, Dropbox, and others) | Api, B1Admin, B1App, FreePlay |
@churchapps/integration-sdk | B1.church integration toolkit: webhooks, REST client, OAuth | External integration developers |
@churchapps/texting | SMS provider abstraction | Api |
See Shared Libraries for workspace setup and the release workflow.
Project Relationships
Frontend Apps Shared Libraries Backend APIs
-------------- ---------------- ------------
B1Admin ──────┐
B1App ──────┤ @churchapps/helpers ◄───── Api
LessonsApp ──────┼──► @churchapps/apphelper LessonsApi
B1Mobile ──────┤ AskApi
FreeShow ──────┘ @churchapps/apihelper ◄────┘
All frontend apps depend on @churchapps/helpers. Web apps additionally depend on @churchapps/apphelper packages. All backend APIs depend on both @churchapps/helpers and @churchapps/apihelper.
Next Steps
- Environment Variables -- Configure your
.envfiles to connect to APIs - API Local Setup -- Set up the backend API locally