Diario de viajes
-
Se trata de una web donde los usuarios publican entradas sobre viajes.
-
Cada entrada tiene título, descripción, lugar y hasta 3 fotos asignadas.
-
Cada entrada puede ser votada con una puntuación entre 1 y 5.
Instalar
-
Crear una base de datos vacía en una instancia de MySQL local.
-
Instalar las dependencias mediante el comando
npm install
onpm i
. -
Guardar el archivo
.env.example
como.env
y cubrir los datos necesarios. -
Ejecutar
npm run initDB
para crear las tablas necesarias en la base de datos anteriormente creada. -
Ejecutar
npm run dev
onpm start
para lanzar el servidor. -
Importar la colección de Postman para poder probar los endpoints.
Base de datos
-
users:
id, email*
, password*
, username*
, avatar, role ("admin", "normal"), active, registrationCode, recoverPassCode, createdAt, modifiedAt. -
entries:
id, title*
, place*
, description*
, userId, createdAt. -
entryPhotos:
id, name, entryId, createdAt. -
entryVotes:
id, value*
, entryId, userId, createdAt.
Endpoints del usuario
- POST - [
/users
] - Crea un usuario pendiente de validar.✅ - PUT - [
/users/validate/:regCode
] - Valida a un usuario recién registrado.✅ - POST - [
/users/login
] - Logea a un usuario retornando un token.✅ - GET - [
/users/:userId
] - Retorna información de un usuario concreto.✅ - GET - [
/users
] - Retorna información del usuario del token.➡️ Token
✅ - PUT - [
/users/avatar
] - Permite actualizar el avatar del usuario.➡️ Token
✅ - PUT - [
/users/password/recover
] - Envía al usuario un correo de recuperación de contraseña.✅ - PUT - [
/users/password
] - Resetea la contraseña de un usuario utilizando un código de recuperación.✅
Endpoints del diario
- POST - [
/entries
] - Crea una entrada.➡️ Token
✅ - GET - [
/entries
] - Retorna el listado de entradas.✅ - GET - [
/entries/:entryId
] - Retorna una entrada en concreto. ✅ - POST - [
/entries/:entryId/votes
] - Vota una entrada (entre 1 y 5).➡️ Token
✅ - POST - [
/entries/:entryId/photos
] - Agregar una foto a una entrada.➡️ Token
✅ - DELETE - [
/entries/:entryId/photos/:photoId
] - Eliminar una foto de una entrada.➡️ Token
✅