Database Architecture
Limitless Budget uses a dual-database architecture:
- Master Database (master.db) - Stores user accounts, authentication, and budget metadata
- User Databases (user_{userId}.db) - One per user, stores budgets, transactions, accounts, and categories
Master Database Schema
User
Stores user account information:
- id, email, passwordHash, displayName
- avatarUrl, theme, defaultCurrency
- defaultBudgetId, sidebarCollapsed
- hideAllAccounts, hideReports
BudgetMetadata
Tracks budget ownership and access:
- id, budgetId (in user database), name, currency
- ownerId, databasePath
- Relations to BudgetAccess for sharing
BudgetAccess
Manages budget sharing permissions:
- userId, budgetMetadataId, permissions (admin/editor/viewer)
User Database Schema
Budget
Main budget entity:
- id, name, currency, dateFormat
- userId (creator), createdAt, updatedAt
Account
Financial accounts:
- id, budgetId, name, type (checking/savings/credit/cash/tracking)
- onBudget (boolean), currency, balance
- closed (boolean), sortOrder
CategoryGroup
Groups for organizing categories:
- id, budgetId, name, sortOrder
Category
Budget categories:
- id, groupId, budgetId, name
- monthlyBudget, monthlyAvailable, sortOrder
- isIncome (boolean), hidden (boolean)
- goalAmount, goalFrequency
Transaction
Financial transactions:
- id, budgetId, accountId, categoryId
- date, payee, amount, memo
- cleared (boolean), reconciled (boolean)
Payee
Transaction payees:
- id, budgetId, name
- defaultCategoryId, includeInList (boolean)
Database Files
Database files are stored in the DATA_PATH directory:
master.db- Master databaseuser_{userId}.db- One per user
Backing Up
To backup your data, copy the database files:
# Backup all databases cp -r /path/to/data /path/to/backup/