Skip to content

DataDave-Dev/valora-official

Repository files navigation

Valora

Open-source personal finance software to track your money with real detail — without paying for an app or living inside a spreadsheet.

Versión en español →

Valora helps you keep control of your finances: register income, expenses, outflows, credit cards, loans, and more, with a high level of detail. It's built for people who don't want to pay for a finance app, but also don't want to manage everything in Excel.

Vision

  • Free and open. A serious personal-finance tool that costs nothing and hides nothing.
  • AI without lock-in. Free AI models power smart features (spending recommendations, automatic transaction categorization, insights). Want a frontier model instead? Bring your own API key — no friction.
  • Multilingual. Built to speak many languages. Spanish ships today; more to come.
  • Detail-first. Track the things budgeting apps gloss over: credit cards, loans, and their real terms.

Features

  • Register income, expenses, and outflows
  • Credit cards and loans tracking
  • High-detail records
  • AI-assisted categorization and recommendations (planned)
  • Bring-your-own-API-key for frontier models (planned)
  • Multi-language support (Spanish available)

Tech Stack

Layer Technology
Framework Next.js 16 (App Router), React 19
Auth better-auth (email/password + Google OAuth)
Database SQLite via Drizzle ORM + better-sqlite3
UI Tailwind CSS 4, shadcn/ui, Radix UI, lucide-react
Email nodemailer (SMTP)
Language TypeScript

Getting Started

Prerequisites

Local setup

# 1. Install dependencies
pnpm install

# 2. Create your .env (see variables below)
cp .env.example .env   # if present, otherwise create .env manually

# 3. Apply database migrations
pnpm db:migrate

# 4. Start the dev server
pnpm dev

App runs at http://localhost:3000.

Environment variables

# Auth
BETTER_AUTH_SECRET=your-random-secret
BETTER_AUTH_URL=http://localhost:3000

# Google OAuth (optional)
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=

# Database (defaults to ./data/valora.sqlite)
SQLITE_PATH=./data/valora.sqlite

# SMTP (email delivery)
SMTP_HOST=
SMTP_PORT=587
SMTP_SECURE=false
SMTP_USER=
SMTP_PASS=
SMTP_FROM=

Database scripts

pnpm db:generate   # generate migrations from schema
pnpm db:migrate    # apply migrations
pnpm db:push       # push schema directly (dev)
pnpm db:studio     # open Drizzle Studio
pnpm db:reset      # reset the database
pnpm db:backup     # back up the database

Deploy to Vercel

Valora runs on Vercel, but note: it uses SQLite on the local filesystem, which is ephemeral on Vercel's serverless runtime — data will not persist between deployments/invocations. For a real Vercel deployment, point SQLITE_PATH at a persistent/networked SQLite service (e.g. Turso) or host on a server/VPS with a persistent disk. Set all environment variables above in the Vercel project settings.

Contributing

main is protected — no direct pushes. All changes go through Pull Requests.

  1. Branch from main
  2. Commit using Conventional Commits (feat:, fix:, chore:, ...)
  3. Open a PR against main

Before opening a PR:

pnpm lint
pnpm typecheck

License

MIT © Alonso David De León Rodarte

About

Open-source personal finance app — track income, expenses, credit cards, and loans in real detail. No subscription, no spreadsheets. Next.js 16 + SQLite.

Topics

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors