Full-stack personal product
Functional application · Beta
TallyNorth: multi-currency financial planning and analytics
A full-stack platform integrating accounts, investments, and card transactions to consolidate net worth and project monthly cash flows.
- Next.js
- TypeScript
- FastAPI
- PostgreSQL
Context
Day-to-day personal finance management is often limited to tracking past expenses. However, to make real decisions, the user needs to view future liquidity and plan financed purchases before they hit their bank accounts.
Problem
The technical challenge was representing credit card purchases based on closing and due dates, projecting cash flow by calculating recurrences on demand, and consolidating assets across different currencies without direct exchange rates.
My responsibility
I designed and built the application end-to-end: from database schema and backend domain rules to the API client and analytics views in the interface.
Constraints
- Model credit card billing cycles and due dates without generating invalid dates or timeline gaps
- Enforce strict record isolation between users across all API endpoints
- Process bulk imports of transactions while enforcing strict validation and consistency
Key decisions
- Model each card purchase and its installments as independent entities to individually track their due dates and payments, while future recurrences are calculated on demand
- Isolate currency conversion, cash flow projection, and import logic from the web framework, allowing independent maintenance and testing
- Implement multi-tenant data isolation at the backend level so that each request operates strictly on the authenticated user's records
Implementation
- Structured the FastAPI REST API with Pydantic schemas separating data input from serialized outputs
- Built the interactive web interface with Next.js, React, and TypeScript, managing application state and optimizing data fetching
- Integrated Recharts for the interactive dashboard and Yahoo Finance API for scheduled market rate synchronization
Quality and safeguards
- Ensure database transactional integrity in PostgreSQL to write movements, cards, and budgets atomically and avoid orphaned states
- Protect the session token using signed cookies (HttpOnly, Secure, SameSite) against unauthorized access and common web vulnerabilities
- Versioned database migrations with Alembic and reproducible containerized environments using Docker Compose
Verified status and outcome
- Fully functional beta application deployed to production with a publicly accessible code repository
- Bilingual dashboard integration showing monthly cash flow projections, savings goal progress, and investment returns
- Working transaction entry system supporting manual inputs, bulk CSV imports, and automated statement scheduling
Trade-offs and work in progress
- Bulk imports depend on structured CSVs; processing raw statements is deferred to an upcoming AI module with human-in-the-loop validation
- On-demand recurrence expansion saves database storage but requires more compute power for large date range queries
- Prioritized transactional integrity and strict multi-tenant isolation over rapid prototyping of additional dashboard widgets