5.4 KiB
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.goor 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