Technical Portfolio Project

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
SOLID Principles
Repository Pattern
Dependency Injection
Scroll to explore architecture
System Architecture

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)

Gin HTTP Server
PostgreSQL
Zerolog

Interface Adapters

Convert data between layers

Handlers
Repositories
DTOs

Application Layer

Business logic and use cases

Services
Use Cases
Validation

Domain Layer

Core business entities and rules

User
Account
Transaction
Budget
Dependencies always point inward → Domain never depends on outer layers
Design Patterns

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,
  }
}
Tech Stack

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

Technical Highlights

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.

terminal

Open Source

Explore the code, learn from the implementation, or contribute to the project.

Clone the repository
git clone https://github.com/Osmait/GestorDePresupuesto.git