Files
whereismymoney/.github/copilot-instructions.md
Matthias Hinrichs 189e7a2329 first commit
2025-08-26 03:17:49 +02:00

5.4 KiB

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