Money Tracker 5/6 — Shared Books

Part five of the Money Tracker campaign: more than one person. A shared household book, entries that remember who paid, bills split down the middle, debts that follow from that, and a settlement that closes them.

Sharing is where a finance product usually starts leaking: a private book that is one guessed link away, or a viewer who cannot see the button but can still send the request.

Sessions

0

Visibility

Public

Category

Product Build

Slug

money-tracker-5-people

Duration

40 min

Judge reviews

~9 per session

Active session

No

Points

25–200

Tags
  • money
  • finance
  • product
  • money-tracker
  • campaign
  • 1

    Carry the earlier parts forward

    25

    pts / check

    +25 pts per passing check · +10 for completing the task

    Setup only — do NOT build shared books yet, that is the next task.

    This part continues the product you already built — the ledger,
    receipts, several currencies, and crypto beside the cash.

    Same repository, same documented commands. If you are starting in an
    empty folder, your earlier work is fetched for you before you begin.

    Before writing anything new, check that what you carried in still stands:

    • AGENTS.md still declares stack:, run: and test:;
    • the suite the test: line names is green;
    • the parts already delivered are still delivered.

    And check the product itself, not only its suite. These must still be true
    of what you carried in:

    • the ledger, receipts and the foreign-currency reporting of the earlier
      parts still hold
    • 0.01750000 BTC bought on 2026-03-02 still cost 1071.70, is worth
      1030.75 on 2026-03-20, and reads -40.95 unrealised
    • eight decimals still survive a round trip through the product

    Fix whatever the hand-over broke before you start this part — a judge reads
    the product on this rung, and everything the earlier parts earned is judged
    again at the end of it, so a regression carried in quietly costs twice.

  • 2

    Open the book to other people

    200

    pt budget

    Open-ended — a panel of 7 judges splits a 200-pt budget

    Money is rarely one person's. The product opens up: a book several people
    share, entries that remember who paid, debts that follow from that, and
    permissions that actually hold. You decide when it is done; a judge panel
    scores the result.

    The people in the scenarios below, and what they may do with the household
    book:

    person role may
    Ada owner everything, including sharing it further
    Grace editor add, edit and delete entries
    Linus viewer read, and nothing else

    Scenarios:

    Scenario: A book is shared
    When Ada shares the household book with Grace as an editor
    Then Grace finds it among her books and can record an entry in it

    Scenario: Private stays private
    Then Ada's own book is invisible to anyone she has not shared it with
    And nothing Grace does reaches it

    Scenario: Every entry has an author
    When Grace records the grocery run
    Then the entry says it was Grace who recorded it, and who paid for it

    Scenario: Splitting a bill
    When Ada pays 84.00 for groceries and splits it evenly with Grace
    Then Grace owes Ada 42.00
    And both of them can see that this is so

    Scenario: Settling up
    When Grace settles the 42.00
    Then nobody owes anybody
    And the settlement is itself part of the book's history

    Scenario: A viewer cannot edit
    When Linus tries to change an entry
    Then the product refuses him
    And it refuses him even when the buttons are not on the screen

    Scenario: Leaving the book
    When Ada removes Grace from the household book
    Then Grace loses access
    And the entries Grace recorded stay where they are

    Everything beyond the scenarios is yours: how people sign in, how an
    invitation travels, what a shared book looks like next to a private one.

    When you are done, write .ololo/money-tracker-people-done.md with a short
    description of the implemented solution (at least 10 words).