How it's built
How FinanceSight is put together: its architecture, security and data model, the figures behind it, and how to run your own copy. It describes the code, not any running instance.
Who built it, and how
FinanceSight is built by one person with AI assistance. It is a learning and decision-support tool, and it has not been reviewed by a financial professional.
Architecture
A React single-page app talks to a Node.js and Express REST API, which keeps everything in PostgreSQL through the Sequelize ORM. In production the API also serves the built front end, so there is one application to run.
The same container image runs three services: the web application; a background worker that runs scheduled jobs such as price refreshes and data retention, queued through Redis; and an MCP server that a compatible AI assistant connects to. Your browser talks to the web application only; the assistant, not the browser, is the MCP client. The MCP server is for self-hosted instances and is not routed on the public site.
Optional features are plugins that register their own routes, models and pages, so the core does not depend on them. Runtime configuration lives in the database and is edited from the admin screens; only what the process needs to boot and reach its database comes from the environment.
Metrics
These figures are generated from the API document, the tool registry, the decision records and the repository history rather than typed by hand, and a test fails the build if they go stale. The same figures appear in the llms.txt file at the root of the site.
| Measure | Figure | As at |
|---|---|---|
| Lines of source code | 640000 | November 2026 |
| Releases | 500 | November 2026 |
| MCP tools exposed | 144 | November 2026 |
| Back-end unit line coverage (%) | 78 | September 2026 |
| Front-end unit line coverage (%) | 93 | September 2026 |
| API endpoints documented | 823 | November 2026 |
| Back-end tests | 22000 | November 2026 |
| Front-end tests | 13000 | November 2026 |
| Commits | 7000 | November 2026 |
| API route modules documented | 119 | November 2026 |
| Architecture decision records | 31 | November 2026 |
| Continuous-integration jobs per merge request | 36 | November 2026 |
Security and data model
Signing in sets short-lived, httpOnly session cookies that page scripts cannot read, and every request that changes something carries a CSRF token. Two-factor sign-in with an authenticator app and single sign-on are both supported.
Every record belongs to a user or a household, and access is checked on the server for each request. An account can be shared as its owner, as someone who may add transactions, or read-only.
Secrets the app keeps for you, such as an AI provider key, are encrypted at rest and never shown back in full. AI features send a provider only what the feature needs, a privacy mode can reduce that to symbols or anonymised figures, and your own text is fenced off in prompts so a model reads it as data rather than as instructions.
An assistant connected over MCP uses a scoped personal access token you can revoke, and tools that would change your records wait for your approval. A guest uses a capped demonstration account that is removed automatically once it is left idle.
The diagram of the main entities, in plain text. Entities by tier: User (Kids/Core), Household (Standard), Accounts (Standard), Transactions (Standard), Forecasts (Standard), Portfolios (Investor), Holdings (Investor), Strategies (Plugin), Deployments (Plugin), Settings (Standard). Plugin entities: Playbooks, Research. Relations: Household to User, Household to Forecasts, Transactions to Accounts, Forecasts to User, Forecasts to Accounts, Holdings to Portfolios, Strategies to User, Deployments to Portfolios, Deployments to User. The full model lists every entity.
Running your own copy
FinanceSight is built to be run by anyone. The minimum is a container runtime, a PostgreSQL database and a Redis instance. Start the image with the database and Redis connection settings and the secrets it needs to boot; on boot it creates and migrates its own schema, so an upgrade is pulling a newer image.
Instance settings such as integrations, limits and the sign-up policy are managed in the app's admin screens rather than in configuration files. The full install guide lives in the source repository, which is private for now, so self-hosting opens with the public repository; until then, this page is the whole of what is published.
FinanceSight needs JavaScript to run. See /llms.txt for more.