---
title: "Deploy Finance Tracker"
description: "Private multi-user household finance ledger with budgets and CSV import."
category: "Analytics"
url: https://railway.com/deploy/finance-tracker-1
---

# Deploy Finance Tracker

Private multi-user household finance ledger with budgets and CSV import.

**[Deploy Finance Tracker on Railway](https://railway.com/template/finance-tracker-1)**

- **Creator:** wotonews
- **Category:** Analytics

## Template content

### Postgres https://devicons.railway.app/i/postgresql.svg

- **Image:** ghcr.io/railwayapp-templates/postgres-ssl:18

### finance-tracker

- **Image:** wotonews/finance-tracker:v0.1.0

## Documentation

# Deploy and Host Finance Tracker with Railway

Finance Tracker is private, multi-user household finance software. It replaces browser-only totals with an authenticated PostgreSQL ledger: accounts, cash flow, budgets, recurring bills, reversible transfers, and CSV import validation live together. Monetary values are stored as integer minor units, preventing floating-point drift.

## About Hosting Finance Tracker

Hosting Finance Tracker deploys the Node application and a managed PostgreSQL database together. Household members create accounts and record balanced postings rather than editing balances directly; the dashboard derives net worth and cash flow from posted ledger data. Secure signed sessions isolate households. Template supports EUR, USD, and COP; COP uses zero fractional digits. Version 0.1 includes manual account and transfer workflows, reverse-not-delete ledger safety, dashboard, onboarding, CSV preview/deduplication foundation, budget schema, and recurring transaction timeline model. It intentionally excludes bank synchronization and investment pricing.

## Common Use Cases

- Shared household cash, card, loan, and savings tracking
- Budget envelopes and monthly spending reviews
- Upcoming recurring bills and income planning
- Safe migration from spreadsheet or CSV transactions

## Dependencies for Finance Tracker Hosting

- Node.js 22 application runtime
- Railway PostgreSQL for users, sessions, household records, and immutable ledger postings

### Deployment Dependencies

- [Finance Tracker source](https://github.com/contourkde/finance-tracker)
- [PostgreSQL documentation](https://www.postgresql.org/docs/)
- [Railway Node.js deployment](https://docs.railway.com/guides/nodejs)

### Why Deploy Finance Tracker on Railway?

Railway hosts application servers and PostgreSQL on one platform with minimal configuration. Private service networking supplies database connection reference automatically. Scale vertically for larger ledgers or horizontally for web traffic while retaining managed deployment, logs, domains, and environment isolation.

## Environment variables

| Name | Required | Default | Description |
| --- | --- | --- | --- |
| `DATABASE_URL` | Yes | `${{Postgres.DATABASE_URL}}` | Railway private PostgreSQL connection reference. |
| `SESSION_SECRET` | No | auto-generated at startup | Cookie-signing secret. If unset, the app generates an ephemeral secret and sessions reset on each redeploy; set a stable random value (e.g. `openssl rand -hex 32`) for persistent logins. |
| `PORT` | Yes | `3000` | Internal Railway HTTP listener port. |
| `NODE_ENV` | Yes | `production` | Enables production cookie settings and SSL-aware database connections. |

Notes:
- The template ships the `wotonews/finance-tracker` Docker image (built from the private source repo) plus a managed single-node Railway PostgreSQL service. Private networking supplies `DATABASE_URL` automatically.
- v0.1 targets a single app instance; horizontal scaling requires a stable `SESSION_SECRET` shared across replicas.

## Local setup

1. Start PostgreSQL locally and copy `.env.example` to uncommitted `.env`.
2. Run `npm ci`, then `npm run migrate`.
3. Run `npm run dev`; open Vite local URL.

## Deploy with Railway

1. Push this isolated repository to `contourkde/finance-tracker` using `/push-github`.
2. Build and push the image: `./scripts/push-to-dockerhub.sh finance-tracker --tag v0.1.0` (bump the tag in `railway.json` on every image change).
3. Verify with a real deploy: `./scripts/railway-e2e-deploy.sh finance-tracker` — provisions managed Postgres first, then the app, and checks `/healthz`.
4. Publish via `./scripts/publish-template.sh finance-tracker`.

[![Deploy on Railway](https://railway.com/button.svg)](https://railway.com/new/template/finance-tracker-1?utm_medium=integration&utm_source=button&utm_campaign=finance-tracker)


## Similar templates

- [Betterlytics](https://railway.com/deploy/betterlytics) — Betterlytics is a cookieless analytics platform GDPR-compliant.
- [Matomo Analytics + MariaDB](https://railway.com/deploy/matomo-analytics-mariadb) — Privacy-friendly analytics with MariaDB and persistent volumes.
- [Bugsink](https://railway.com/deploy/bugsink) — Self-hosted Error Tracking. Sentry-SDK compatible

Open this page in a browser: https://railway.com/deploy/finance-tracker-1
