Jineteapp
Jineteapp es una aplicación fullstack compuesta de un backend (Java Spring Boot + PostgreSQL) y un frontend (Angular). Se inspira en la idea de “jinetear” (no seré explícito con este concepto), ofreciendo una plataforma muy específica para gestionar y registrar estos moviminetos.
Esta documentación es un resumen global del proyecto, para información más detallada, revisa la documentación específica del backend y del frontend.
Tabla de Contenidos
- Descripción del Proyecto
- Arquitectura General
- Tecnologías Principales
- Repositorios
- Documentación Backend
- Documentación Frontend
- Cómo Empezar
- Despliegue
- FAQ y Buenas Prácticas
- Contacto y Contribuciones
Descripción del Proyecto
El objetivo de Jineteapp es ofrecer una herramienta que te permita llevar un registro claro y organizado de tus movimientos financieros. A grandes rasgos, la aplicación permite:
- Registrar transacciones (ingresos y egresos).
- Gestionar cuentas (cuentas bancarias, tarjetas, etc.).
- Categorizar transacciones (alimentación, vivienda, transporte, etc.).
- Analizar tu información para un mejor control y toma de decisiones financieras.
Arquitectura General
El proyecto sigue una arquitectura cliente-servidor convencional, donde el frontend (Angular) consume los servicios REST que expone el backend (Spring Boot). La estructura interna del backend se organiza con arquitectura hexagonal, mientras que en el frontend se implementan módulos y componentes de Angular siguiendo las buenas prácticas.
flowchart LR
A["Frontend (Angular)"] -->|HTTP/REST| B["Backend (Spring Boot)"]
B -->|Persistencia| C["PostgreSQL DB"]
Tecnologías Principales
- Backend:
- Lenguaje: Java 17+
- Framework: Spring Boot (2.x o 3.x)
- Base de Datos: PostgreSQL
- Arquitectura: Hexagonal (Puertos y Adaptadores)
- Frontend:
- Framework: Angular 15+
- Lenguaje: TypeScript
- Herramientas: RxJS, Angular CLI
- Otros:
- Control de versiones: Git (GitHub)
- Herramientas de build:
- Maven (backend)
- npm (frontend)
- Testing: JUnit, Mockito (backend), Karma/Jasmine (frontend)
Repositorios
Backend:
jineteapp_back
Contiene la lógica de negocio, controladores REST y capa de persistencia.Frontend:
jineteapp_front
Maneja la interfaz de usuario con Angular, así como la interacción con el backend a través de HTTP.
Documentación Backend
La documentación detallada del backend cubre:
- Arquitectura hexagonal y organización en capas (Dominio, Aplicación, Infraestructura).
- Entidades y casos de uso.
- Controladores REST, repositorios de datos y configuraciones.
- Ejecución, instalación, pruebas, etc.
Para más información, revisa:
Jineteapp Backend Documentation (O donde esté alojada la guía completa en Markdown).
Documentación Frontend
La documentación específica del frontend describe:
- Estructura Angular: Módulos, componentes, servicios.
- Rutas (routing) e integración con la API.
- Configuraciones de entorno (desarrollo, producción).
- Scripts de ejecución, testing, y despliegue.
Puedes encontrarla aquí:
Jineteapp Frontend Documentation
Cómo Empezar
Para ejecutar localmente el proyecto completo (frontend y backend), se recomiendan estos pasos:
- Clonar repositorios:
1 2 3 4 5
# Clonar backend git clone https://github.com/sasanchezramirez/jineteapp_back.git # Clonar frontend git clone https://github.com/sasanchezramirez/jineteapp-front.git
- Levantar el backend:
- Ajusta credenciales de la base de datos en
application.properties
o variables de entorno. - Compila y arranca:
1 2 3
cd jineteapp_back mvn clean install mvn spring-boot:run
- Por defecto, se expone en
http://localhost:8080/api
.
- Ajusta credenciales de la base de datos en
- Levantar el frontend:
- Instala dependencias:
1 2
cd jineteapp-front npm install
- Ejecuta en modo desarrollo:
1
npm run start
- Accede a la aplicación en
http://localhost:4200/
.
- Instala dependencias:
Despliegue
Para desplegar la aplicación:
- Backend:
- Generar el
.jar
o.war
conmvn package
. - Desplegarlo en un servidor (Tomcat, Docker, o plataforma Cloud).
- Configurar las variables de entorno o
application.properties
de producción.
- Generar el
- Frontend:
- Construir el proyecto de producción con
ng build --prod
. - Copiar la carpeta
dist/jineteapp-front
al servidor web (Nginx, Apache, etc.). - Configurar redirecciones para que Angular maneje las rutas.
- Construir el proyecto de producción con
FAQ y Buenas Prácticas
- ¿Por qué usar arquitectura hexagonal en el backend?
Permite una separación clara entre la lógica de negocio y los detalles de infraestructura (bases de datos, frameworks web). - ¿Cómo manejar la autenticación y seguridad?
- Backend: Spring Security con JWT u OAuth2.
- Frontend: Interceptors para añadir tokens en cada petición, guards para rutas protegidas.
- ¿Se pueden integrar tests de forma conjunta?
Cada repositorio (front y back) tiene su propia suite de pruebas. Se pueden orquestar tests end-to-end con herramientas como Cypress que engloben la pila completa. - ¿Uso de Docker?
Si se desea, se puede crear un Dockerfile para el backend y el frontend, simplificando el despliegue.
Contacto y Contribuciones
- Repositorio Backend: jineteapp_back
- Repositorio Frontend: jineteapp_front
- Crea un Issue o un Pull Request en GitHub para reportar problemas o sugerencias.