GADIEL MUÑOZ
← Back to work
● Live · public beta

Virureko

Multi-user personal finance in guaraníes: accounts, budgets, recurring payments, savings goals and reports. Live at virureko.com, built with AI agents under my architecture and review.

See it live: virureko.com ↗ (opens in a new tab)
Role
Product, architecture and deployment
Year
2026
Platform
Next.js 16 · PostgreSQL 16
Code
Private

Problem

Personal finance apps don't think in guaraníes or in how money is handled here, and they mix transfers between your own accounts with spending, so the numbers never match the bank.

Solution

Accounts with real balances, per-category budgets, recurring payments you confirm (nothing is recorded on its own), savings goals and comparative reports. Mobile-first, installable as an app (PWA), with CSV and PDF export.

Technical decisions

  1. 01

    Strict isolation between users

    Every server query is filtered by the session's user, never by an id sent from the browser, and a test suite proves nobody can see or touch someone else's data. Passwords hashed with argon2id and leaked passwords rejected; email verified with a one-time code and rate limiting.

  2. 02

    Money as integers, never floats

    Amounts are stored as integers (BigInt) in PostgreSQL and balances are derived from the transactions. Transfers between your own accounts are neither income nor spending, and goals don't move money: nothing is counted twice.

  3. 03

    Simple, hardened deployment

    Own VPS with Docker Compose: the app, PostgreSQL with no exposed port and Caddy with automatic HTTPS. Key-only SSH, firewall, fail2ban and CI with GitHub Actions. Server-rendered SVG charts and PDF from a printable page, no heavy libraries.

Stack

Next.js 16TypeScriptTailwind CSS 4PostgreSQL 16Prisma 7Auth.js v5ZodDocker ComposeCaddyGitHub Actions
Next projectAskDocs