Gestor de Presupuesto
Full-Stack Personal Finance Application
A production-ready financial management system demonstrating Clean Architecture, SOLID principles, and modern full-stack development patterns. Built with Next.js 14, Go, and PostgreSQL.
Clean Architecture
The backend follows Clean Architecture principles with clear separation of concerns. Dependencies point inward, keeping the core domain independent of frameworks.
Framework & Drivers
External interfaces (HTTP, Database, Logger)
Interface Adapters
Convert data between layers
Application Layer
Business logic and use cases
Domain Layer
Core business entities and rules
Patterns Implemented
Industry-standard design patterns ensuring maintainability, testability, and clean code.
Repository Pattern
Abstract data access behind interfaces, enabling easy testing with mocks and database swapping.
type UserRepository interface {
Save(ctx, user) error
FindById(ctx, id) (*User, error)
}Dependency Injection
Services receive dependencies via constructors, promoting loose coupling and testability.
func NewUserService(
repo UserRepository,
) *UserService {
return &UserService{repo}
}DTO Pattern
Separate request/response objects from domain entities to control API contracts.
type UserRequest struct {
Name string `validate:"required"`
Email string `validate:"email"`
}Factory Pattern
Constructor functions create domain entities with proper initialization.
func NewUser(id, name, email string) *User {
return &User{
Id: id, Name: name, Email: email,
}
}Technologies Used
A modern, production-ready stack optimized for performance, developer experience, and scalability.
Frontend
Next.js 14
App Router & Server Components
React 18
Concurrent Features & Hooks
TypeScript
Full Type Safety
TanStack Query
Server State & Caching
Tailwind CSS
Utility-First Styling
shadcn/ui
Radix UI Components
Backend
Go 1.24
High-Performance Backend
Gin
HTTP Web Framework
PostgreSQL
Relational Database
JWT
Secure Authentication
Docker
Containerization
Key Implementations
Notable technical features and engineering decisions that make this project production-ready.
JWT Authentication
Stateless token-based auth with bcrypt password hashing and configurable expiration.
Database Migrations
Version-controlled migrations with golang-migrate. Supports PostgreSQL (prod) and SQLite (tests).
Background Workers
Scheduled jobs for recurring transactions with graceful shutdown handling.
In-Memory Cache
Transaction caching layer with 5-minute TTL for improved read performance.
Structured Logging
Zerolog for JSON-formatted logs with configurable levels and correlation IDs.
Internationalization
Full i18n support (ES/EN) using next-intl with type-safe translations.
Open Source
Explore the code, learn from the implementation, or contribute to the project.
git clone https://github.com/Osmait/GestorDePresupuesto.git