A complete personal finance tracker — banks, equities, alternatives, reminders, AI-parsed broker statements. Hosted entirely in your own Railway account. We have no access to your database. Ein vollständiger Vermögens-Tracker — Banken, Aktien, alternative Anlagen, Erinnerungen, KI-gestützte Analyse von Broker-Auszügen. Läuft komplett in deinem eigenen Railway-Account. Wir haben keinen Zugriff auf deine Datenbank.
Dashboard — your portfolio at a glance
Dashboard — dein Portfolio auf einen Blick
Equities — per-position P/L & cost basis
Aktien — Position-P/L & Einstandspreise
Click any screenshot to open the live demo with synthetic data — experience it yourself. Klick auf einen Screenshot, um die Live-Demo mit synthetischen Daten zu öffnen — selbst ausprobieren.
Built around how a real portfolio is actually held — across banks, brokers, currencies, and asset classes — not a one-account-fits-all toy. Gebaut für ein echtes Portfolio — über Banken, Broker, Währungen und Anlageklassen hinweg — nicht für ein Spielzeug-Konto.
Connect via Pluggy (Brazil), Teller (US), Enable Banking (EU PSD2), or Lunchflow. Or upload CSV statements. Transactions, balances, statements all sync in one place.Anbindung über Pluggy (Brasilien), Teller (USA), Enable Banking (EU PSD2) oder Lunchflow. Alternativ CSV-Auszüge hochladen. Transaktionen, Salden, Auszüge — alles an einem Ort.
Native balances per currency plus live FX conversion to USD. No more "estimated total" — see exactly what you hold and what it's worth today.Native Salden je Währung plus tagesaktuelle Umrechnung in USD. Keine "geschätzten Summen" — du siehst exakt, was du hältst und was es heute wert ist.
Manual positions or imported from broker statements. Per-bank share splits, cost basis, baseline + YTD + total P/L, dividend history. Yahoo Finance prices refresh on a cron.Manuelle Positionen oder importiert aus Broker-Auszügen. Stückaufteilung pro Bank, Einstandspreis, Baseline + YTD + Total P/L, Dividendenhistorie. Yahoo-Finance-Preise per Cron.
Gold ETFs, physical bars, individual bonds with maturity + coupon tracking. Separate surfaces so they don't muddle the equity P/L.Gold-ETFs, physische Barren, einzelne Anleihen mit Fälligkeit + Kupon-Tracking. Eigene Bereiche, damit sie das Aktien-P/L nicht verwässern.
PE / VC / hedge funds with commitment, paid-in capital, distributions, and current value tracking. Quarterly statements parsed automatically by AI.PE / VC / Hedgefonds mit Commitment, eingezahltem Kapital, Distributionen und aktuellem Wert. Quartalsberichte werden automatisch durch KI ausgewertet.
Open positions with strike, expiry, premium, P/L. Autocall barriers and striking-period tracking for structured notes. Lombard credit lines with rate types.Offene Positionen mit Strike, Verfall, Prämie, P/L. Autocall-Barrieren und Striking-Period-Tracking für strukturierte Produkte. Lombard-Kreditlinien mit Zinsarten.
Track expected inflows + outflows. Auto-matches against bank transactions when they arrive. Configurable tolerance windows for amount and date drift.Erwartete Ein- und Ausgänge tracken. Automatischer Abgleich mit eingehenden Bank-Transaktionen. Konfigurierbare Toleranzen für Betrag und Datum.
Email reminders for overdue payments, balance thresholds, statement closing dates. Optional WhatsApp delivery via your own bot. Multi-language (EN / DE / PT).E-Mail-Erinnerungen für überfällige Zahlungen, Saldo-Schwellen, Abrechnungstage. Optional WhatsApp-Versand über deinen eigenen Bot. Mehrsprachig (DE / EN / PT).
Forward broker statements + trade confirmations to a dedicated address. Claude extracts trades, holdings, distributions into a review queue. You approve, the data lands.Broker-Auszüge und Trade-Bestätigungen an eine eigene Adresse weiterleiten. Claude extrahiert Trades, Positionen, Distributionen in eine Review-Queue. Du bestätigst, die Daten landen.
Per-category monthly budgets with running totals. Pattern-based auto-categorization rules. Spending dashboard pivots categories × months for credit card review.Monatliche Budgets pro Kategorie mit laufenden Summen. Pattern-basierte Auto-Kategorisierungs-Regeln. Spending-Dashboard pivotiert Kategorien × Monate für Kreditkarten-Reviews.
Daily briefing email. Custom report builder — drag-and-drop blocks (positions, recurring, spending, etc.). Scheduled monthly reports with HTML email + PDF attachments.Tägliches Briefing per E-Mail. Custom-Report-Builder — Drag-and-Drop-Bausteine (Positionen, wiederkehrende Zahlungen, Spending …). Geplante Monatsberichte mit HTML + PDF.
Manager + viewer roles with email-invite flow. Family-office or advisor + client setups out of the box. Revoke access from the security panel.Manager- und Viewer-Rollen mit Einladungsflow per E-Mail. Family-Office- oder Berater-Mandant-Setups out of the box. Zugriff über das Security-Panel widerrufbar.
Most finance apps say "we take your privacy seriously" while having full read access to every transaction. This one is built differently: the architecture itself prevents us from seeing your data. Die meisten Finanz-Apps sagen "wir nehmen Datenschutz ernst" — und haben gleichzeitig Vollzugriff auf jede Transaktion. Diese App ist anders gebaut: Die Architektur selbst verhindert, dass wir deine Daten sehen können.
The database lives in your Railway VPC. We have no DATABASE_URL, no SSH key, no team membership. Zero credentials to your environment.Die Datenbank lebt in deiner Railway-VPC. Wir haben keine DATABASE_URL, keinen SSH-Key, keine Team-Mitgliedschaft. Null Credentials zu deiner Umgebung.
The image makes outbound requests to bank aggregators, Anthropic, Yahoo Finance, your email provider — and nothing else. CI fails the build if a new domain appears.Das Image macht ausgehende Requests an Bank-Aggregatoren, Anthropic, Yahoo Finance, deinen Mail-Provider — und sonst nichts. Die CI bricht den Build ab, wenn eine neue Domain auftaucht.
Plaid, Teller, Pluggy, Anthropic, Resend, SMTP — every secret is set in your env vars. None ever flow to us. If you don't set a key, the integration is off.Plaid, Teller, Pluggy, Anthropic, Resend, SMTP — jedes Secret liegt in deinen Env-Vars. Nichts fließt zu uns. Wenn du keinen Key setzt, ist die Integration aus.
No Sentry, no Plausible, no GA, no anonymous usage stats. Not opt-out — not present. Errors stay in your Railway logs.Kein Sentry, kein Plausible, kein GA, keine anonymen Nutzungsstatistiken. Nicht "opt-out" — schlicht nicht vorhanden. Fehler bleiben in deinen Railway-Logs.
You pull the image from a public Docker registry on your schedule. We have no inbound channel to push code into your container.Du ziehst das Image aus einer öffentlichen Docker-Registry — wann du willst. Wir haben keinen eingehenden Kanal, um Code in deinen Container zu pushen.
Pin to a specific image tag (:v1.2.3) and audit the matching source before allowing your service to update. Sigstore-signed releases verify provenance.Auf einen bestimmten Image-Tag pinnen (:v1.2.3) und den passenden Quellcode prüfen, bevor du Updates erlaubst. Sigstore-signierte Releases bestätigen die Herkunft.
# In Railway → Service → Settings → Networking
# Add an outbound deny rule for: paired.net, *.paired.net
# The app keeps working. Empirical proof, not a promise.
# In Railway → Service → Settings → Networking
# Outbound-Regel hinzufügen, die paired.net und *.paired.net blockiert.
# Die App läuft weiter. Empirischer Beweis, kein Versprechen.
Or run the egress-allowlist test against your own clone — every host the image touches is listed in SECURITY.md with what's sent and what gates it. Oder den Egress-Allowlist-Test gegen deinen eigenen Fork laufen lassen — jede Domain, die das Image kennt, ist in SECURITY.md dokumentiert mit dem, was gesendet wird und was den Zugriff schaltet.
Privacy is about what we can't see. Security is about what an attacker can't do — even if they get to the login page. Six layers, all configurable per-tenant. Datenschutz heißt: Was wir nicht sehen können. Sicherheit heißt: Was ein Angreifer nicht tun kann — selbst wenn er auf der Login-Seite landet. Sechs Schichten, alle pro Tenant konfigurierbar.
WebAuthn-based passkeys: Touch ID, Face ID, Windows Hello, hardware keys (YubiKey). Phishing-resistant by design — the credential never leaves your device, can't be replayed against a fake site.Passkeys via WebAuthn: Touch ID, Face ID, Windows Hello, Hardware-Keys (YubiKey). Phishing-resistent — der Credential verlässt nie dein Gerät, kann nicht gegen eine Fake-Seite verwendet werden.
Set LOGIN_ALLOWED_IPS=1.2.3.4,10.0.0.0/24. Login attempts from anywhere else get a 403 before the password is even checked. Existing sessions continue to work from any IP — only the login endpoint is locked down.Setze LOGIN_ALLOWED_IPS=1.2.3.4,10.0.0.0/24. Login-Versuche von woanders bekommen einen 403, bevor das Passwort überhaupt geprüft wird. Bestehende Sessions laufen von überall weiter — nur der Login ist gesperrt.
Brute-force protection on /api/auth/login with progressive backoff. Failed-attempt logs preserved in your Railway logs for review.Brute-Force-Schutz auf /api/auth/login mit progressivem Backoff. Logs gescheiterter Versuche bleiben in deinen Railway-Logs zur Auswertung.
Two roles: managers can edit, viewers can only read. Invite users by email; they set their own password + enroll their own passkey on first login. Revoke access anytime.Zwei Rollen: Manager dürfen schreiben, Viewer nur lesen. Nutzer per E-Mail einladen; sie setzen Passwort + Passkey selbst beim ersten Login. Zugriff jederzeit widerrufbar.
Sessions signed with your API_TOKEN. 30-day default TTL, override per-tenant. Once issued, tokens don't talk to the server until expiry — no central session store to compromise.Sessions signiert mit deinem API_TOKEN. 30 Tage Standard-TTL, pro Tenant überschreibbar. Tokens kommunizieren nach Ausgabe nicht mit dem Server — kein zentrales Session-Store, das kompromittiert werden könnte.
Passwords hashed with bcrypt, cost factor 10. Rotate API_TOKEN by setting a new env var and redeploying — all existing sessions invalidate. No "forgot password" loop sending plain emails.Passwörter mit bcrypt gehasht (Cost 10). API_TOKEN rotieren: einfach neue Env-Var setzen + redeployen — alle bestehenden Sessions werden ungültig. Kein "Passwort vergessen"-Mailflow im Klartext.
# Set in your Railway service env vars:
LOGIN_ALLOWED_IPS=1.2.3.4 # your home/office IP
WEBAUTHN_RP_ID=finances.yourdomain.com # your domain (not ours)
WEBAUTHN_BYPASS=0 # require passkey after first enrollment
WEB_SESSION_TTL_SECONDS=86400 # shorter session if you prefer
# In den Railway-Service-Env-Vars setzen:
LOGIN_ALLOWED_IPS=1.2.3.4 # deine Heim-/Büro-IP
WEBAUTHN_RP_ID=finances.deine-domain.de # deine Domain (nicht unsere)
WEBAUTHN_BYPASS=0 # Passkey nach erster Anmeldung erforderlich
WEB_SESSION_TTL_SECONDS=86400 # kürzere Session, falls gewünscht
Plus: enroll a passkey on every device that needs access, then turn the bypass off. After that, an attacker would need both your password AND physical access to one of your devices. Außerdem: auf jedem Gerät einen Passkey enrollen, dann den Bypass deaktivieren. Danach bräuchte ein Angreifer sowohl dein Passwort UND physischen Zugang zu einem deiner Geräte.
One-click Railway template. Provisions Postgres + a 1GB volume + the finances service. Walks you through the env vars (admin email, your bank aggregator keys, etc.) on first boot. Ein-Klick-Railway-Template. Provisioniert Postgres + ein 1-GB-Volume + den finances-Service. Beim ersten Start wirst du durch die Env-Vars geführt (Admin-Mail, deine Bank-Aggregator-Keys, etc.).
Start the deploy wizard → Deploy-Wizard starten → ~$5/mo Railway hobby tier covers Postgres + service. Bank aggregator keys are free for personal use on most providers. ~5 $/Monat Railway-Hobby-Tarif deckt Postgres + Service ab. Bank-Aggregator-Keys sind bei den meisten Anbietern für den privaten Gebrauch kostenlos.