💼 Sistema de Nómina – API para Gestión de Empresas Pequeñas
📖 Resumen y Contexto
El proyecto consistió en el desarrollo de una API desde cero para la gestión y pago de nóminas de pequeñas empresas. El objetivo era construir una solución modular, escalable y moderna, capaz de adaptarse a diferentes estructuras empresariales y requerimientos legales.
Durante mi participación, contribuí en el diseño inicial de la base de datos, aprovechando mis conocimientos en contabilidad, y colaboré en la definición de la arquitectura base del sistema, orientada bajo principios de Arquitectura Hexagonal y Vertical Slice, implementada con FastAPI (Python).
👤 Rol y Contribución
- Rol Principal: Desarrollador Backend
- Aportes Clave:
- Diseño del esquema de base de datos inicial para el módulo de nómina.
- Implementación de endpoints CRUD para compañías y perfiles de cargo.
- Colaboración en la definición de la arquitectura del sistema junto a otro desarrollador.
- Revisión y adaptación de la estructura del proyecto para cumplir con principios de independencia de capas y escalabilidad.
🛠️ Stack Tecnológico
- Lenguaje: Python 3
- Framework: FastAPI
- Base de Datos: PostgreSQL
- Arquitectura: Hexagonal + Vertical Slice
- ORM: SQLAlchemy
- Otros: Pydantic, Alembic (migraciones), Uvicorn
🧭 Arquitectura del sistema
El siguiente diagrama ilustra la estructura general de la API, destacando su diseño modular y el flujo de datos basado en la Arquitectura Hexagonal.
graph TD
subgraph Capa de Dominio
E[Entidades]
U[Casos de uso]
end
subgraph Capa de Aplicación
S[Servicios / Lógica de negocio]
end
subgraph Capa de Infraestructura
DB[(PostgreSQL)]
R[Enrutadores FastAPI]
M[Migraciones Alembic]
end
R --> S
S --> U
U --> E
S --> DB
M --> DB
📡 Ejemplo de Endpoint Implementado
@router.post("/", response_model=CompanyOut)
async def create_company(company_data: CreateCompanyRequest, use_case: CompanyUseCases = Depends(get_company_use_cases)):
return use_case.create_company(company_data)
🚀 Logros y Aprendizajes
- Participé en el diseño de la base del sistema, asegurando que fuera compatible con requerimientos contables y escalable para futuras integraciones.
- Asimilé rápidamente el stack de FastAPI y sus conceptos modernos (dependency injection, routers, Pydantic schemas).
- Implementé los primeros módulos funcionales (compañías y perfiles de cargo), sirviendo de referencia para la expansión posterior del sistema.
- Profundicé en patrones de diseño aplicados a arquitectura hexagonal y separación de responsabilidades.
🧭 Reflexión Personal
Este proyecto representó un reto técnico y de adaptación: implicó trabajar con un framework nuevo y aplicar conceptos arquitectónicos avanzados mientras se construía una base sólida para un producto real. La experiencia reforzó mi capacidad para aprender rápidamente tecnologías nuevas, colaborar en diseño de arquitecturas limpias y alinear el desarrollo con principios contables y de negocio.