FacturitaX es una plataforma de facturación electrónica multitenant desarrollada en Java 21 y Spring Boot 3.5.4. Permite gestionar múltiples empresas (tenants) bajo un mismo sistema, aislando datos por esquema en PostgreSQL y facilitando la administración, autenticación y emisión de comprobantes electrónicos.
Este repositorio es un proyecto Maven multi-módulo compuesto por los siguientes módulos:
- facturita-core: Lógica de negocio principal, modelos, servicios y repositorios.
- facturita-dto: Definición de DTOs, validaciones y utilidades para transferencia de datos.
- facturita-config: Configuración global, CORS, Swagger y utilidades de arranque.
- facturita-security: Seguridad, JWT, autenticación y configuración de usuarios.
- facturita-integrations: Integraciones externas (APIs, servicios de terceros).
- facturita-multitenant: Implementación multitenant por subdominio y gestión de contextos.
- facturita-batch: Procesos batch y tareas programadas.
- facturita-api: API REST principal, controladores y endpoints públicos/privados.
- Java 21
- Spring Boot 3.5.4
- PostgreSQL (multiesquema)
- JWT para autenticación
- Swagger/OpenAPI para documentación
- Maven como gestor de dependencias
- Cada empresa (tenant) tiene su propio esquema en la base de datos.
- Resolución de tenant por subdominio (ej:
cna.facturita.com→ esquemacna). - El esquema
admincontiene datos del proveedor y administración global. - Configuración de conexión usando
currentSchemaen la URL de PostgreSQL.
- DataLoader.java: Crea usuario administrador si no existen usuarios.
- MultiTenantDataLoader.java: Crea empresas y usuarios demo para testing.
- PlanDataLoader.java: Crea planes de suscripción de ejemplo.
- data-multitenant.sql: Script SQL alternativo para carga masiva de datos demo.
| Contraseña | Tipo | Empresa/Contexto | |
|---|---|---|---|
| admin@facturita.com | admin123 | Administrador | Sistema |
| gerente@techsolutions.com | tech123 | Usuario | Tech Solutions |
| admin@restaurante.com | resto123 | Usuario | Restaurante |
| supervisor@comercial.com | comercial123 | Usuario | Comercial |
| Nombre | Precio | Usuarios | Documentos | Estado | Características |
|---|---|---|---|---|---|
| Gratuito | $0.00 | 1 | 10 | Activo | Solo notas de venta |
| Básico | $29.90 | 1 | 100 | Activo | Boletas y notas |
| Profesional | $59.90 | 3 | 500 | Activo | Incluye facturas |
| Empresarial | $99.90 | 10 | 2000 | Activo | Documentos completos |
| Premium | $199.90 | 25 | 10000 | Activo | Ilimitado |
| Plan Descontinuado | $49.90 | 2 | 200 | Bloqueado | Para testing |
- Permite peticiones desde
http://localhost:4200,http://localhost:3000,http://127.0.0.1:4200,http://127.0.0.1:3000. - Integración con Spring Security y anotaciones
@CrossOriginen controladores clave.
- Registro de usuario:
POST /auth/registro - Login:
POST /auth/login - Verificar usuarios existentes:
GET /auth/tiene-usuarios - Gestión de usuarios:
GET /usuarios(requiere JWT)
- Verificar si hay usuarios:
GET /auth/tiene-usuarios - Si no hay usuarios, registrar el primero:
POST /auth/registro - Hacer login:
POST /auth/login - Usar el token JWT para peticiones autenticadas
- Edita los DataLoaders o el script SQL para personalizar datos iniciales.
- Variables recomendadas para producción:
export ADMIN_DEFAULT_EMAIL="admin@tuempresa.com" export ADMIN_DEFAULT_PASSWORD="contraseña-super-segura" export JWT_SECRET="tu-secret-jwt-muy-largo-y-seguro"
- Clona el repositorio:
git clone https://github.com/muglerman/facturita-be.git cd facturita-be - Compila todos los módulos:
mvn clean install
- Inicia el API principal:
cd facturita-api mvn spring-boot:run - Accede a la documentación Swagger en
http://localhost:8080/swagger-ui.html
- Desarrollo: Habilita datos demo en
application-dev.properties. - Producción: Deshabilita datos demo en
application-prod.properties.
- Realiza un fork y crea una rama para tu feature.
- Haz tus cambios y envía un pull request.
- Sigue las convenciones de código y documentación.
Este proyecto está bajo la licencia MIT.
- Autor: muglerman
- Email: admin@facturita.com
- GitHub: muglerman/facturita-be