Synaplan
Open-source AI platform for companies: self-hosted AI agents, GDPR-compliant chatbot widget, RAG knowledge base, WhatsApp and Outlook AI, MCP, multi-model routing. Docker, Kubernetes or hosted in Germ
Aplicación profesional para peluquerías
Translation pending
BusinessTypeScript · TeXGitHub @asanzhuertaOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Aplicación web B2B para la gestión comercial, catálogo, pedidos, rutas, comunicaciones y fichas técnicas de salón. Trabajo Fin de Grado.
Translation pending
Loading the full README.
Read the full README ↗Aplicación web B2B desarrollada como Trabajo Fin de Grado para centralizar la operativa entre una distribuidora de productos profesionales de peluquería, sus comerciales y los salones cliente.
El repositorio agrupa la aplicación principal, la documentación académica, la configuración de despliegue local y los recursos versionados necesarios para revisar el proyecto.
Repositorio público: https://github.com/asanzhuerta/kinestilistas/
app-tfg/: aplicación principal en Next.js, con frontend por roles, API interna, autenticación, migraciones y scripts de validación.docs/: memoria del TFG en LaTeX, figuras, diagramas, bibliografía y secciones redactadas.docker-compose.yml: servicio local de PostgreSQL usado por la aplicación.La aplicación ya cubre los bloques operativos principales del TFG:
M1: autenticación, registro administrado, roles, usuarios, solicitudes, perfil y trazabilidad básica de accesos.M2: clientes, asignaciones comercial-cliente, visitas, geolocalización, rutas, configuración diaria y estimación persistida de reparto.M3: catálogo, categorías, líneas, subcategorías, productos, recursos técnicos, cartas de color, referencias cromáticas y consulta de tonos por filas o cartas.M4: pedidos, borradores, confirmación, historial, preparación de repartos parciales, etiquetas QR, entregas por comercial o agencia, pagos parciales y seguimiento operativo.M5: fichas técnicas de salón, servicios, plantillas, productos usados, tonos de coloración e imágenes de resultado.M6: comunicaciones, promociones, rangos de cliente, descuentos segmentados, avisos y formaciones.M7: soporte, auditoría, ajustes operativos, tarifa de agencia configurable, rate limiting, operaciones, reportes e integraciones preparadas para automatizaciones futuras.admin: administra usuarios, clientes, asignaciones, catálogo, comunicaciones, auditoría, soporte, operaciones e integraciones.commercial: consulta clientes asignados, rutas, visitas, pedidos, preparación de repartos, catálogo, coloración, promociones y formaciones.client: gestiona perfil, pedidos con entrega por comercial o agencia, catálogo, coloración, promociones, formaciones y fichas técnicas de su salón.Next.js 16 con App RouterReact 19TypeScriptTailwind CSS 4Auth.js / NextAuth 5 betaPostgreSQL 16TypeORM 0.3CloudinaryLeaflet y OSRMdocker compose up -d
cd app-tfg
npm install
app-tfg/.env.local:DATABASE_URL=postgres://kin:kin@localhost:5432/kin
AUTH_SECRET=cambia-este-valor
CLOUDINARY_CLOUD_NAME=
CLOUDINARY_API_KEY=
CLOUDINARY_API_SECRET=
npm run migration:run
npm run dev
La aplicación queda disponible normalmente en http://localhost:3000.
npm run typecheck
npm run lint
npm run build
npm run migration:create -- ./migrations/typeorm/<nombre>
npm run migration:run
npm run test:m6
npm run test:m7
npm run test:business
npm run catalog:upload-product-images -- --dry-run
Cada carpeta versionada relevante incluye un README.md propio para explicar su contenido y su función dentro de la aplicación.
La aplicación mantiene además una capa de utilidades compartidas para reducir duplicidades: app-tfg/lib/utils/ concentra formato de fechas, dinero, CSV, búsqueda y validaciones base; app-tfg/lib/api/client.ts centraliza las llamadas JSON desde cliente; y app-tfg/app/components/ui/ agrupa piezas visuales transversales como mensajes de feedback y estilos comunes de formulario.
En despliegues Netlify, el proxy global de Next.js se conserva como app-tfg/proxy.hosting.ts pero no se activa como proxy.ts por incompatibilidad del runtime Edge con Next.js 16. El rate limiting queda aplicado dentro de los Route Handlers mediante app-tfg/lib/api/server.ts, y en un hosting compatible puede reactivarse el proxy renombrando proxy.hosting.ts a proxy.ts.
Alejandro Sanz Huerta