Overview
Discover what makes WYGIWYH powerful
**WYGIWYH** (“What You Get Is What You Have”) is a self‑hosted, opinionated finance tracker that prioritizes simplicity while offering a rich set of developer‑friendly features. At its core, the application exposes a **RESTful JSON API** that allows programmatic creation, querying, and manipulation of accounts, currencies, transactions, and custom rules. The API is intentionally lightweight—no authentication tokens or OAuth flows are required for local deployments, but the codebase can be extended to support JWT or session‑based auth if needed.
Backend
Database
Frontend
Containerization
Overview
WYGIWYH (“What You Get Is What You Have”) is a self‑hosted, opinionated finance tracker that prioritizes simplicity while offering a rich set of developer‑friendly features. At its core, the application exposes a RESTful JSON API that allows programmatic creation, querying, and manipulation of accounts, currencies, transactions, and custom rules. The API is intentionally lightweight—no authentication tokens or OAuth flows are required for local deployments, but the codebase can be extended to support JWT or session‑based auth if needed.
Architecture & Technical Stack
- Backend: Written in Go (Golang), leveraging the
net/httpstandard library with a small router layer (gorilla/mux). Go’s compile‑time type safety and static binaries make the service ideal for containerized or bare‑metal deployments. - Database: Uses PostgreSQL 15+ as the primary data store, with a schema that normalizes accounts, currencies, and transaction metadata. The code contains an ORM‑like layer built on
sqlxthat abstracts common CRUD operations while keeping raw SQL for performance. - Frontend: A single‑page application built with SvelteKit, compiled to vanilla JavaScript and served by the Go backend. The UI is intentionally minimalistic, focusing on data visualization (charts for net‑worth, DCA curves) and quick entry forms.
- Containerization: A Dockerfile is provided, exposing a single port (
8000) and mounting a volume for persistence. The image can be run viadocker composeor any Kubernetes deployment with minimal configuration.
Core Capabilities
- Multi‑currency & Custom Currencies: The system supports arbitrary ISO‑4217 codes and user‑defined currencies (e.g., crypto, reward points). Exchange rates are stored in a dedicated table and can be updated via an external service or manually through the API.
- Automated Rules Engine: Developers can define rules that trigger on transaction creation or update. A simple DSL allows matching by pattern, amount range, or tags and applying transformations (e.g., moving amounts between accounts).
- DCA Tracker: A built‑in endpoint aggregates recurring investment transactions, calculating average cost and total units. The logic is exposed as a read‑only API that can be consumed by dashboards or reporting tools.
- Webhooks & Extensibility: The API supports registering webhooks that fire on specific events (new transaction, account balance change). This makes it trivial to integrate with external accounting services or custom automation scripts.
Deployment & Infrastructure
- Self‑Hosting: The application is designed for on‑premises or cloud VMs. It requires a PostgreSQL instance and a reverse proxy (e.g., Nginx) for HTTPS termination.
- Scalability: Stateless Go processes can be horizontally scaled behind a load balancer. The database layer is the main bottleneck; PostgreSQL can be tuned with connection pooling (
pgbouncer) for high‑throughput scenarios. - CI/CD Friendly: The repository includes GitHub Actions for building and pushing Docker images, making it straightforward to integrate into existing CI pipelines.
Integration & Extensibility
- Plugin Architecture: While not a full plugin system, the codebase exposes interfaces for transaction processors and rule evaluators. Developers can fork the project or contribute modules that plug into these hooks without modifying core logic.
- API Documentation: OpenAPI (Swagger) specs are auto‑generated from code comments, allowing tools like Postman or Insomnia to consume the API directly.
- Custom Scripts: The Go CLI (
wygiwyh-cli) can be used to seed data, run migrations, or perform bulk imports from CSV/JSON, facilitating migration from spreadsheets or other services.
Developer Experience
- Configuration: Environment variables control database URLs, port numbers, and feature flags. The defaults are sane for local development (
postgres://localhost:5432/wygiwyh). - Documentation: The README contains a “How it Works” section that explains the data model, rule syntax, and API endpoints. The source code is well‑commented, with clear separation of concerns between handlers, services, and data access layers.
- Community & Support: The project is open source under the MIT license, with an active issue tracker and a dedicated Discord channel for quick questions. Pull requests are reviewed promptly, reflecting the maintainers’ commitment to developer friendliness.
Use Cases
- Personal Finance Dashboards – Developers can embed the API in a custom React or Vue dashboard, pulling net‑worth and DCA data for real‑time visualizations.
- Automated Import Pipelines – Integrate with bank APIs (Plaid, Yodlee) or CSV exports; use webhooks to trigger rule evaluation and auto‑categorization.
- Enterprise Expense Tracking – Adapt the multi‑currency model for corporate expense reports, using custom rules to reconcile travel reimbursements automatically.
- Crypto Portfolio Management – Leverage the custom currency support and DCA tracker to monitor holdings across multiple exchanges, exposing data to external analytics tools.
Advantages
- Performance & Simplicity: Go’s compiled binaries and PostgreSQL’s robustness deliver low latency even with thousands of transactions.
- Flexibility: The rule engine and custom currency support give developers full control over data flow without a monolithic UI.
- Licensing: MIT license removes any barrier to commercial use or internal
Open SourceReady to get started?
Join the community and start self-hosting WYGIWYH today
Related Apps in other
Immich
Self‑hosted photo and video manager
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
Weekly Views
Repository Health
Information
Explore More Apps
Remotely
Remote control and scripting platform for desktops
RSS-Bridge
Generate RSS feeds for sites without one

Collabora Online Development Edition
Self-hosted other
Plainpad
Secure, self‑hosted note taking for any device
GraphHopper
Fast, memory‑efficient routing engine for maps and logistics
Dagu
Lightweight YAML‑based workflow engine with a modern web UI