Skip to content

Instantly share code, notes, and snippets.

@kilip
Last active March 16, 2026 16:43
Show Gist options
  • Select an option

  • Save kilip/a0a0a0f8c0bf4f18992aba64705a62de to your computer and use it in GitHub Desktop.

Select an option

Save kilip/a0a0a0f8c0bf4f18992aba64705a62de to your computer and use it in GitHub Desktop.

Domus Project — Step-by-Step Implementation Checklist

This checklist provides a sequential, actionable guide to implement Domus v1. Each step references the relevant sections of the Product Requirements Document (PRD), Architecture Decision Records (ADR), and Technical Design Document (TDD). Follow the phases as defined in the PRD milestones.


Phase 0: Project Foundation (Pre-Sprint)

# Task References Status
0.1 Initialize monorepo with Turborepo + pnpm workspaces ADR-022, TDD §4 [x]
0.2 Configure Biome for linting and formatting ADR-009, TDD §4.3 [x]
0.3 Set up Husky + lint-staged + commitlint (conventional commits) ADR-009, TDD §4.3 []
0.4 Create package structure: types, util, validators, i18n, core, db, auth, and apps/dash ADR-022, TDD §4.1 []
0.5 Implement Result<T, E> in @domus/types ADR-022, TDD §10.1 []
0.6 Create environment variable validation with Zod in @domus/util TDD §4.3, §13.3 []
0.7 Set up Drizzle ORM with Neon PostgreSQL (local dev and production) ADR-002, TDD §5 []
0.8 Configure Drizzle Kit for migrations ADR-002, ADR-009, TDD §5.3 []
0.9 Define base database schema: users, accounts, sessions (better‑auth managed) ADR-004, TDD §5.1 []
0.10 Implement soft delete helper (withSoftDelete) and deletedAt filtering ADR-008, TDD §5.1 []
0.11 Set up better‑auth with Google OAuth (dev + prod), plugins: admin, organization, multiSession ADR-004, TDD §6.1 []
0.12 Create role constants and permission statements in @domus/auth ADR-006, TDD §6.2–6.3 []
0.13 Implement withRBAC wrapper for Route Handlers and Server Actions ADR-005, TDD §6.4 []
0.14 Bootstrap SuperAdmin via SUPER_ADMIN_EMAIL env var ADR-019, TDD §6.5 []
0.15 Configure Next.js 16 with Cloudflare Pages adapter (opennextjs-cloudflare) ADR-001, TDD §2 []
0.16 Set up serwist for PWA (manifest, service worker, background sync) ADR-001, ADR-014, TDD §9.1 []
0.17 Implement offline detection and connectivity indicator ADR-014, ADR-025, TDD §9.4 []
0.18 Configure Cloudflare R2 buckets (domus-public, domus-private) ADR-003, TDD §3 []
0.19 Set up Google Drive service account and folder structure ADR-003, TDD §3 []
0.20 Implement file upload handler with Sharp compression (WebP, resize) ADR-016, TDD §11.5 []
0.21 Create i18n setup with next-intl (locales: id, en) ADR-013, TDD §7.5 []
0.22 Configure shadcn/ui with Mira theme and Tailwind ADR-012, TDD §7.6 []
0.23 Set up health check endpoints (/api/health, /api/health/detailed) ADR-025, TDD §14.2 []
0.24 Configure rate limiting in proxy.ts using Cloudflare Workers KV ADR-020, TDD §11.2 []
0.25 Set up GitHub Actions workflow (test, build, deploy) ADR-009, TDD §13 []
0.26 Configure staging environment (staging.dash.pkrbt.id) TDD §13.1 []

Phase 1: Sprint 1 — Authentication, SuperAdmin, Dashboard (17–23 Mar 2026)

# Task References Status
1.1 Implement Google OAuth login page and callback PRD US-AUTH-01, ADR-004, TDD §6.6 []
1.2 Create login/logout UI components (header, buttons) PRD US-AUTH-02, TDD §7 []
1.3 Implement join link flow: dash.pkrbt.id/join/[slug] PRD US-AUTH-03, ADR-007, TDD §6.1 []
1.4 Build pending member approval page for ParishAdmin/OrganizationAdmin PRD US-AUTH-04, TDD §7.1 []
1.5 Implement account deactivation/reactivation (with session invalidation) PRD US-AUTH-05, ADR-004, TDD §6.1 []
1.6 Create SuperAdmin module: manage global org types, users, parishes (minimal) PRD §5.2, ADR-007, TDD §7.2 []
1.7 Build responsive dashboard layout (mobile bottom nav, desktop sidebar) PRD §7.1, ADR-011, TDD §7.6 []
1.8 Implement parish dashboard cards (total members, income, attendance, org counts) PRD US-DASH-01, TDD §7.6 []
1.9 Implement unit dashboard for OrganizationAdmin PRD US-DASH-02, TDD §7.6 []
1.10 Add i18n support for all UI strings (static + dynamic) PRD §7.4, ADR-013, TDD §7.5 []
1.11 Integrate dark mode toggle (next-themes) PRD §7.6, ADR-012, TDD §7.6 []

Phase 2: Sprint 2 — Biodata Minimal Viable (24–30 Mar 2026)

# Task References Status
2.1 Define members table schema (full name, unit assignment, Google account link) PRD §5.1, ADR-010, TDD §5.1 []
2.2 Implement member registration form (admin) – only full name required PRD US-BIO-01, TDD §7.1 []
2.3 Create member search (by name, unit) with filters PRD US-BIO-02, TDD §7.1 []
2.4 Build member profile view (basic info, unit, linked Google account) PRD US-BIO-03, TDD §7.1 []
2.5 Implement edit member (admin) PRD US-BIO-04, TDD §7.1 []
2.6 Add archive member functionality (soft delete) PRD US-BIO-05, ADR-008, TDD §7.1 []
2.7 Create family unit schema (family_units, family_members, family_roles) PRD §5.1, ADR-010, TDD §5.1 []
2.8 Implement family unit management (create, assign members) PRD US-BIO-06, TDD §7.1 []
2.9 Add floating member concept (no unit assignment) PRD §5.1, ADR-007, TDD §5.1 []
2.10 Display family unit on member profile PRD US-BIO-06, TDD §7.1 []
2.11 Add member photo upload (R2) with compression PRD §10.5, ADR-016, TDD §11.5 []

Phase 3: Sprint 3 — Organizations Minimal + Attendance Full (31 Mar – 6 Apr 2026)

Organizations (Minimal)

# Task References Status
3.1 Implement organizations table with type, parent_id, slug, status ADR-007, TDD §5.1 []
3.2 Create organization CRUD for ParishAdmin (zone, missionStation, community, categorical) PRD US-ORG-01, TDD §7.2 []
3.3 Add categorical organization management for SuperAdmin PRD US-ORG-02, TDD §7.2 []
3.4 Implement member assignment to organizations (many-to-many) PRD US-ORG-03, TDD §7.2 []
3.5 Build organizational roster view (members list per unit) PRD US-ORG-05, TDD §7.2 []
3.6 Add archive organization with grace period (30 days) PRD US-ORG-06, ADR-007, TDD §7.2 []
3.7 Create join link per organization (/join/[slug]) and toggle ADR-007, TDD §7.2 []
3.8 Implement organization tree view (hierarchy) PRD §5.2, TDD §7.2 []

Attendance (Full)

# Task References Status
3.9 Define attendance_events table (with eventToken, status, etc.) ADR-018, TDD §5.1 []
3.10 Create event form (name, type, start time, org, recurrence, visibility, RSVP toggle) PRD US-ATT-01, ADR-018, TDD §7.4 []
3.11 Generate QR code (PNG + SVG) on event creation using qrcode ADR-017, TDD §7.4 []
3.12 Implement event status transitions (draft → open → closed → archived, cancel, reopen) PRD §5.4, ADR-018, TDD §7.4 []
3.13 Add auto-open/close cron jobs (every minute) ADR-018, TDD §7.4 []
3.14 Create QR check-in page (/checkin/[token]) – login, confirm PRD US-ATT-03, ADR-017, TDD §7.4 []
3.15 Implement manual attendance entry (admin selects members) with offline queue PRD US-ATT-04, ADR-014, TDD §9.2 []
3.16 Build self check-in from app (list open events) PRD US-ATT-05 (should-have), TDD §7.4 []
3.17 Implement attendance_records table with unique constraint TDD §5.1 []
3.18 Add duplicate check-in prevention PRD §5.4, TDD §7.4 []
3.19 Create per-event attendance report (list of attendees, method) PRD US-ATT-06, TDD §7.4 []
3.20 Implement attendance summary per unit (rate) PRD US-ATT-08, TDD §7.4 []
3.21 Add late entry flag and review workflow PRD §5.4, ADR-014, TDD §7.4 []
3.22 Implement recurring event generation (weekly/monthly/yearly) via cron ADR-018, TDD §7.4 []
3.23 Create Google Drive folder per event on creation ADR-003, ADR-018, TDD §7.4 []
3.24 Add event photo upload (max 10 photos, 5 MB each) to Google Drive PRD US-ATT-09 (should-have), TDD §7.4 []
3.25 Implement RSVP: schema, UI (attending/not/maybe), window during draft PRD US-ATT-10, ADR-024, TDD §7.4 []
3.26 Display RSVP count on event cards and detail PRD §5.4, ADR-024, TDD §7.4 []
3.27 Add RSVP reminder cron (H-1) ADR-024, TDD §7.4 []
3.28 Implement offline queue for manual attendance (Workbox background sync) ADR-014, TDD §9 []

Phase 4: Sprint 4 — Finance Minimal Viable (7–13 Apr 2026)

# Task References Status
4.1 Define financial_transactions and transaction_categories tables PRD §5.3, TDD §5.1 []
4.2 Create transaction category management for ParishTreasurer PRD US-FIN-04, TDD §7.3 []
4.3 Implement income transaction recording form (date, amount, category, description) PRD US-FIN-01, TDD §7.3 []
4.4 Add transaction list view (searchable, filterable) PRD §5.3, TDD §7.3 []
4.5 Implement edit/delete transaction PRD US-FIN-02, TDD §7.3 []
4.6 Build financial report (income summary for date range) PRD US-FIN-03, TDD §7.3 []
4.7 Add export to CSV and PDF PRD US-FIN-05, TDD §7.3 []
4.8 Restrict access: only ParishTreasurer (full), Pastor/ParishBoardMember (read-only) PRD §5.3, ADR-006, TDD §7.3 []
4.9 Add snapshot fields (recordedByName) for audit ADR-008, TDD §5.1 []

Phase 5: Sprint 5 — i18n, Performance, UAT Prep (14–16 Apr 2026)

# Task References Status
5.1 Complete i18n for all UI strings (verify id and en) PRD §7.4, ADR-013, TDD §7.5 []
5.2 Add language switcher in header PRD §7.4, TDD §7.5 []
5.3 Optimize bundle: dynamic imports for heavy components (QR scanner, charts) PRD §8.1, TDD §15.4 []
5.4 Implement skeleton loaders for all data-dependent views ADR-015, TDD §7.6 []
5.5 Add optimistic UI for attendance toggle, biodata update ADR-015, TDD §10.4 []
5.6 Performance test on NUC6CAYH: index queries, optimize PRD §8.1, TDD §15 []
5.7 Run full accessibility audit (contrast, keyboard, labels) PRD §7.5, TDD §7.6 []
5.8 Prepare UAT environment (staging) with realistic test data PRD §11, TDD §13.1 []
5.9 Create UAT test scripts covering all must-have user stories PRD §6, TDD §12 []
5.10 Document known issues and workarounds - []

Phase 6: User Acceptance Testing (UAT) (17–18 Apr 2026)

# Task References Status
6.1 Conduct UAT sessions with parish secretariat and OrganizationAdmins PRD §11 []
6.2 Collect feedback and prioritize bug fixes - []
6.3 Fix critical bugs identified during UAT - []
6.4 Finalize training materials for admins PRD §11 []
6.5 Verify backup procedure (manual restore test) ADR-021, TDD §14 []
6.6 Run final smoke tests on staging - []

Phase 7: Launch (19 Apr 2026)

# Task References Status
7.1 Deploy to production (Cloudflare Pages + Neon) TDD §13 []
7.2 Run database migrations on production TDD §13.4 []
7.3 Verify health check endpoints ADR-025, TDD §14 []
7.4 Monitor Cloudflare Workers usage during Easter mass PRD §12 []
7.5 Provide on-site support for first day of attendance PRD §11 []
7.6 Announce launch to parish community - []

Phase 8: Post-Launch (20 Apr 2026+)

# Task References Status
8.1 Implement remaining biodata fields (education, occupation, NIK, etc.) PRD §5.1, TDD §7.1 []
8.2 Add full leadership management (teams, term history) PRD US-ORG-04, TDD §7.2 []
8.3 Complete finance module: expenses, attachments, full export PRD §5.3, TDD §7.3 []
8.4 Add per-member attendance recap on profile PRD US-ATT-07 (should-have), TDD §7.4 []
8.5 Implement ParishMember view own profile PRD US-BIO-07 (should-have), TDD §7.1 []
8.6 Add notification preferences management PRD US-NOT-02 (should-have), ADR-023, TDD §7.5 []
8.7 Implement dynamic access control (multi-parish customization) ADR-006 (future), PRD §3.2 []
8.8 Add mass/activity calendar (planned for next version) PRD §3.2 []
8.9 Integrate with diocesan systems (future) PRD §3.2 []
8.10 Set up cold standby server (v2) PRD §12 []

Notes:

  • Each task should be broken down into subtasks as needed.
  • References are provided to ensure alignment with requirements and architecture.
  • Status column can be used to track progress.

End of Implementation Checklist

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment