Contenido 📝
Este proyecto requería una API funcional conectada a una base de datos con al menos una relación de uno a muchos y una relación de muchos a muchos.
Se ha creado una aplicación web para una empresa de tatuajes, en la que los clientes puedan registrarse, logearse, modificar su perfil y acceder a este. Por otra parte, a traves de su login; crear, editar o eliminar la cita o citas solicitadas con uno o varios tatuadores, ademas de poder consultar todas sus citas.
Como toda empresa, ademas de clientes, son indispensables sus trabajadores. Los cuales podran logearse para acceder a la visualizacion de sus citas con los clientes y despues de una valoracion de los requisitos para el boceto requerido por el cliente, realizar en dicha cita una actualizacion para fijar el precio del trabajo ha realizar.
En esta API, cualquier persona registrada o no, podra ver los tatuadores en plantilla, mostrando unicamente su primer nombre, ultimo nombre y nacionalidad, ya que son tatuaderes de alto prestigio los cuales a lo largo de su trayectoria han ido ganando seguidores a traves de sus trabajos. Por ello se permite el acceso a estos trabajadores, pero unicamente se podran ver sus trabajos si eres un usuario registrado.
La supervision de la API la realizara el superAdmin, el cual podra ver todos los clientes y trabajadores de su estudio de tatuajes, al igual que dar de alta o baja sus trabajadores y cambiar de "role" a los usuarios.
Tecnologías utilizadas:
- Clonar el repositorio
$ npm install
- Conectamos nuestro repositorio con la base de datos
$ npx typeorm-ts-node-commonjs migration:run -d ./src/db.ts
$ Utilizamos archivos SQL (insertamos los registros en las diferentes tablas de nuestra DB)
$ npm run dev
Endpoints
-
OPEN
-
Workers list (all people)
GET http://localhost:3000/worker/current
-
-AUTH
-
CLIENTES
-
Register new (client)
POST http://localhost:3000/client/register
body:
{ "first_name": "David", "last_name": "Perez Ruiz", "phone": "666666888", "email": "[email protected]", "password": "123456789" }
-
Login (Clients)
POST http://localhost:3000/client/login
body:
{ "email": "[email protected]", "password": "123456789" }
-
Account client (personal profile)
GET http://localhost:3000/client/account
-
Update profile (client)
PUT http://localhost:3000/client/account/modifyAccount
-
Products (customers consult the products)
GET http://localhost:3000/client/products
-
Delete client (superAdmin)
DELETE http://localhost:3000/client/delete
body:
{ "id": 3 }
-
-
TRABAJADORES
-
Login (superAdmin)
POST http://localhost:3000/worker/login
body:
{ "email": "[email protected]", "password": "123456789" }
-
All clients profiles (superAdmin)
GET http://localhost:3000/client/clients
-
Register workers (superAdmin)
POST http://localhost:3000/worker/register
body:
{ "first_name": "Odin", "last_name": "Marandi", "phone": "987425699", "email": "[email protected]", "nationality": "Latvia", "password": "123456789" }
-
Login (workers)
POST http://localhost:3000/worker/login
body:
{ "email": "[email protected]", "password": "123456789" }
-
Delete workers (superAdmin)
DELETE http://localhost:3000/worker/delete
body:
{ "id": 2 }
-
Update profile worker (superAdmin) - Dato/s ha actualizar ("first_name", "last_name", "phone", "email", "nationality", "password")
PUT http://localhost:3000/worker/update
body:
{ "phone": "987444444", "email": "[email protected]" }
-
Change Role (superAdmin)
PUT http://localhost:3000/worker/changeRole
body:
{ "id": 3, "role": "superAdmin" }
-
-
GESTION DE CITAS
-
Create appointment (client)
POST http://localhost:3000/appointment/create
body:
{ "date": "2024-11-06T16:20:20.130Z", "article": 1, }
-
Update appointment (client)
PUT http://localhost:3000/appointment/update
body:
{ "date": "2024-12-06T16:20:20.130Z" }
-
Delete appointment (client)
DELETE http://localhost:3000/appointment/delete
body:
{ "id": 1 }
-
Add price Client appointment (tattoo_artist)
PUT http://localhost:3000/appointment/workerupdate
body:
{ "price": "150" }
-
CONSULTAR CITAS
-
Appointment client/tatto_artist (client)
GET http://localhost:3000/appointment/clientAppointment
-
Appointment tattoo_artist/client (worker)
GET http://localhost:3000/appointment/tattooArtistAppointment
...
-
-
En este apartado se adjuntan las tablas en formato SQL para insertar los registros en la base de datos.
Tanto clients como workers estan creados con una password generica "123456789", para una mayor sencillez a la hora de probar la APP.
Accesos =>
user (login clients)
{ "email": "[email protected]", "password": "123456789" }
admin (login workers)
{ "email": "[email protected]", "password": "123456789" }
superAdmin (login workers)
{ "email": "[email protected]", "password": "123456789" }
Registros =>
Click aqui para acceder clients.sql
Click aqui para acceder workers.sql
Proyecto desarrollado por Antonio Insa Benavent, bajo licencia MIT.
Consulta el archivo LICENSE
para más información.
Agradezco a mis compañeros el tiempo dedicado a resolver mis dudas y bloqueos.