Skip to content

Latest commit

 

History

History
472 lines (375 loc) · 15.9 KB

File metadata and controls

472 lines (375 loc) · 15.9 KB

Domus — Screen Inventory (MVP)


Document Version: 1.0.7 Status: In Progress Last Updated: 08 April 2026


Maps every screen to its route, layout, FSD placement, domain entities/services, and access roles. Use this as the reference when building any page or feature UI.


Layout Reference

Layout Used By Preview
AppShell All authenticated pages Preview (Code)
PublicShell Login, join org, pending, rejected, privacy, terms Preview (Code)
ErrorShell 404, 500, 403 Preview (Code)

Public Screens

Login

Field Value
Route /login
Layout PublicShell
FSD Page src/pages/auth/ui/LoginPage.tsx
App Export app/(auth)/login/page.tsx
Entity / Service
Access Unauthenticated only. Redirect to / if already logged in.
Description Google OAuth sign-in. Single CTA: "Masuk dengan Google".

Join Organization

Field Value
Route /join/[joinId]
Layout PublicShell
FSD Page src/pages/org/ui/JoinPage.tsx
App Export app/(pubs)/join/[joinId]/page.tsx
Entity / Service OrganizationEntity, UnitEntity, EnrollmentService
Access pending or new users only.
Description Displays org info + unit options. Registration form: fullName, idCardPhoto, unitId (optional), position. Submit creates parishioners + org_enrollments (status: pending).

Pending Approval

Field Value
Route /pending
Layout PublicShell
FSD Page src/pages/auth/ui/PendingPage.tsx
App Export app/(auth)/pending/page.tsx
Entity / Service UserEntity
Access Authenticated users with accountStatus: pending only.
Description Informs user their account is awaiting admin approval. Action: Logout or Join other Org (redirect to /join/[joinId]).

Access Rejected

Field Value
Route /rejected
Layout PublicShell
FSD Page src/pages/auth/ui/RejectedPage.tsx
App Export app/(auth)/rejected/page.tsx
Entity / Service UserEntity
Access Authenticated users with accountStatus: rejected only.
Description Informs user their registration was rejected. Contact info or support link.

Privacy Policy

Field Value
Route /privacy
Layout PublicShell
FSD Page src/pages/auth/ui/PrivacyPolicyPage.tsx
App Export app/(auth)/privacy/page.tsx
Entity / Service
Access Unauthenticated and authenticated users.
Description Static Privacy Policy page. Content rendered from MDX via next-intl.

Terms of Service

Field Value
Route /terms
Layout PublicShell
FSD Page src/pages/auth/ui/TermsOfServicePage.tsx
App Export app/(auth)/terms/page.tsx
Entity / Service
Access Unauthenticated and authenticated users.
Description Static Terms of Service page. Content rendered from MDX via next-intl.

Dashboard Screens

Dashboard (Home)

Field Value
Route /
Layout AppShell
FSD Page src/pages/dash/ui/DashPage.tsx
App Export app/(dash)/page.tsx
Entity / Service ParishionerEntity, EventEntity, TransactionEntity, EnrollmentEntity
Access All authenticated users (approved). Content visibility filtered by role.
Description Overview stats, upcoming events, recent activity feed. Stats visible by role: finance stats only for treasurer, pastor, executive-board.

Parishioner Screens

Parishioner List

Field Value
Route /parishioners
Layout AppShell
FSD Page src/pages/parishioner/ui/ParishionerListPage.tsx
App Export app/(dash)/parishioners/page.tsx
Entity / Service ParishionerEntity, ParishionerService
Access parish-admin, super-admin, org admin, org owner
Description Searchable, filterable list of parishioners. Supports pagination.

Parishioner Detail

Field Value
Route /parishioners/[id]
Layout AppShell
FSD Page src/pages/parishioner/ui/ParishionerDetailPage.tsx
App Export app/(dash)/parishioners/[id]/page.tsx
Entity / Service ParishionerEntity, EnrollmentEntity, PlacementEntity, AttendanceEntity, ParishionerService
Access parish-admin, super-admin, org admin, org owner
Description Full profile: personal data, org enrollments, placement history, attendance history.

Parishioner Create (Manual by Admin)

Field Value
Route /parishioners/new
Layout AppShell
FSD Page src/pages/parishioner/ui/ParishionerCreatePage.tsx
App Export app/(dash)/parishioners/new/page.tsx
Entity / Service ParishionerEntity, ParishionerService
Access parish-admin, territorial org admin (Region/Station/BEC), org owner
Description Form to manually add a parishioner without going through the self-registration flow. No approval required.

Organization Screens

Organization List

Field Value
Route /org
Layout AppShell
FSD Page src/pages/org/ui/OrgListPage.tsx
App Export app/(dash)/org/page.tsx
Entity / Service OrganizationEntity, OrganizationService
Access All authenticated users. Edit/manage actions restricted to parish-admin, org owner, org admin.
Description List of all organizations. Hierarchical view for territorial orgs (Region/Station/BEC), flat list for categorical.

Organization Detail

Field Value
Route /org/[id]
Layout AppShell
FSD Page src/pages/org/ui/OrgDetailPage.tsx
App Export app/(dash)/org/[id]/page.tsx
Entity / Service OrganizationEntity, EnrollmentEntity, UnitEntity, TermEntity, OrganizationService
Access All authenticated users. Manage actions restricted by scoped role.
Description Org profile, enrollment list, pending enrollment approvals (for admin), units, terms.

Organization Create

Field Value
Route /org/new
Layout AppShell
FSD Page src/pages/org/ui/OrgCreatePage.tsx
App Export app/(dash)/org/new/page.tsx
Entity / Service OrganizationEntity, OrganizationService
Access parish-admin, super-admin
Description Form to create a new territorial (Region/Station/BEC) or categorical organization.

Enrollment Approval

Field Value
Route /org/[id]/enrollments/pending
Layout AppShell
FSD Page src/pages/org/ui/OrgEnrollmentPendingPage.tsx
App Export app/(dash)/org/[id]/enrollments/pending/page.tsx
Entity / Service EnrollmentEntity, EnrollmentService
Access Org admin, org owner
Description List of pending enrollment registrations. Approve or reject each entry.

Organization Member Roles

Field Value
Route /org/[id]/roles
Layout AppShell
FSD Page src/pages/org/roles/ui/OrgMemberRolesPage.tsx
App Export app/(dash)/org/[id]/roles/page.tsx
Entity / Service MemberEntity, MemberService
Access Org admin, org owner, super-admin
Description Manage roles of existing members (admin, member) and remove members from the organization.

Event & Attendance Screens

Event List

Field Value
Route /events
Layout AppShell
FSD Page src/pages/event/ui/EventListPage.tsx
App Export app/(dash)/events/page.tsx
Entity / Service EventEntity, EventService
Access All authenticated users. Private events filtered by org enrollment.
Description Upcoming and past events. Tabs: All / My Org. Filter by date range.

Event Detail

Field Value
Route /events/[id]
Layout AppShell
FSD Page src/pages/event/ui/EventDetailPage.tsx
App Export app/(dash)/events/[id]/page.tsx
Entity / Service EventEntity, RsvpEntity, AttendanceEntity, EventService, RsvpService, AttendanceService
Access All authenticated users (public events) or org members (private events).
Description Event info, RSVP action (if enabled), self-attendance (QR scan or GPS), attendance list for admin.

Event Create

Field Value
Route /events/new
Layout AppShell
FSD Page src/pages/event/ui/EventCreatePage.tsx
App Export app/(dash)/events/new/page.tsx
Entity / Service EventEntity, EventService
Access Org admin, org owner (private events). parish-admin (public events).
Description Form: name, description, location, GPS coordinates (optional), date/time, RSVP toggle, visibility.

Attendance Management

Field Value
Route /events/[id]/attendance
Layout AppShell
FSD Page src/pages/event/ui/EventAttendancePage.tsx
App Export app/(dash)/events/[id]/attendance/page.tsx
Entity / Service AttendanceEntity, AttendanceService, ParishionerEntity
Access Org admin, org owner, parish-admin (for public events)
Description Full attendance list. Approve/reject pending manual requests. Add manual attendance on behalf of parishioner.

Finance Screens

Financial Report (Overview)

Field Value
Route /finance
Layout AppShell
FSD Page src/pages/finance/ui/FinancePage.tsx
App Export app/(dash)/finance/page.tsx
Entity / Service FinancialPeriodEntity, TransactionEntity, TransactionService, FinancialPeriodService
Access treasurer, pastor, executive-board
Description Yearly overview: total income vs expense per month. Drill-down to monthly detail.

Monthly Period Detail

Field Value
Route /finance/[year]/[month]
Layout AppShell
FSD Page src/pages/finance/ui/FinancePeriodPage.tsx
App Export app/(dash)/finance/[year]/[month]/page.tsx
Entity / Service FinancialPeriodEntity, TransactionEntity, TransactionService
Access treasurer, pastor, executive-board
Description All transactions for a given month. Income/expense breakdown by category. Lock/unlock period (treasurer only).

Transaction Create

Field Value
Route /finance/[year]/[month]/new
Layout AppShell
FSD Page src/pages/finance/ui/TransactionCreatePage.tsx
App Export app/(dash)/finance/[year]/[month]/new/page.tsx
Entity / Service TransactionEntity, TransactionCategoryEntity, TransactionService
Access treasurer only. Period must be open.
Description Form: type (income/expense), category, amount, description, date, receipt photo (optional).

Transaction Detail / Edit

Field Value
Route /finance/[year]/[month]/[transactionId]
Layout AppShell
FSD Page src/pages/finance/ui/TransactionDetailPage.tsx
App Export app/(dash)/finance/[year]/[month]/[transactionId]/page.tsx
Entity / Service TransactionEntity, TransactionService
Access treasurer only. Edit/delete only if period is open.
Description Transaction detail view. Edit and delete available for treasurer on open periods.

Settings Screens

Profile Settings

Field Value
Route /setting
Layout AppShell
FSD Page src/pages/auth/ui/ProfileSettingsPage.tsx
App Export app/(dash)/setting/page.tsx
Entity / Service UserEntity, ParishionerEntity, ParishionerService
Access All authenticated users (approved).
Description View and edit personal profile. Display name, photo (from Google OAuth).

Transaction Category Management

Field Value
Route /setting/categories
Layout AppShell
FSD Page src/pages/finance/ui/CategorySettingsPage.tsx
App Export app/(dash)/setting/categories/page.tsx
Entity / Service TransactionCategoryEntity, TransactionService
Access super-admin, treasurer
Description CRUD for transaction categories (income and expense types).

User Management

Field Value
Route /setting/users
Layout AppShell
FSD Page src/pages/setting/ui/UserManagementPage.tsx
App Export app/(dash)/setting/users/page.tsx
Entity / Service UserEntity, UserService
Access super-admin, parish-admin
Description List all users. Assign/remove global roles. View account status.

Diocese List

Field Value
Route /setting/diocese
Layout AppShell
FSD Page src/pages/setting/ui/DioceseListPage.tsx
App Export app/(dash)/setting/diocese/page.tsx
Entity / Service DioceseEntity, DioceseService
Access All authenticated users (view). super-admin, parish-admin (manage).
Description List of all dioceses. Edit/delete actions restricted to super-admin and parish-admin.

Diocese Create

Field Value
Route /setting/diocese/new
Layout AppShell
FSD Page src/pages/setting/ui/DioceseCreatePage.tsx
App Export app/(dash)/setting/diocese/new/page.tsx
Entity / Service DioceseEntity, DioceseService
Access super-admin, parish-admin
Description Form to create a new diocese. Fields: name, address, phone, email, logo, website, description.

Diocese Detail / Edit

Field Value
Route /setting/diocese/[id]
Layout AppShell
FSD Page src/pages/setting/ui/DioceseDetailPage.tsx
App Export app/(dash)/setting/diocese/[id]/page.tsx
Entity / Service DioceseEntity, DioceseService
Access All authenticated users (view). super-admin, parish-admin (edit/delete).
Description Diocese detail view. Edit and delete available for super-admin and parish-admin.

Parish List

Field Value
Route /setting/parish
Layout AppShell
FSD Page src/pages/setting/ui/ParishListPage.tsx
App Export app/(dash)/setting/parish/page.tsx
Entity / Service ParishEntity, ParishService
Access All authenticated users (view). super-admin, parish-admin (manage).
Description List of all parishes. Edit/delete actions restricted to super-admin and parish-admin.

Parish Create

Field Value
Route /setting/parish/new
Layout AppShell
FSD Page src/pages/setting/ui/ParishCreatePage.tsx
App Export app/(dash)/setting/parish/new/page.tsx
Entity / Service ParishEntity, ParishService
Access super-admin, parish-admin
Description Form to create a new parish. Fields: dioceseId, name, address, phone, email, logo, website, description.

Parish Detail / Edit

Field Value
Route /setting/parish/[id]
Layout AppShell
FSD Page src/pages/setting/ui/ParishDetailPage.tsx
App Export app/(dash)/setting/parish/[id]/page.tsx
Entity / Service ParishEntity, ParishService
Access All authenticated users (view). super-admin, parish-admin (edit/delete).
Description Parish detail view. Edit and delete available for super-admin and parish-admin.

Error Screens

Not Found

Field Value
Route * (catch-all)
Layout ErrorShell
FSD Page src/pages/error/ui/NotFoundPage.tsx
App Export app/not-found.tsx
Entity / Service
Access All

Unexpected Error

Field Value
Route — (Next.js error.tsx)
Layout ErrorShell
FSD Page src/pages/error/ui/ErrorPage.tsx
App Export app/error.tsx
Entity / Service
Access All

This is a living document. Update as new screens are added to the MVP.