Your personal vault for everything you own and everything you spend.
A self-hosted home inventory with an interactive 3D planner, paired with a full personal-finance suite.
Features • Quick Start • Tech Stack • Documentation • License
Track every item in your home — from the living-room cabinet to the left shelf of the hallway wardrobe — and every franc that moves through your accounts. One app, one self-hosted database, one dark glassmorphism UI.
| Overview Dashboard | Interactive 3D Planner | Asset Details & Battery Tracking |
|---|---|---|
Place your own screenshots in docs/screenshots/ to replace the placeholders.
- 5-Level Hierarchy: Organize by
House → Room → Furniture → Container → Item. - Interactive 3D Planner: Animated Three.js walkthrough with smooth GSAP camera navigation. Click rooms to enter, click furniture to slide drawers and open cabinet doors.
- Custom & Procedural 3D Models: Built-in procedural models for all common furniture types; upload per-item
.glb/.gltfmodels to float in the 3D scene or provide custom furniture models. - ⚡ Lithium Battery Maintenance Check:
- Specify if an item has a lithium battery with a periodic check interval (default: every 3 months).
- Automated alerts warn when a battery recharge is due to prevent irreversible cell degradation.
- Distinct amber attention styling, warning glow, badge indicators, and 3D scene orb color differentiation.
- One-click "Mark charged" action from list cards and item details.
- Photos & Attachments: Upload multiple photos, receipts, manuals, and warranty documents per item.
- Multi-Account Ledger: Checking, savings, investments, crypto, cash, credit cards, and loans in their native currencies with dated exchange rate conversions to CHF.
- Transactions & Multi-Category Splits: Income, Expense, Transfer, and Trade events (Buy/Sell/Dividend/Fee). Split single receipts across multiple categories.
- Automated Category Rules: Pattern-based rules to auto-categorize statement imports and transactions.
- Investment & Crypto Holdings: Track average cost basis, market value, unrealized P&L, allocation, and refresh live quotes via Finnhub and CoinGecko.
- Budgets & Savings Goals: Monthly per-category spend limits with progress tracking and savings target monitors.
- Loan Amortisation: Full mortgage and loan amortization schedules showing monthly interest/principal splits and payoff accelerators.
- Recurring Subscriptions & Cash Forecast: Calendar-aware billing cycles with automatic pending forecast creation and forward cash-flow projection (14–180 days).
- Daily Net Worth History: Automated daily snapshots aggregating cash, investments, and inventory assets.
- Swiss Tax Export: Generate year-end wealth declarations and Wertschriftenverzeichnis bundles.
- Self-Hosted Privacy: Single-file SQLite database (
luminavault.db). Zero telemetry, zero external dependencies. - Stateless Single-User JWT Auth: Registration automatically locks permanently after the first user is created.
- Two-Factor Authentication (TOTP): RFC 6238 authenticator app support with QR enrollment and 10 one-time recovery codes.
- Hardened Security: Strict same-origin CSP, brute-force login throttling, and fully self-hosted, offline Tesseract OCR.
- Modern UI: Dark glassmorphism interface built with Angular 21 (Zoneless + Signals), PrimeNG, and Tailwind CSS v4.
Detailed documentation has been organized into dedicated guides in the docs/ directory:
| Guide | Description |
|---|---|
| 🏠 Home Inventory & 3D Planner | Spatial hierarchy, 3D planner walkthrough, custom glTF models, and lithium battery maintenance tracking. |
| 💰 Personal Finance Suite | Multi-currency ledger, transaction splits, holdings, live quotes, budgets, loans, forecast, and tax exports. |
| 🔔 Notifications & Automated Scanner | Background scanner, deduplication keys, alert lifecycle, and notification configuration. |
| 📦 Data Management & Backups | ODS spreadsheet round-trips, bank CSV statement importing, and disaster recovery snapshots. |
| 🔐 Security, Auth & Configuration | JWT setup, TOTP 2FA, rate limits, reverse proxy setup, CSP headers, and environment variables. |
| 💻 Desktop App (Tauri v2) | Native desktop client setup, dynamic server URL switching, native OS notifications, and build guides. |
| 🏛️ Architecture & Project Structure | Vertical-slice backend design, zoneless Angular frontend, 3D graphics pipeline, and source tree. |
| Layer | Technology |
|---|---|
| Frontend | Angular 21 (Zoneless, Signals, Standalone Components) |
| Desktop Shell | Tauri v2 (Native Rust host, OS notifications, WebKit/WebView2) |
| UI & Styling | PrimeNG 21 · Tailwind CSS v4 · PrimeIcons · Frosted Glassmorphism |
| 3D Engine | Three.js r171 · OrbitControls · GLTFLoader · GSAP Animation Suite |
| Backend | ASP.NET Core 10 (Minimal APIs, Vertical Slice Architecture) |
| ORM & Database | Entity Framework Core 9/10 · SQLite with WAL mode & automated migrations |
| Auth & Security | JWT Bearer · Salted BCrypt · RFC 6238 TOTP 2FA |
| Document OCR | Tesseract.js (Self-hosted offline WebAssembly & language models) |
| Data Interop | OpenDocument Spreadsheet (.ods) · Bank CSV formats |
The fastest way to deploy LuminaVault for self-hosting:
# 1. Clone repository
git clone https://github.com/dominictosku/LuminaVault.git
cd LuminaVault
# 2. Configure environment
cp .env.example .env
# Generate signing keys:
openssl rand -base64 48 | tr -d '\n' > /tmp/k && echo LUMINA_JWT_KEY=$(cat /tmp/k) >> .env
openssl rand -base64 32 | tr -d '\n' > /tmp/s && echo LUMINA_SETUP_SECRET=$(cat /tmp/s) >> .env
# 3. Start stack
docker compose up -d --buildAccess the app at http://localhost:8080.
cd LuminaVault-Backend
dotnet run
# API runs at http://localhost:5256The SQLite database, storage folders, and default categories are created and migrated automatically on first start.
cd LuminaVault-Frontend
npm install
npm start
# App runs at http://localhost:4200Run LuminaVault as a native desktop application connecting to your local or self-hosted backend:
cd LuminaVault-Frontend
# Run in desktop development mode (with hot reload):
npm run tauri:dev
# Or build the native installer / binary (.deb, .AppImage, .msi, or .dmg):
npm run tauri:buildSee the Desktop Application Guide for OS library requirements and remote server synchronization.
Both backend and frontend feature thorough test suites:
# Run backend tests (integration, domain math, migrations, notifications):
dotnet test LuminaVault-Backend.Tests/LuminaVault-Backend.Tests.csproj
# Run frontend tests (vitest unit tests, battery logic, OCR):
npm --prefix LuminaVault-Frontend testLuminaVault's original code is licensed under the MIT License.
Third-party dependencies and bundled assets retain their respective licenses. See THIRD_PARTY_NOTICES.md for complete attributions.