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

104 lines
5.4 KiB
Markdown

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