Skip to content

paroki/domus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

181 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

domus

License codecov CI

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.

🌟 MVP Features

  1. Registration & Membership Management — parishioners can register for organizations independently, and admins can manage membership data.
  2. Parishioner Self-Attendance — parishioners can record their own attendance at organizational activities via QR Code, GPS, or manual submission.
  3. Parish Financial Recording — treasurers can record parish income and expenses by accounting period.
  4. Financial Reports — pastors and the executive board can access financial reports digitally and transparently.

🛠️ Tech Stack

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

📂 Monorepo Structure

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

📚 Documentation

For deeper documentation on the domus system, see the following files in the docs/ folder:

🚀 Getting Started

Prerequisites

Make sure you have the following installed:

  • Node.js (latest LTS recommended)
  • pnpm (package manager used in this project)

Installation & Local Development

  1. Clone the repository

    git clone https://github.com/paroki/domus.git
    cd domus
  2. Install dependencies

    pnpm install
  3. Copy environment variables Duplicate the .env.example file to .env in each app/package folder (e.g. apps/dash/.env, apps/cron/.env, and root), then fill in the values.

  4. Start local development

    pnpm dev

The dash app will start, typically at http://localhost:3000.

Workflow Commands

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.

📄 License

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.