8000 GitHub - dominictosku/LuminaVault · GitHub
[go: up one dir, main page]

Skip to content

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

✦ LuminaVault

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.

Personal learning project License

Features • Quick Start • Tech Stack • Documentation • License

Angular 21 .NET 10 Three.js Tailwind CSS v4 SQLite PrimeNG 21


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.


📸 Screenshots

Overview Dashboard Interactive 3D Planner Asset Details & Battery Tracking
Dashboard screenshot 3D planner screenshot Item form screenshot

Place your own screenshots in docs/screenshots/ to replace the placeholders.


✦ Features

🏠 Home Inventory & 3D Spatial Planner

  • 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/.gltf models 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.

💰 Personal Finance Suite

  • 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.

🔐 Security & Platform

  • 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.

📚 Documentation

Detailed documentation has been organized into dedicated guides in the docs/ directory:

Guide Description
🏠 Home Inventory & 3D Planner 97D4 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.

🛠 Tech Stack

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

🚀 Quick Start

Option 1: Docker Compose (Recommended)

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 --build

Access the app at http://localhost:8080.


Option 2: Local Development

Prerequisites

1. Backend

cd LuminaVault-Backend
dotnet run
# API runs at http://localhost:5256

The SQLite database, storage folders, and default categories are created and migrated automatically on first start.

2. Frontend

cd LuminaVault-Frontend
npm install
npm start
# App runs at http://localhost:4200

Option 3: Native Desktop App (Tauri v2)

Run 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:build

See the Desktop Application Guide for OS library requirements and remote server synchronization.


🧪 Running Tests

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 test

📄 License

LuminaVault'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.


Built with ☕, Three.js, and a passion for clean software.

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

0