feat(ledger): add Project Lantern beancount ledger + fava launcher
A plain-text Beancount ledger tracking the mock project's first seven months (seed round, monthly burn, a $5k capitalized server purchase, a member reimbursement, a contributor equity grant, first pre-orders), plus budget directives and milestone events. Passes `bean-check`. `ledger/run-fava.sh` runs Fava from a local venv, working around the system package's missing `beanquery` dependency; `.venv/` is gitignored. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
da33c0eec7
commit
6f330d49d4
3 changed files with 289 additions and 0 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -17,4 +17,7 @@ dist-ssr
|
||||||
*.log
|
*.log
|
||||||
pnpm-debug.log*
|
pnpm-debug.log*
|
||||||
|
|
||||||
|
# python venv used to run Fava (see ledger/run-fava.sh)
|
||||||
|
.venv/
|
||||||
|
|
||||||
.claude/
|
.claude/
|
||||||
|
|
|
||||||
267
ledger/lantern.beancount
Normal file
267
ledger/lantern.beancount
Normal file
|
|
@ -0,0 +1,267 @@
|
||||||
|
;; ============================================================================
|
||||||
|
;; Project Lantern — mock ledger for the accounting pitch deck
|
||||||
|
;; ----------------------------------------------------------------------------
|
||||||
|
;; A hardware project inside the Atitlán incubator collective. This ledger
|
||||||
|
;; tracks the project's first seven months (Jan–Jul 2026) so it can be opened
|
||||||
|
;; in Fava (`fava ledger/lantern.beancount`) to show the "real" reporting that
|
||||||
|
;; sits behind the simplified visualizations in the slide deck.
|
||||||
|
;;
|
||||||
|
;; Story beats mirrored in the deck:
|
||||||
|
;; - Seed investment received and put to work as budgeted
|
||||||
|
;; - Salaries, rent, utilities, software — the monthly burn
|
||||||
|
;; - A $5,000 server purchase (capitalized as an ASSET, not an expense)
|
||||||
|
;; - A member fronts cash for fuel and is owed a reimbursement (a LIABILITY)
|
||||||
|
;; - A contributor earns equity instead of cash (a claim on future profit)
|
||||||
|
;; - First pre-order revenue starts coming in
|
||||||
|
;; ============================================================================
|
||||||
|
|
||||||
|
option "title" "Project Lantern — Atitlán Collective"
|
||||||
|
option "operating_currency" "USD"
|
||||||
|
|
||||||
|
;; ----------------------------------------------------------------------------
|
||||||
|
;; Chart of accounts
|
||||||
|
;; ----------------------------------------------------------------------------
|
||||||
|
2026-01-01 open Assets:Bank:Checking USD
|
||||||
|
2026-01-01 open Assets:Cash:PettyCash USD
|
||||||
|
2026-01-01 open Assets:Equipment:Servers USD
|
||||||
|
|
||||||
|
2026-01-01 open Liabilities:CreditCard USD
|
||||||
|
2026-01-01 open Liabilities:Reimbursements:Alice USD
|
||||||
|
|
||||||
|
2026-01-01 open Equity:Investors:Seed USD
|
||||||
|
2026-01-01 open Equity:Contributors:Bob USD
|
||||||
|
|
||||||
|
2026-01-01 open Income:PreOrders USD
|
||||||
|
|
||||||
|
2026-01-01 open Expenses:Salaries:Pat USD
|
||||||
|
2026-01-01 open Expenses:Salaries:Rayan USD
|
||||||
|
2026-01-01 open Expenses:Salaries:Sam USD
|
||||||
|
2026-01-01 open Expenses:Contributed:Engineering USD
|
||||||
|
2026-01-01 open Expenses:Materials USD
|
||||||
|
2026-01-01 open Expenses:Operations:Rent USD
|
||||||
|
2026-01-01 open Expenses:Operations:Utilities USD
|
||||||
|
2026-01-01 open Expenses:Operations:Software USD
|
||||||
|
2026-01-01 open Expenses:Travel:Fuel USD
|
||||||
|
|
||||||
|
;; ----------------------------------------------------------------------------
|
||||||
|
;; Budget — the plan the seed money was raised against (Fava reads these)
|
||||||
|
;; ----------------------------------------------------------------------------
|
||||||
|
2026-01-01 custom "budget" Expenses:Salaries:Pat "monthly" 2500.00 USD
|
||||||
|
2026-01-01 custom "budget" Expenses:Salaries:Rayan "monthly" 1500.00 USD
|
||||||
|
2026-01-01 custom "budget" Expenses:Salaries:Sam "monthly" 2000.00 USD
|
||||||
|
2026-01-01 custom "budget" Expenses:Materials "monthly" 2500.00 USD
|
||||||
|
2026-01-01 custom "budget" Expenses:Operations:Rent "monthly" 800.00 USD
|
||||||
|
2026-01-01 custom "budget" Expenses:Operations:Utilities "monthly" 200.00 USD
|
||||||
|
2026-01-01 custom "budget" Expenses:Operations:Software "monthly" 150.00 USD
|
||||||
|
|
||||||
|
;; ----------------------------------------------------------------------------
|
||||||
|
;; Milestones (shown on Fava's events page)
|
||||||
|
;; ----------------------------------------------------------------------------
|
||||||
|
2026-01-15 event "milestone" "Seed round closed — $100k in the bank"
|
||||||
|
2026-03-18 event "milestone" "Server cluster online (capital asset)"
|
||||||
|
2026-06-15 event "milestone" "First customer pre-orders received"
|
||||||
|
|
||||||
|
;; ============================================================================
|
||||||
|
;; JANUARY 2026 — the money arrives and is put to work
|
||||||
|
;; ============================================================================
|
||||||
|
|
||||||
|
2026-01-15 * "Atitlán Ventures" "Seed round — initial investment received"
|
||||||
|
Assets:Bank:Checking 100000.00 USD
|
||||||
|
Equity:Investors:Seed
|
||||||
|
|
||||||
|
2026-01-16 * "Coworking Tikal" "January workspace"
|
||||||
|
Expenses:Operations:Rent 800.00 USD
|
||||||
|
Assets:Bank:Checking
|
||||||
|
|
||||||
|
2026-01-16 * "Utilities co-op" "Power + internet"
|
||||||
|
Expenses:Operations:Utilities 200.00 USD
|
||||||
|
Assets:Bank:Checking
|
||||||
|
|
||||||
|
2026-01-16 * "SaaS bundle" "Design + CAD + hosting subscriptions"
|
||||||
|
Expenses:Operations:Software 150.00 USD
|
||||||
|
Assets:Bank:Checking
|
||||||
|
|
||||||
|
2026-01-31 * "Payroll" "January salaries"
|
||||||
|
Expenses:Salaries:Pat 2500.00 USD
|
||||||
|
Expenses:Salaries:Rayan 1500.00 USD
|
||||||
|
Expenses:Salaries:Sam 2000.00 USD
|
||||||
|
Assets:Bank:Checking
|
||||||
|
|
||||||
|
;; ============================================================================
|
||||||
|
;; FEBRUARY 2026 — petty cash float + first prototype parts on the card
|
||||||
|
;; ============================================================================
|
||||||
|
|
||||||
|
2026-02-02 * "Cash machine" "Withdraw petty-cash float for on-site purchases"
|
||||||
|
Assets:Cash:PettyCash 1000.00 USD
|
||||||
|
Assets:Bank:Checking
|
||||||
|
|
||||||
|
2026-02-03 * "Coworking Tikal" "February workspace"
|
||||||
|
Expenses:Operations:Rent 800.00 USD
|
||||||
|
Assets:Bank:Checking
|
||||||
|
|
||||||
|
2026-02-03 * "Utilities co-op" "Power + internet"
|
||||||
|
Expenses:Operations:Utilities 200.00 USD
|
||||||
|
Assets:Bank:Checking
|
||||||
|
|
||||||
|
2026-02-03 * "SaaS bundle" "Subscriptions"
|
||||||
|
Expenses:Operations:Software 150.00 USD
|
||||||
|
Assets:Bank:Checking
|
||||||
|
|
||||||
|
2026-02-10 * "Parts supplier" "Prototype components (company card)"
|
||||||
|
Expenses:Materials 3000.00 USD
|
||||||
|
Liabilities:CreditCard
|
||||||
|
|
||||||
|
2026-02-28 * "Payroll" "February salaries"
|
||||||
|
Expenses:Salaries:Pat 2500.00 USD
|
||||||
|
Expenses:Salaries:Rayan 1500.00 USD
|
||||||
|
Expenses:Salaries:Sam 2000.00 USD
|
||||||
|
Assets:Bank:Checking
|
||||||
|
|
||||||
|
;; ============================================================================
|
||||||
|
;; MARCH 2026 — settle the card, then the $5,000 server purchase
|
||||||
|
;; ============================================================================
|
||||||
|
|
||||||
|
2026-03-03 * "Coworking Tikal" "March workspace"
|
||||||
|
Expenses:Operations:Rent 800.00 USD
|
||||||
|
Assets:Bank:Checking
|
||||||
|
|
||||||
|
2026-03-03 * "Utilities co-op" "Power + internet"
|
||||||
|
Expenses:Operations:Utilities 200.00 USD
|
||||||
|
Assets:Bank:Checking
|
||||||
|
|
||||||
|
2026-03-03 * "SaaS bundle" "Subscriptions"
|
||||||
|
Expenses:Operations:Software 150.00 USD
|
||||||
|
Assets:Bank:Checking
|
||||||
|
|
||||||
|
2026-03-05 * "Company card" "Pay off February card balance"
|
||||||
|
Liabilities:CreditCard 3000.00 USD
|
||||||
|
Assets:Bank:Checking
|
||||||
|
|
||||||
|
;; The headline example from the deck: the hardware team needs $5,000 for
|
||||||
|
;; servers. It is NOT an expense — it buys a durable asset, so net worth is
|
||||||
|
;; unchanged the instant it happens: cash down $5k, equipment up $5k.
|
||||||
|
2026-03-18 * "Rack & Stack Ltd" "Server cluster for build/test farm — CAPITAL PURCHASE"
|
||||||
|
Assets:Equipment:Servers 5000.00 USD
|
||||||
|
Assets:Bank:Checking
|
||||||
|
|
||||||
|
2026-03-31 * "Payroll" "March salaries"
|
||||||
|
Expenses:Salaries:Pat 2500.00 USD
|
||||||
|
Expenses:Salaries:Rayan 1500.00 USD
|
||||||
|
Expenses:Salaries:Sam 2000.00 USD
|
||||||
|
Assets:Bank:Checking
|
||||||
|
|
||||||
|
;; ============================================================================
|
||||||
|
;; APRIL 2026 — a member fronts fuel money (owed back), more prototype parts
|
||||||
|
;; ============================================================================
|
||||||
|
|
||||||
|
2026-04-02 * "Coworking Tikal" "April workspace"
|
||||||
|
Expenses:Operations:Rent 800.00 USD
|
||||||
|
Assets:Bank:Checking
|
||||||
|
|
||||||
|
2026-04-02 * "Utilities co-op" "Power + internet"
|
||||||
|
Expenses:Operations:Utilities 200.00 USD
|
||||||
|
Assets:Bank:Checking
|
||||||
|
|
||||||
|
2026-04-02 * "SaaS bundle" "Subscriptions"
|
||||||
|
Expenses:Operations:Software 150.00 USD
|
||||||
|
Assets:Bank:Checking
|
||||||
|
|
||||||
|
;; Alice pays for fuel out of her own pocket. The org now OWES her — that debt
|
||||||
|
;; is a liability the moment it is logged, so she can see exactly where she
|
||||||
|
;; stands without waiting for anyone's memory.
|
||||||
|
2026-04-05 * "Alice" "Fuel for the org vehicle — fronted by member"
|
||||||
|
Expenses:Travel:Fuel 65.00 USD
|
||||||
|
Liabilities:Reimbursements:Alice
|
||||||
|
|
||||||
|
2026-04-12 * "Parts supplier" "Second prototype revision"
|
||||||
|
Expenses:Materials 4500.00 USD
|
||||||
|
Assets:Bank:Checking
|
||||||
|
|
||||||
|
;; Alice is paid back — the liability clears.
|
||||||
|
2026-04-20 * "Alice" "Reimburse fronted fuel expense"
|
||||||
|
Liabilities:Reimbursements:Alice 65.00 USD
|
||||||
|
Assets:Bank:Checking
|
||||||
|
|
||||||
|
2026-04-30 * "Payroll" "April salaries"
|
||||||
|
Expenses:Salaries:Pat 2500.00 USD
|
||||||
|
Expenses:Salaries:Rayan 1500.00 USD
|
||||||
|
Expenses:Salaries:Sam 2000.00 USD
|
||||||
|
Assets:Bank:Checking
|
||||||
|
|
||||||
|
;; ============================================================================
|
||||||
|
;; MAY 2026 — a contributor takes equity instead of cash
|
||||||
|
;; ============================================================================
|
||||||
|
|
||||||
|
2026-05-04 * "Coworking Tikal" "May workspace"
|
||||||
|
Expenses:Operations:Rent 800.00 USD
|
||||||
|
Assets:Bank:Checking
|
||||||
|
|
||||||
|
2026-05-04 * "Utilities co-op" "Power + internet"
|
||||||
|
Expenses:Operations:Utilities 200.00 USD
|
||||||
|
Assets:Bank:Checking
|
||||||
|
|
||||||
|
2026-05-04 * "SaaS bundle" "Subscriptions"
|
||||||
|
Expenses:Operations:Software 150.00 USD
|
||||||
|
Assets:Bank:Checking
|
||||||
|
|
||||||
|
;; Bob contributes engineering work but is paid in EQUITY rather than cash.
|
||||||
|
;; No money leaves the bank; instead Bob gains a claim on future profit.
|
||||||
|
2026-05-01 * "Bob" "Contributed engineering — settled as equity grant"
|
||||||
|
Expenses:Contributed:Engineering 3000.00 USD
|
||||||
|
Equity:Contributors:Bob
|
||||||
|
|
||||||
|
2026-05-20 * "Parts supplier" "Pre-production batch"
|
||||||
|
Expenses:Materials 6000.00 USD
|
||||||
|
Assets:Bank:Checking
|
||||||
|
|
||||||
|
2026-05-29 * "Payroll" "May salaries"
|
||||||
|
Expenses:Salaries:Pat 2500.00 USD
|
||||||
|
Expenses:Salaries:Rayan 1500.00 USD
|
||||||
|
Expenses:Salaries:Sam 2000.00 USD
|
||||||
|
Assets:Bank:Checking
|
||||||
|
|
||||||
|
;; ============================================================================
|
||||||
|
;; JUNE 2026 — the first revenue arrives
|
||||||
|
;; ============================================================================
|
||||||
|
|
||||||
|
2026-06-02 * "Coworking Tikal" "June workspace"
|
||||||
|
Expenses:Operations:Rent 800.00 USD
|
||||||
|
Assets:Bank:Checking
|
||||||
|
|
||||||
|
2026-06-02 * "Utilities co-op" "Power + internet"
|
||||||
|
Expenses:Operations:Utilities 200.00 USD
|
||||||
|
Assets:Bank:Checking
|
||||||
|
|
||||||
|
2026-06-02 * "SaaS bundle" "Subscriptions"
|
||||||
|
Expenses:Operations:Software 150.00 USD
|
||||||
|
Assets:Bank:Checking
|
||||||
|
|
||||||
|
2026-06-15 * "Early customers" "First pre-order deposits"
|
||||||
|
Assets:Bank:Checking 4000.00 USD
|
||||||
|
Income:PreOrders
|
||||||
|
|
||||||
|
2026-06-30 * "Payroll" "June salaries"
|
||||||
|
Expenses:Salaries:Pat 2500.00 USD
|
||||||
|
Expenses:Salaries:Rayan 1500.00 USD
|
||||||
|
Expenses:Salaries:Sam 2000.00 USD
|
||||||
|
Assets:Bank:Checking
|
||||||
|
|
||||||
|
;; ============================================================================
|
||||||
|
;; JULY 2026 — steady state; more pre-orders
|
||||||
|
;; ============================================================================
|
||||||
|
|
||||||
|
2026-07-02 * "Coworking Tikal" "July workspace"
|
||||||
|
Expenses:Operations:Rent 800.00 USD
|
||||||
|
Assets:Bank:Checking
|
||||||
|
|
||||||
|
2026-07-02 * "Utilities co-op" "Power + internet"
|
||||||
|
Expenses:Operations:Utilities 200.00 USD
|
||||||
|
Assets:Bank:Checking
|
||||||
|
|
||||||
|
2026-07-02 * "SaaS bundle" "Subscriptions"
|
||||||
|
Expenses:Operations:Software 150.00 USD
|
||||||
|
Assets:Bank:Checking
|
||||||
|
|
||||||
|
2026-07-10 * "Early customers" "Second pre-order batch"
|
||||||
|
Assets:Bank:Checking 2500.00 USD
|
||||||
|
Income:PreOrders
|
||||||
19
ledger/run-fava.sh
Executable file
19
ledger/run-fava.sh
Executable file
|
|
@ -0,0 +1,19 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
# Launch Fava for the Project Lantern ledger.
|
||||||
|
#
|
||||||
|
# The system Fava (pacman) is missing its `beanquery` dependency, so we run it
|
||||||
|
# from a local venv that reuses system site-packages and adds only what's
|
||||||
|
# missing. First run creates the venv; afterwards it's instant.
|
||||||
|
set -euo pipefail
|
||||||
|
cd "$(dirname "$0")/.."
|
||||||
|
|
||||||
|
PORT="${1:-5001}"
|
||||||
|
|
||||||
|
if [ ! -x .venv/bin/python ]; then
|
||||||
|
echo "Creating local venv for Fava tooling..."
|
||||||
|
python -m venv --system-site-packages .venv
|
||||||
|
.venv/bin/pip install --quiet "beanquery" "simplejson<4"
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec .venv/bin/python -c "import sys; from fava.cli import main; \
|
||||||
|
sys.argv=['fava','-p','${PORT}','ledger/lantern.beancount']; main()"
|
||||||
Loading…
Add table
Add a link
Reference in a new issue