User Guide
A guide to every module of the application as shipped. It is organised by what you can do, grouped by the kind of user you are. A full Site Map with access levels is at the end.
Who's who — roles & access
Access is decided by two things: your site-wide status and your per-family membership role.
Site-wide
- Visitor — not signed in. Sees only the public heritage portal.
- Registered user — has an account; can be a member of one or more families.
- Site admin (
isAdmin) — manages the public site content and sees governance dashboards across all families.
Per-family membership role (you can have a different role in each family)
- Viewer — can view the family tree and (if dues are enabled) the family's dues.
- Contributor — can add people, but their additions are PENDING until approved.
- Editor — can edit the tree, approve/reject contributions, extend the tree upward, confirm the founder.
- Owner — everything an Editor can do, plus manage members/roles and configure the Trust.
Dues-specific hats (layered on top of your role)
- Treasurer — records/voids payments and manages dues configuration.
- Chairman / House head — can view the family's dues (a head sees the whole family, with an extra focus on their own house).
Convention: if you lack access to something, the app shows "Not found" (404) rather than "Forbidden" — this deliberately avoids revealing that a resource exists.
1. Public heritage portal
Who: anyone (no account needed) · Where: /, /news, /p/<slug>
/— Heritage home. The public landing page. Shows a live "By the numbers" band (generations, total members, houses, regions — counts only, no personal data), a "Where we are" places summary (aggregate residence/region counts), and the latest announcements. Which family is shown here is chosen by a site admin./news— Announcements feed. Dated notices, AGM dates, gatherings, etc. Only published announcements appear./p/<slug>— Content pages. Free-form pages (history, about, etc.) authored by site admins.
Nothing here exposes personal data — it's safe for the public.
2. Accounts & signing in
Who: everyone · Where: /signup, /login, /change-password
/signup— create an account (name, email, password)./login— sign in./change-password— change your password. If an admin created your account with a temporary password, you're sent here automatically until you change it.
First-time setup: the very first owner must sign up normally, then be promoted from the server with
npm run set-role -- <email> OWNER(seeDEPLOYMENT.md).
3. Your families & the tree
Who: registered users · Where: /families, /families/new, /families/[familyId]
/families— the families you belong to. Each family is a single paternal tree rooted at one founder./families/new— start a new family: name it and enter the founder (the earliest-known ancestor / progenitor)./families/[familyId]— the family home / tree view. Browse the tree; each person links to their profile. Dues payment status shows as coloured markers on the tree when the Trust is enabled. A member-only link row gives quick access to Trust, Members, Approvals, Birthdays, Print.
4. Building the tree — adding & editing people
Who: Contributors (add, PENDING) and Editors/Owners (add + edit + structural changes)
- Person profile (
/families/[familyId]/people/[personId]) — a person's details, with actions. - Add a child (
/families/[familyId]/people/new) — add someone under a father. Contributor additions are PENDING; Editor/Owner additions are approved immediately. - Edit a person (
…/people/[personId]/edit) — update names, dates, places, spouse, living status. - Extend the tree upward (Editor/Owner, only from the current root):
- Add a known parent (
…/add-parent) — puts a real ancestor above the current root. - Add unknown ancestors — insert placeholder ancestors when you know roughly how many generations are missing (or "unknown" for an approximate gap).
- Add a known parent (
- Join mid-lineage / populate backwards (
…/anchor) — attach a new descendant beneath a known ancestor, auto-inserting placeholders for the unknown generations in between. - Flesh out a placeholder (
…/fill) — turn an "Unknown ancestor" placeholder into a real person. - Confirm the founder — mark the verified progenitor (gold "Founder" badge) vs. a merely earliest-known ancestor.
Placeholders stand in for unknown ancestors so you can record a lineage even with gaps, then fill them in later.
5. Lineage & printing
Who: family members · Where: /families/[familyId]/lineage/[personId], /families/[familyId]/print
- Lineage — a person's direct paternal line from the founder down. Shows only approved people.
- Download lineage PDF — a formatted, printable direct-lineage document.
- Print (
/print) — a print-friendly rendering of the family for the browser's Print dialog.
6. Contributions & approvals
Who: Editors/Owners approve; Contributors submit · Where: /families/[familyId]/approvals
- Contributors' new people are PENDING and tagged with who submitted them.
- The approval queue groups pending submissions by contributor. Editors/Owners can:
- Approve — also approves the person's still-pending ancestors (cascades up the chain).
- Reject — removes the person and their pending descendants (cascades down).
- Lineage and PDF/print surfaces always show approved-only data.
7. Members & roles
Who: Owners · Where: /families/[familyId]/members
- See everyone with access to the family and their role.
- Add members, change roles (Owner/Editor/Contributor/Viewer), remove members, and assign the treasurer flag.
- Optionally link a member to their person node in the tree (this is what lets someone view "their own" dues statement).
8. Birthdays
Who: any family member · Where: /families/[familyId]/birthdays
- A members-only list of upcoming birthdays — the next 30 days (with "Today" / "in N days"), then the rest of the year grouped by month.
- Shows name and day/month only — never age or birth year. Includes living members with a recorded birth date; excludes deceased, placeholders, and pending people.
9. The Trust (dues) — for members
Who: family members where the Trust is enabled · Where: /families/[familyId]/trust
- Dashboard (
/trust) — the current AGM period's picture: collected total, paid/partial/unpaid counts, % paid, and per-house tables (Emituba / Enyiriri) with subtotals. House heads also see an unpaid sheet for their own house. - My statement — from the dashboard, open your own statement: your per-period history (rate, paid, balance, status), arrears, total balance, and a payment ledger. Members can view only their own; treasurers/heads can look up anyone via the finder.
- Member statement page (
/trust/member/[personId]) — the statement above; printable, and downloadable as a PDF. - Receipt (
/trust/receipt/[paymentId]) — a per-payment receipt; printable and downloadable as a PDF.
The AGM cycle runs May → April. Dues are a flat rate per living beneficiary, set per period.
10. The Trust (dues) — for treasurers
Who: treasurers (record) and owners (configure) · Where: under /families/[familyId]/trust
- Record a payment (
/trust/record) — log a payment for a beneficiary: amount, date, method (Cash / MTN / Airtel / Bank), reference, who paid. - Quick-pay (
/trust/quick-pay) — record several payments at once. - Void a payment — reverse a payment with a required reason (kept for the audit trail; excluded from totals).
- Statement (
/trust/statement) — the whole-family period statement (summary + per-house tables + per-house unpaid sheets); printable and PDF-downloadable. - Reports (
/trust/reports) — analytics:- Expected vs collected per house (expected = living beneficiaries × rate) with Emituba/Enyiriri subtotals and progress bars.
- Collection over time — cumulative-toward-target, monthly, and year-over-year modes.
- Payments by method — totals by Cash/MTN/Airtel/Bank for the cycle.
- Timing — payments-per-month and a member-participation curve (% fully paid by month).
- Dues activity (
/trust/activity) — the recent money events for this family (recorded / voided / rate & settings changes). - Export CSV — download the period's payments.
- Configure the Trust (Owner,
/trust/settings) — enable the Trust, set the chairman, define houses (Emituba/Enyiriri, each with a progenitor and acting head), set the rate per period, and assign treasurers.
11. Site administration — public site content (CMS)
Who: site admins · Where: /admin
- Dashboard (
/admin) — live org-wide tiles (families, total people, pending approvals across all families, Trust-enabled families) above the content-management tiles. - Sections (
/admin/sections) — the ordered blocks of the public home page (numbers, places, announcements, lineage timeline, etc.): reorder, show/hide, and edit each section's copy. - Pages (
/admin/pages) — create/edit/publish free-form content pages served at/p/<slug>. - Announcements (
/admin/announcements) — post/publish dated notices shown on the portal and/news. Drafts stay private. - Navigation (
/admin/nav) — manage the portal's nav links and their order/visibility. - Media (
/admin/media) — uploaded assets. - Settings (
/admin/settings) — site name, footer, app settings, and the public family shown on the portal.
After first deploy (or when a release adds a new section), run
npm run seed:contentto populate default portal sections, then set the public family here.
12. Site administration — governance
Who: site admins · Where: /admin/approvals, /admin/activity
- Combined approvals (
/admin/approvals) — pending submissions across all families in one queue; a site admin can approve/reject in any family. - Activity / audit log (
/admin/activity) — a timeline of who changed what and when across dues (money), CMS content, membership/roles, and tree approvals; filterable by category. The money-accountability record for governance.
Site Map
Legend — access: P public · U any signed-in user · M family member (Viewer+) · C contributor · E editor · O owner · T treasurer · H head/chairman/viewer of dues · A site admin.
PUBLIC PORTAL
/ P Heritage home (by-the-numbers, places, announcements)
/news P Announcements feed
/p/[slug] P Content pages
ACCOUNT
/signup P Create account
/login P Sign in
/change-password U Change password (forced if temporary password)
FAMILIES & TREE
/families U Your families
/families/new U Create a family
/families/[familyId] M Family home / tree view
/people/new C Add a child (PENDING for contributors)
/people/[personId] M Person profile
/people/[personId]/edit E Edit a person
/people/[personId]/add-parent E Add a known parent above the root
/people/[personId]/anchor C Join mid-lineage (auto placeholders)
/people/[personId]/fill E Turn a placeholder into a real person
/lineage/[personId] M Direct paternal lineage (+ PDF)
/approvals E Approval queue (approve/reject cascades)
/members O Members & roles
/birthdays M Upcoming birthdays (name + day/month only)
/print M Printable family view
THE TRUST (DUES) — under /families/[familyId]/trust
/trust H Dues dashboard (period summary, houses)
/trust/record T Record a payment
/trust/quick-pay T Record several payments
/trust/statement H Whole-family statement (+ PDF)
/trust/reports H Expected-vs-collected, trends, method & timing
/trust/activity T Dues money-events log
/trust/member/[personId] M* Member statement (own; or anyone for T/H) (+ PDF)
/trust/receipt/[paymentId] H Payment receipt (+ PDF)
/trust/settings O Enable Trust, houses, rate, treasurers, chairman
SITE ADMIN — under /admin
/admin A CMS dashboard + org-wide tiles
/admin/sections A Home-page sections
/admin/pages A Content pages (/p/[slug])
/admin/announcements A Announcements
/admin/nav A Portal navigation
/admin/media A Media assets
/admin/settings A Site settings + public family
/admin/approvals A Combined cross-family approval queue
/admin/activity A Activity / audit log (all categories)
* Member statement: a member may open their own; treasurers/heads/viewers may open anyone's in the family.
Note on downloadable PDFs (served under
/api/families/[familyId]/dues/…/pdf): the receipt, member statement, and family statement each have a "Download PDF" button on their page, gated by the same access rules as the page.