Skip to content

antonioinsa/Tattoo_studio_backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Welcome to my backend app

imagen-db




Contenido 📝
  1. Objetivo
  2. Sobre el proyecto
  3. Stack
  4. Diagrama
  5. Instalación
  6. Endpoints
  7. DataBase (accesos y registros)
  8. Licencia
  9. Agradecimientos

Objetivo

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.

Sobre el proyecto

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.

Stack

Tecnologías utilizadas:

Diagrama BD

'imagen-db'

Instalación en local

  1. Clonar el repositorio
  2. $ npm install
  3. Conectamos nuestro repositorio con la base de datos
  4. $ npx typeorm-ts-node-commonjs migration:run -d ./src/db.ts
  5. $ Utilizamos archivos SQL (insertamos los registros en las diferentes tablas de nuestra DB)
  6. $ npm run dev

Endpoints

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 
        

      ...

DataBase

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 =>

Licencia

Proyecto desarrollado por Antonio Insa Benavent, bajo licencia MIT.

Consulta el archivo LICENSE para más información.

Agradecimientos:

Agradezco a mis compañeros el tiempo dedicado a resolver mis dudas y bloqueos.

About

Express proyect with typeorm

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published