SBFinance
Aplicación full-stack de finanzas personales
Un sistema de gestión financiera listo para producción que demuestra Clean Architecture, los principios SOLID y patrones modernos de desarrollo full-stack. Hecho con Next.js 16, Go y PostgreSQL.
Clean Architecture
El backend sigue los principios de Clean Architecture con una separación clara de responsabilidades. Las dependencias apuntan hacia adentro y el dominio queda independiente de los frameworks.
Frameworks y drivers
Interfaces externas (HTTP, base de datos, logger)
Adaptadores de interfaz
Convierten los datos entre capas
Capa de aplicación
Lógica de negocio y casos de uso
Capa de dominio
Entidades y reglas centrales del negocio
Patrones implementados
Patrones de diseño estándar de la industria que aseguran mantenibilidad, facilidad de prueba y código limpio.
Patrón Repository
Abstrae el acceso a datos detrás de interfaces, lo que facilita probar con mocks y cambiar de base de datos.
type UserRepository interface {
Save(ctx, user) error
FindById(ctx, id) (*User, error)
}Inyección de dependencias
Los servicios reciben sus dependencias por el constructor, con bajo acoplamiento y fáciles de probar.
func NewUserService(
repo UserRepository,
) *UserService {
return &UserService{repo}
}Patrón DTO
Objetos de petición y respuesta separados de las entidades del dominio para controlar el contrato de la API.
type UserRequest struct {
Name string `validate:"required"`
Email string `validate:"email"`
}Patrón Factory
Funciones constructoras crean las entidades del dominio correctamente inicializadas.
func NewUser(id, name, email string) *User {
return &User{
Id: id, Name: name, Email: email,
}
}Tecnologías utilizadas
Un stack moderno y listo para producción, optimizado para el rendimiento, la experiencia de desarrollo y la escalabilidad.
Frontend
Next.js 16
App Router y Server Components
React 19
Funciones concurrentes y hooks
TypeScript
Tipado completo
TanStack Query
Estado del servidor y caché
Tailwind CSS
Estilos utility-first
shadcn/ui
Componentes de Radix UI
Backend
Go 1.27
Backend de alto rendimiento
Gin
Framework web HTTP
PostgreSQL
Base de datos relacional
JWT
Autenticación segura
Docker
Contenedores
Implementaciones clave
Funciones técnicas y decisiones de ingeniería que hacen este proyecto apto para producción.
Autenticación JWT
Autenticación sin estado con tokens, contraseñas con bcrypt y expiración configurable.
Migraciones de base de datos
Migraciones versionadas con golang-migrate, sobre PostgreSQL en producción y en las pruebas (testcontainers).
Procesos en segundo plano
Tareas programadas para las transacciones recurrentes, con apagado ordenado.
Caché en memoria
Capa de caché de transacciones con un TTL de 5 minutos para lecturas más rápidas.
Logs estructurados
Zerolog para logs en JSON con niveles configurables e IDs de correlación.
Internacionalización
Soporte completo de idiomas (ES/EN) con next-intl y traducciones tipadas.
Código abierto
Explora el código, aprende de la implementación o contribuye al proyecto.
git clone https://github.com/Osmait/sbfinance.git