Daniel Togni

Laravel 12 · 2,200+ tests · live for 4 years

Manage shared family wealth like a fund.

A self-hosted portfolio platform that tracks funds, accounts, holdings, and goals across a family — with share-based fund accounting, bitemporal history, multi-account funds, multi-tenant access control, automatic price/position feeds, and quarterly PDF reports. Built with Laravel 12, live for 4 years.

What it does

Real accounting for a household, not a spreadsheet.

Funds & accounts

Model shared pools and individual accounts.

Multi-account funds

A fund can hold multiple accounts — a consolidated net-worth view across institutions.

Holdings & prices

Assets with full historical pricing across portfolios.

Transactions

A full ledger of every movement.

Goals & projections

Track targets and forward-looking projections over time.

Matching rules

Automate contributions and allocations.

Share loans

Internal lending — an account can borrow against its own balance, with a schedule and a payment simulator.

Multi-tenant ACL

Family-member logins with isolated data — multi-tenant by design.

Quarterly reports

PDF statements generated and emailed automatically, with new graphs and forward-looking projections.

Brokerage ingestion

Imports Interactive Brokers Flex statements.

The story

Built to manage a fund for the extended family — my siblings' kids and the next generation — aimed at long-horizon generational growth, with real accounting in place of spreadsheets. Live for 4 years; quarterly PDF statements are generated and emailed to family members automatically. The continuous, real operation is the credibility hook: it's not a demo.

Screenshots

Live dev environment, anonymized data — the real production system, just signed in as a test user.

Dashboard

The navigation hub — funds, accounts, transactions, share loans, trading, and reports.

FamilyFund dashboard — top-level navigation cards for funds, accounts, transactions, share loans, trading, and reports.

Fund overview

Summary cards, net-worth-over-time chart, and portfolio breakdown.

Fund overview page showing net worth $101,863, one-year change +$33,616 (+49.3%), a net-worth-over-time line chart, and a portfolio breakdown.

Account detail

Per-account view — summary, goal progress, value / shares / share-price charts, performance tables, and the full transaction history.

Account detail page with summary metrics, goal progress, value-over-time and shares-over-time charts, share-price step chart, performance tables, transaction history, and matching rules.

Trading bands

Per-asset target allocations with deviation triggers, portfolio variants over time, and live drift charts. DS Trader feeds the prices; FamilyFund is the book of record.

FamilyFund trading-bands view: per-asset target allocations (SPY, IAU, BTC, etc.), deviation triggers, target/actual variance, portfolio variants over time, and drift charts.

Video walkthroughs

Narrated screen recordings over anonymized data — the real system, walked section by section.

Funds deep-dive

One fund, section by section — highlights, the financial-independence goal, asset groups, value versus the S&P 500, forward projections, and the admin-only views.

Account deep-dive

One member's account — market value, goals, balances over time, performance, matching, and borrowing against shares.

Share Loans

Borrowing shares against your own balance — the create form, an active loan's progress and schedule, admin readjustment, the payment simulator, and the fund-level loan exposure rollup.

Sample reports

Anonymized quarterly statements (PDF) — auto-generated and emailed every quarter to each family member.

Fund-level statement

Asset and portfolio allocation, monthly / yearly performance, 10-year linear-regression forecast, per-account share allocation. Synthetic data, real layout.

Account-level statement

Shares, market value, goal progress, transaction history, employer-matching rules, share-loan ledger. Synthetic data, real layout.

Under the hood

Stack
Laravel 12, PHP 8.2, MariaDB, Livewire 3, Tailwind.
Accounting
Share-based fund accounting (accounts hold shares, not dollars) over bitemporal tables (start/end-dated balances, positions, and prices) — enabling an /as_of/{date} time-travel API.
Domain model
Fund, Account, Transaction, Portfolio, Asset, AssetPrice, Goal, AccountMatchingRule, CreditLine.
API
Token-guard REST API; bulk price/portfolio ingestion endpoints consumed by DS Trader.
Access control
Multi-tenant role-based access (Spatie) — family-member logins with isolated data.
Jobs
Scheduled tasks for pricing, quarterly reports, and brokerage ingestion.
Reporting
Quarterly PDF statements with forward-looking projections and new graph types, generated and emailed.
Testing
~240 test files / 2,200+ tests across 5 suites (Unit, Feature, API, Repository, golden-data).
Ops
Self-hosted, multi-tier backups; security scans in progress as the repo nears public release.

The integrated platform

FamilyFund is one half of a two-app platform. DS Trader — a live, rules-based algorithmic trading engine — pushes positions and prices in via REST. End-to-end ownership across Java, PHP, Python, data modeling, API design, and operations.

Reliability & operations

  • ~240 test files / 2,200+ tests across 5 suites as a quality gate.
  • Scheduled jobs + cron in production.
  • Multi-tier backups.
  • Real, continuous daily use, with quarterly PDF reports delivered to the family — the ultimate uptime test.

Roadmap

  • Public repo release — completing security scans, then opening the repo with demo screenshots over synthetic data.
  • Order-execution feedback loop — surface DS Trader order failures as admin-only data issues on FamilyFund pages, closing the loop between the two systems.

About / contact

jdtogni@gmail.com · GitHub · back to home