WhereIsMyMoney - Personal Finance Management ## Project Overview A Go web application for personal finance management using modern frameworks. Features include comprehensive transaction management, multi-edit/delete capabilities, advanced filtering, user authentication, bank account & depot management, and a responsive UI with interactive dashboards. ## Tech Stack - **Backend**: Go 1.23 with Gin web framework - **Templates**: a-h/templ for type-safe HTML templates - **Database**: GORM with SQLite - **Configuration**: Viper for config management - **Sessions**: Gorilla Sessions for user sessions (Safari-compatible) - **Authentication**: bcrypt for password hashing - **Frontend**: Tailwind CSS for styling with modular template structure, Chart.js for data visualization - **JavaScript**: Vanilla JS for dynamic interactions, AJAX operations, and form handling ## Key Features - **Transaction Management**: Full CRUD operations with pagination, advanced filtering, multi-edit/delete functionality - **Recurring Transactions**: Automated generation of recurring transactions with flexible intervals - **User Management**: Registration, login, logout with secure session handling and settings management - **Bank Account Management**: Create and manage multiple bank accounts (checking, savings, credit) - **Depot Management**: Create and manage investment depots with different brokers - **Advanced Filtering**: Multi-criteria filtering (date range, description, category, account, type, amount) - **Batch Operations**: Multi-select transactions for bulk editing and deletion - **Interactive Dashboard**: Charts and graphs for financial overview using Chart.js - **Responsive Design**: Mobile-friendly navigation with dropdown menus - **Modular Templates**: Separate components for reusability and maintainability ## Development - Run server: `go run main.go` or use VS Code task "Run Server" - Generate templates: `templ generate` - Build: `go build -o app .` - Server runs on http://localhost:8080 ## API Routes ### Authentication - **Auth**: `/login`, `/register`, `/logout` ### Main Pages - **Dashboard**: `/` (protected) - Financial overview with interactive charts - **Transactions**: `/transactions` (protected) - Transaction list with filtering, pagination, and multi-operations - **Accounts**: `/accounts` (protected) - Bank account & depot management - **Recurring**: `/recurring` (protected) - Recurring transaction management - **Settings**: `/settings` (protected) - User settings and password management ### Transaction API - **GET** `/transactions` - Transaction list with pagination and filtering - **POST** `/transactions` - Create new transaction - **PUT** `/transactions/:id` - Update transaction - **DELETE** `/transactions/:id` - Delete transaction - **PUT** `/transactions/multi-update` - Batch update multiple transactions - **DELETE** `/transactions/multi-delete` - Batch delete multiple transactions ### Recurring Transactions API - **GET** `/recurring` - List recurring transactions - **POST** `/recurring` - Create recurring transaction - **PUT** `/recurring/:id` - Update recurring transaction - **DELETE** `/recurring/:id` - Delete recurring transaction ### Account Management API - **GET** `/accounts` - View accounts overview - **POST** `/accounts/bank` - Create bank account - **POST** `/accounts/depot` - Create depot ### User Management API - **PUT** `/settings/profile` - Update user profile (name only) - **PUT** `/settings/password` - Change user password ## Database Models - **User**: Authentication and user data with relationships to accounts/depots/transactions - **Transaction**: Complete transaction data (amount, description, date, category, account, type) - **RecurringTransaction**: Templates for automated recurring transactions with flexible intervals - **BankAccount**: Bank account details (name, bank, IBAN, balance, account type) - **Depot**: Investment depot details (name, broker, depot number, total value) - **Category**: Transaction categories with icons for visual organization ## Project Structure ``` whereismymoney/ ├── main.go # Application entry point with routes ├── config.yaml # Configuration file ├── whereismymoney.db # SQLite database ├── static/ │ ├── css/ │ │ └── style.css # Custom CSS styles │ └── js/ │ └── dashboard-charts.js # Chart.js configuration ├── internal/ │ ├── config/ # Configuration management │ ├── database/ # Database connection and migrations │ ├── handlers/ # HTTP handlers (auth, transactions, accounts, etc.) │ ├── models/ # GORM models (User, Transaction, BankAccount, etc.) │ └── views/ # Templ templates │ ├── layout.templ # Base layout │ ├── navigation.templ # Reusable navigation component │ ├── dashboard.templ # Main dashboard with charts │ ├── transactions.templ # Transaction list with filtering and multi-ops │ ├── accounts.templ # Bank accounts & depots management │ ├── recurring.templ # Recurring transactions management │ ├── settings.templ # User settings and password management │ ├── login.templ # Login page │ └── register.templ # Registration page └── README.md # Documentation ```