← Volver al portafolio

Aplicación full stack / 2026

NextGestión Finance.

Una plataforma. Cuatro perspectivas.

Una aplicación de gestión con carteras, contratos, colaboradores y un panel de administración. Explora una demo con cuatro roles y una API REST preparada para conectar una futura app Android.

PythonDjangoPostgreSQLREST APIJWTJavaScriptDocker
Abrir demo ↗
Panel real de NextGestión Finance: resumen de una cartera ficticia, gráfico de evolución, contratos y movimientos.
Captura de la aplicación con datos ficticios de demostración.
01 / EL RETO

El punto de partida.

Presentar una aplicación de gestión completa en un VPS pequeño, con distintos niveles de acceso y una experiencia que cualquier visitante pueda recorrer sin introducir información personal.

02 / LA SOLUCIÓN

Cómo está construido.

El proyecto utiliza PostgreSQL para la persistencia. Un backend Django comparte la lógica de contratos y cálculos entre la web y la API. Los permisos filtran los datos por usuario, colaborador, administrador o developer. La interfaz utiliza plantillas, CSS y JavaScript locales, sin un proceso Node en el servidor.

03 / EL RESULTADO

Qué aporta.

Cuatro accesos públicos, un panel personal, gestión y seguimiento por rol, documentos privados de ejemplo y un explorador de la API. El despliegue usa un contenedor independiente y un subdominio del portafolio.

04 / LA EXPERIENCIA

Un recorrido completo.

Tu cartera, de un vistazo.

Capital, ganancia acumulada, pagos, previsiones y distribución por producto. Gráficos con periodos de 6 y 12 meses y opción de ocultar importes.

Del resumen al contrato.

Consulta condiciones, periodos, pagos y aumentos de capital. Descarga documentos de ejemplo con comprobación de permisos en el servidor.

Colaboración con límites claros.

El colaborador ve su cartera de clientes asignados y sus contratos. El usuario accede a sus datos y subcuentas; los accesos ajenos se deniegan.

Visión global y técnica.

Administración reúne usuarios, colaboradores, productos, contratos y reportes. Developer añade versiones del software, documentación de la API y auditoría ficticia.

Una demo fácil de recorrer.

Cuatro cuentas seleccionables en el inicio de sesión. Datos iniciales: 12 perfiles ficticios, 4 productos y 17 contratos. Las operaciones de consulta funcionan con datos reales de la base de demostración.

Ligera por decisión.

El proyecto utiliza PostgreSQL; la demo pública usa SQLite en modo WAL para reducir recursos. Un proceso Gunicorn con dos hilos y recursos estáticos locales, sin Redis, Celery, servidores Node ni servicios de correo.

05 / PRUÉBALO TÚ

Elige una perspectiva.

Estas credenciales son públicas y exclusivas de esta demo. Los cambios de datos están bloqueados para conservar la experiencia de todos los visitantes. Developer es un rol de la aplicación, sin acceso al servidor.

Cuentas públicas de demostración
RolUsuarioContraseñaQué puedes ver
Usuariousuario.demoUsuarioDemo2026!Cartera personal, contratos, movimientos y documentos.
Colaboradorcolaborador.demoColaboraDemo2026!Clientes asignados, seguimiento de contratos y comisiones.
Administradoradmin.demoAdminDemo2026!Visión global de usuarios, productos, contratos y reportes.
Developerdeveloper.demoDevDemo2026!Panel técnico, documentación API y auditoría de ejemplo.
Código OTP para todos los perfiles123456Introduce el código después del usuario y la contraseña.
Entrar en la demo ↗

06 / POR DENTRO

Cada pieza tiene un propósito.

Nginx recibe HTTPS y Caddy enruta el subdominio hacia un contenedor Django sin puertos publicados. La sesión web utiliza cookies protegidas y CSRF. La API usa JWT de 10 minutos, renovación con rotación y revocación del refresh token. Los documentos permanecen fuera de los recursos públicos. El proyecto utiliza PostgreSQL como base de datos. Para reducir el consumo del VPS, esta demo pública utiliza SQLite en modo WAL y conserva sus datos y documentos en un volumen independiente.

Navegador / Android futuro→Nginx · HTTPS→Caddy · Docker→Django · PostgreSQL
Lenguajes, librerías e infraestructura del proyecto y su despliegue
TecnologíaVersión / alcancePara qué se utiliza
Python3.12 en DockerBackend, cálculos, automatización y pruebas.
Django5.2.18 LTSORM, sesiones, formularios, plantillas, permisos, migraciones y protección CSRF.
Django REST Framework3.16.1Serialización JSON, permisos, paginación y límites de solicitudes.
Simple JWT5.5.1Tokens de acceso y renovación, rotación y lista de revocación.
drf-spectacular0.29.0Contrato OpenAPI generado desde los endpoints de la aplicación.
WhiteNoise6.12.0Servicio y compresión de los archivos estáticos dentro del contenedor.
Gunicorn25.3.0Servidor WSGI: un worker y dos hilos para el VPS.
django-private-storage3.1.3Acceso controlado a documentos almacenados fuera de static.
django-widget-tweaks1.5.1Presentación de campos de formularios en las plantillas.
python-dateutil / Pillow2.9.0.post0 / 12.3.0Periodos de calendario y soporte de campos de imagen del catálogo.
HTML5, CSS y JavaScriptPlantillas y JavaScript nativoInterfaz adaptable, navegación, gráficos SVG y explorador de API sin framework SPA.
Bootstrap / Bootstrap Icons5.3.5 / 1.11.3Componentes de interfaz e iconos, alojados localmente con sus licencias.
ManropeFuente local WOFF2Tipografía de la aplicación, sin peticiones a proveedores de fuentes.
PostgreSQLBase de datos del proyectoPersistencia relacional del proyecto. La demo pública sustituye este servicio por SQLite para reducir el consumo del VPS.
SQLite (solo demo)Incluida en la imagen PythonPersistencia con WAL exclusiva de la demo pública; permite probarla sin otro servidor de base de datos.
Docker Compose, Caddy y NginxInfraestructura del VPSContenedor con límites de recursos, red interna, HTTPS y subdominio propio.
Certbot / Let’s EncryptInfraestructura del VPSEmisión y renovación de certificados TLS.

07 / WEB HOY. ANDROID DESPUÉS.

Una API que puedes probar.

La API REST v1 ya está implementada y se puede probar en el navegador. La futura app será sólo para Android: propuesta de Kotlin, Jetpack Compose y Retrofit. Compartirá la API y los permisos de la web. La app móvil y sus pantallas todavía no forman parte de esta entrega.

Endpoints principales · prefijo /api/v1/
MétodoRutaFunción
POSTauth/login/Valida credenciales y emite un reto de acceso de 5 minutos.
POSTauth/verify-otp/Consume el reto y el OTP 123456; devuelve access y refresh JWT.
POSTauth/refresh/ · auth/logout/Renueva con rotación o revoca el refresh token. El access expira a los 10 minutos.
GETme/ · resumen/Perfil autenticado e indicadores de los contratos visibles.
GETusuarios/ · productos/Listados paginados; usuarios filtrados según el rol.
GETcontratos/ · pagos/Consulta contratos y movimientos dentro del ámbito del usuario.
GETcontratos/{id}/documento/Descarga protegida del documento sintético del contrato.
Hablemos de este proyecto ↗