A comprehensive command-line personal finance management application built with Go, using Clean Architecture principles, Bubble Tea for the TUI, and MongoDB for data persistence.
- Account Management: Manage checking, savings, and investment accounts
- Credit Card Management: Track credit cards linked to accounts
- Bill Management: Organize bills with lifecycle tracking (open/closed/paid/overdue)
- Transaction Management: Record and categorize transactions with expense sharing
- Person Management: Manage people for expense sharing
- Reports: Generate detailed expense reports by bill or person
- Dashboard: Overview with ASCII charts and financial summaries
The project follows Clean Architecture principles:
financli/
├── cmd/ # Application entry points
├── internal/
│ ├── domain/ # Business logic and entities
│ │ ├── entity/ # Domain entities
│ │ ├── valueobject/ # Value objects
│ │ └── repository/ # Repository interfaces
│ ├── application/ # Use cases
│ │ ├── usecase/ # Business use cases
│ │ └── service/ # Application services
│ ├── infrastructure/ # External dependencies
│ │ ├── persistence/ # Database implementations
│ │ └── config/ # Configuration
│ └── interfaces/ # User interfaces
│ └── tui/ # Terminal UI
└── pkg/ # Shared packages
- Go 1.21+
- MongoDB
- Terminal with UTF-8 support
- Clone the repository:
git clone <repository-url>
cd financli- Install dependencies:
go mod download- Set up environment variables:
export MONGODB_URI="mongodb://localhost:27017"
export MONGODB_DATABASE="financli"Run the application:
go run cmd/main.go- Number Keys (1-7): Switch between screens
- Arrow Keys: Navigate within screens
- Enter: Confirm actions
- Esc: Cancel operations
- q/Ctrl+C: Quit application
- Dashboard: Financial overview with charts
- Accounts: Manage bank accounts
- Credit Cards: Track credit card usage
- Bills: Organize and pay bills
- Transactions: Record expenses and income
- People: Manage expense sharing contacts
- Reports: View detailed financial reports
- Split transactions with registered people
- Support for percentage-based or equal splits
- Automatic calculation of shared amounts
- Track bill lifecycle (open → paid/overdue → closed)
- Automatic transaction assignment based on dates
- Payment tracking and status updates
- Shared expense reports by person
- Bill payment summaries
- Category-wise expense breakdowns
go test ./...go build -o financli cmd/main.go- Go 1.21+: Programming language
- Bubble Tea: Terminal UI framework
- Lip Gloss: Terminal styling
- MongoDB: Data persistence
- Clean Architecture: Software design pattern
- Dependency Injection: For loose coupling