Digital Administration for Kristus Raja Barong Tongkok Catholic Parish
domus is a parish administration digitalization solution built as a Progressive Web App (PWA) — lightweight, easy to access, and usable by all parishioners without significant technical barriers.
- Registration & Membership Management — parishioners can register for organizations independently, and admins can manage membership data.
- Parishioner Self-Attendance — parishioners can record their own attendance at organizational activities via QR Code, GPS, or manual submission.
- Parish Financial Recording — treasurers can record parish income and expenses by accounting period.
- Financial Reports — pastors and the executive board can access financial reports digitally and transparently.
domus is built on a monolith architecture using a modern TypeScript ecosystem:
- Package Manager: pnpm
- Framework: Next.js 16 (App Router)
- Monorepo: Turborepo + pnpm workspaces
- PWA: Serwist
- Auth: Better Auth (Google OAuth, Passwordless)
- Database & ORM: PostgreSQL (Neon) + Drizzle ORM
- Storage: Cloudflare R2 (public assets) & Google Drive (private/sensitive assets)
- Cron Jobs: Cloudflare Workers
- Styling: Tailwind CSS + shadcn/ui
- Linter & Formatter: Biome
This project is managed using Turborepo with a Just-in-Time (JIT) Packages strategy for internal packages.
apps/
├── dash/ # Main Web Application (Next.js 16 - Feature-Sliced Design)
└── cron/ # Scheduled Tasks (Cloudflare Workers)
packages/
├── core/ # Business Logic, Entities, Result Pattern (Framework Agnostic)
├── db/ # Drizzle Schema, Migrations & Repository Implementations
├── auth/ # Better Auth Configuration
└── config/ # Shared Configuration & Environment Validation
For deeper documentation on the domus system, see the following files in the docs/ folder:
- Product Requirements Document (PRD) — Feature details, workflows, user roles, and product scope.
- Technical Design Document (TDD) — System architecture, code conventions, authentication, and CI/CD.
- Entity Relationship Document (ERD) — Database schema, entity relationships, and enums.
- Screen Inventory — All screens, routes, FSD placement, and access roles.
- Design System — Color palette, typography, and component guidelines.
- Glossary — Indonesian–English term mapping for domain concepts.
- Agent Guide — Guide for AI agents (Copilot, Cursor, Claude, etc.) working in this repository.
Make sure you have the following installed:
-
Clone the repository
git clone https://github.com/paroki/domus.git cd domus -
Install dependencies
pnpm install
-
Copy environment variables Duplicate the
.env.examplefile to.envin each app/package folder (e.g.apps/dash/.env,apps/cron/.env, and root), then fill in the values. -
Start local development
pnpm dev
The dash app will start, typically at http://localhost:3000.
Available commands from the root folder:
pnpm build— Build all packages and apps.pnpm lint— Run Biome (linter & formatter) across all workspaces.pnpm typecheck— Run TypeScript compiler checks.pnpm test— Run unit tests.
domus is released under the MIT license. All code and documentation are open source and can be freely used, modified, and distributed in accordance with the license terms.
Built with ❤️ for Kristus Raja Barong Tongkok Parish.