Imageboard
Tablones y publicaciones con Node.js, Express y Sequelize
Sobre el proyecto
Imageboard es una aplicación web al estilo de los foros por tablones: hay varios tablones temáticos y dentro de cada uno los usuarios publican mensajes. Cualquiera puede leer, pero para publicar o crear tablones hay que registrarse e iniciar sesión.
El servidor está hecho con Express y renderiza las páginas con Nunjucks. Los datos se guardan en SQLite a través del ORM Sequelize, y las sesiones en otra base de datos SQLite aparte. Me sirvió para practicar validación, autenticación, autorización y sesiones.
Flujo de autenticación
Registro
La contraseña se guarda hasheada con bcrypt y nunca se devuelve
Login
Se comprueban las credenciales y se crea la sesión
Sesión
Guardada en SQLite con connect-sqlite3 durante un día
Rutas protegidas
Un middleware isAuthenticated protege publicar y crear tablones
Características principales
Tablones
Lista ordenada y página de cada tablón con sus publicaciones y su autor.
Publicaciones
Formulario de título y contenido, disponible solo con la sesión iniciada.
Relaciones
Usuarios y tablones con muchas publicaciones (hasMany / belongsTo).
Logs
morgan registra cada petición; también hay un logger con colores usando chalk.
Stack Tecnológico
Servidor
- Node.js (ESM)
- Express 5
- Nunjucks
Datos
- SQLite
- Sequelize (ORM)
- express-session
Seguridad & Logs
- bcrypt
- Middleware de autenticación
- morgan + chalk