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 | 5173 | 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. These are consumed as regular npm dependencies by the projects above.
| Package | npm Name | Purpose | Used By |
|---|---|---|---|
| Helpers | @churchapps/helpers | Base utilities (DateHelper, ApiHelper, CurrencyHelper, etc.) | All projects |
| ApiHelper | @churchapps/apihelper | Express server utilities (auth middleware, DB helpers, AWS integration) | All APIs |
| AppHelper | Workspace with 6 packages | React component library | All web apps |
| ContentProviderHelper | @churchapps/content-provider-helper | YouTube, Vimeo, and local content providers | FreeShow, FreePlay, Api |
AppHelper Sub-packages
The AppHelper project is a monorepo workspace that publishes six packages:
| Package | npm Name |
|---|---|
| Core | @churchapps/apphelper |
| Login | @churchapps/apphelper-login |
| Donations | @churchapps/apphelper-donations |
| Forms | @churchapps/apphelper-forms |
| Markdown | @churchapps/apphelper-markdown |
| Website | @churchapps/apphelper-website |
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