| Tecnología | Uso | |————|—–| | HTML5 | Estructura semántica | | CSS3 | Diseño con variables CSS, Grid y Flexbox | | JavaScript Vanilla | Lógica del editor con Canvas API | | Canvas API | Manipulación de imágenes | | SessionStorage | Gestión de sesión de usuario |
| Tecnología | Versión | Uso | |————|———|—–| | Node.js | 22.13+ | Entorno de ejecución | | Express | 4+ | Framework del servidor | | MySQL | 8.0+ | Base de datos relacional | | mysql2 | Latest | Conector MySQL para Node.js | | bcryptjs | Latest | Encriptación de contraseñas | | dotenv | Latest | Variables de entorno | | cors | Latest | Control de acceso entre orígenes | | pnpm | 11.1.1 | Gestor de paquetes del backend |
┌─────────────────────────────────────────────────┐
│ FRONTEND │
│ HTML + CSS + JavaScript (Canvas API) │
│ Páginas: index, login, registro, editor, admin │
└────────────────────┬────────────────────────────┘
│ HTTP / REST API
┌────────────────────▼────────────────────────────┐
│ BACKEND │
│ Node.js + Express modularizado │
│ server.js monta middlewares, rutas y limpieza │
│ Módulos: config, controllers, routes, utils │
└────────────────────┬────────────────────────────┘
│ mysql2
┌────────────────────▼────────────────────────────┐
│ BASE DE DATOS │
│ MySQL — artify_db │
│ Tablas: USUARIO, SESION_EDICION, OPERACION, │
│ CONFIGURACION, IMAGEN │
└─────────────────────────────────────────────────┘
Artify/
├── README.md # Documentación del proyecto
├── CONTEXT.md # Contexto técnico y estado actual
├── LICENSE # Licencia del proyecto
├── .env.example # Plantilla de variables de entorno
├── .gitignore # Archivos ignorados por Git
│
├── frontend/ # Aplicación frontend organizada
│ ├── index.html # Página principal
│ ├── pages/ # Páginas HTML
│ │ ├── editor.html # Editor de imágenes
│ │ ├── login.html # Inicio de sesión
│ │ ├── registro.html # Registro de usuario
│ │ └── admin.html # Panel de administración
│ │
│ └── assets/ # Recursos del proyecto
│ ├── css/ # Hojas de estilo
│ │ ├── admin.css
│ │ ├── editor.css
│ │ ├── index.css
│ │ ├── login.css
│ │ └── registro.css
│ │
│ ├── js/ # Scripts JavaScript
│ │ ├── admin.js # Lógica del panel de administración
│ │ ├── editor.js # Lógica del editor
│ │ ├── login.js # Lógica del login
│ │ └── registro.js # Lógica del registro
│ │
│ ├── fonts/ # Fuentes tipográficas
│ │ ├── Inconsolata/
│ │ └── Paytone_One/
│ │
│ ├── icons/ # Iconos SVG
│ └── images/ # Imágenes del proyecto
│
├── backend/ # Servidor Node.js modular
│ ├── config/ # Conexión y configuración base
│ ├── controllers/ # Lógica de negocio por módulo
│ ├── middlewares/ # Autenticación y autorización
│ ├── routes/ # Endpoints por dominio
│ ├── tests/ # Pruebas automatizadas
│ ├── utils/ # Helpers compartidos
│ ├── server.js # Punto de arranque y montaje
│ ├── .env # Variables de entorno (no se sube a GitHub)
│ ├── package.json # Scripts y dependencias del backend
│ └── pnpm-lock.yaml # Lockfile de pnpm
│
├── database/ # Base de datos del proyecto
│ └── artify_db.sql # Script SQL completo
│
├── scripts/ # Automatización
│ └── setup.sh # Configuración inicial
│
└── docs/ # Documentación del proyecto
├── README.md
├── proyecto/
│ ├── descripcion-proyecto.md
│ └── requerimientos-funcionales.md
├── tecnica/
│ ├── arquitectura.md
│ ├── api-analytics.md
│ ├── base-datos.md
│ ├── coding-standards.md
│ ├── despliegue.md
│ └── plan-pruebas-autenticacion.md
└── SKILL_ARTIFY.md # Buenas prácticas del proyecto
Antes de instalar el proyecto asegúrate de tener:
npx http-server)git clone https://github.com/Tecno85/artify-sena.git
cd artify-sena
cd backend
pnpm install
Crea un archivo .env dentro de la carpeta backend/ con este contenido:
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=tu_contraseña_mysql
DB_NAME=artify_db
ADMIN_USER=admin@artify.com
ADMIN_PASSWORD=tu_contraseña_admin
TOKEN_SECRET=un_secreto_largo_y_aleatorio
PORT=3000
NODE_ENV=development
CREATE DATABASE artify_db;
USE artify_db;
Luego ejecuta el script SQL del proyecto para crear todas las tablas.
cd backend
pnpm start
Debes ver:
✅ Conectado a MySQL correctamente
🚀 Servidor corriendo en http://localhost:3000
En una terminal separada desde la raíz del proyecto:
npx http-server frontend -p 8080
http://127.0.0.1:8080
Si prefieres abrir archivos manualmente, usa frontend/index.html, pero para probar rutas y navegación es mejor servir la carpeta frontend/ por HTTP.
http://127.0.0.1:8080frontend/pages/registro.htmlfrontend/pages/login.htmladmin y redirige al panelEl backend incluye pruebas automatizadas de integración para autenticación, rutas protegidas y configuración básica.
cd backend
pnpm test
También puedes validar sintaxis del servidor con:
cd backend
pnpm run check
El panel de administración implementa un CRUD completo sobre la tabla USUARIO que es la entidad fuerte no dependiente del modelo de datos.
| Operación | Descripción |
|---|---|
| SELECT | Lista todos los usuarios con búsqueda en tiempo real |
| INSERT | Agrega nuevos usuarios con validación de campos |
| UPDATE | Edita datos y estado de usuarios existentes |
| DELETE | Elimina usuarios con confirmación previa |
Acceso: Usuarios con rol admin son redirigidos automáticamente al panel al iniciar sesión.
artify_db
├── USUARIO → Entidad fuerte — usuarios del sistema
├── SESION_EDICION → Sesiones de edición por usuario
├── OPERACION → Registro de operaciones realizadas
├── CONFIGURACION → Configuración personalizada por usuario
└── IMAGEN → Imágenes procesadas por usuario
-- Resumen de usuarios activos con estadísticas
SELECT * FROM v_usuarios_activos;
| Navegador | Versión Mínima |
|---|---|
| Chrome | 90+ |
| Firefox | 88+ |
| Edge | 90+ |
| Safari | 14+ |
| Opera | 76+ |
Requiere soporte para Canvas API y FileReader API.
La documentación del proyecto se encuentra organizada en la carpeta docs/.
Consulta el índice de documentación para acceder a la documentación del proyecto, manual técnico, plan de pruebas, arquitectura, base de datos, despliegue y estándares de codificación.
Este proyecto sigue estándares de codificación documentados. Consulta el archivo docs/tecnica/coding-standards.md para más detalles sobre:
.env nunca se sube al repositorioIvan Dario Madrid Daza
Este proyecto está bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.
Las contribuciones son bienvenidas. Por favor:
git checkout -b feature/nueva-funcionalidad)git commit -m 'feat: agregar nueva funcionalidad')git push origin feature/nueva-funcionalidad)