Agencia digital (Jaén, España): diseño gráfico, edición de video y configuraciones para creadores y empresas. Este repositorio incluye frontend estático, API Node.js (Express) y esquema de base de datos (SQLite por defecto; variante MySQL incluida).
frontend/— HTML, CSS y JS (landing, registro/login, área cliente, panel admin, panel trabajador, portfolio).backend/— Servidor Express, autenticación JWT, subida de archivos, rutas REST.database/—schema.sql(SQLite),schema.mysql.sql(MySQL 8+), archivoalphavs.dbgenerado al inicializar.
- Node.js 18 o superior.
- Windows / macOS / Linux.
-
Clona o copia el proyecto y abre una terminal en la carpeta
backend:cd backend npm install -
Crea el archivo de entorno (puedes copiar el ejemplo):
copy .env.example .env
Edita
.envy define al menosJWT_SECRET(cadena larga y aleatoria en producción). -
Inicializa la base de datos (crea
database/alphavs.db, tablas, servicios con precios fijos en €, cupón de ejemploWELCOME10y usuario administrador):npm run init-db
-
Arranca el servidor (sirve la API en
/api/*y los archivos defrontend/):npm start
-
Abre en el navegador: http://localhost:3000
- Admin:
admin@alphavisualstudio.local/Admin123!
Cámbialas en cuanto despliegues en producción.
- Registro/login con roles: cliente, trabajador, administrador (JWT, contraseñas con bcrypt).
- Catálogo de servicios con precios fijos y tarifas por hora (según tu lista en €).
- Carrito y checkout con cupones (porcentaje o importe fijo).
- Pedidos con número de factura tipo
AVS-2026-00001, estados y notificaciones básicas al cliente. - Presupuestos (formulario + archivos adjuntos guardados en disco y metadatos en BD).
- Tickets de soporte.
- Horario público editable desde admin (JSON + etiquetas ES/EN).
- Portfolio (subida de imagen/video desde admin, listado público).
- Panel admin: estadísticas resumidas, usuarios/trabajadores, cupones, pedidos, asignación de tareas, presupuestos entrantes, tickets, horario, portfolio.
- Panel trabajador: solo tareas asignadas por el admin; cambio de estado (pendiente / en proceso / terminado); listado de clientes derivado de esas tareas.
- Multi-idioma en la home (ES/EN) y tema claro/oscuro (preferencia en
localStorage).
- Cambia
JWT_SECRET, contraseñas de admin y rutas de subida. - Coloca HTTPS delante (proxy inverso) y limita CORS si hace falta.
- Para MySQL, importa
database/schema.mysql.sql, adapta la capa de acceso a datos (este proyecto usa better-sqlite3; en MySQL suele usarsemysql2+ mismas consultas parametrizadas). - Pagos (Stripe/PayPal) y suscripciones: preparados a nivel de modelo de pedidos; falta integrar pasarela y webhooks.
Si conservas un index.html antiguo en la raíz, ábrelo solo como referencia. La aplicación de plataforma unificada se sirve desde frontend/ al ejecutar el backend.