Skip to content

Latest commit

 

History

History
326 lines (280 loc) · 12.3 KB

README.md

File metadata and controls

326 lines (280 loc) · 12.3 KB

Proyecto 4 - Backend para una clínica dental

Version deploy remote del proyecto 4, para revisar el proyecto en local visitar el repositorio Proyecto 4: clinica dental database local

Contenido 📝
  1. Objetivo
  2. Sobre el proyecto
  3. Stack
  4. Diagrama
  5. Instalación
  6. Work-flow
  7. Endpoints
  8. Futuras funcionalidades
  9. Contribuciones
  10. Licencia
  11. Webgrafia
  12. Desarrollo
  13. Contacto

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

Para este proyecto en el bootcamp de GeeksHubs se nos entrega el siguiente enunciado: "Desde el departamento de producto nos piden crear el backend correspondiente al sistema de gestión de citas para una Clínica Dental.

Para ello el cliente deberá ser capaz de registrarse en la aplicación, hacer login y acceder a su área de cliente. En su área de cliente deberá poder ver una lista de las citas que tiene a futuro, crear citas, modificarlas y anularlas. También existirá una zona de usuario con sus datos personales, que solo podrá ver él mismo. Además, los dentistas deberán poder registrarse como profesionales, hacer login y ver todas las citas y clientes registrados."

Se valorará la ejecución técnica, así como el trabajo en equipo. Siendo un equipo de dos miembros ha sido importante la comunicación, el apoyo mutuo, la toma de decisiones consensuadas y por supuesto, el manejo de Git y el repositorio de Github: creación de ramas de trabajo, resolución de conflictos, trabajo individual en local ...

Stack

Tecnologías utilizadas:

Diagrama BD

'imagen-db'

Instalación en local

  1. Clonar el repositorio
  2. npm install Instalamos dependencias
  3. npm run create Preparamos la base de datos para atacarla con la app
  4. npm run dev Dejamos la app preparada y escuchando las requests

Workflow

Project Workflow
  1. Crear package.json con npm init -y.
  2. Crear archivo index.js en la ruta principal. Crear .env y .env.example. Crear .gitignore con /node_modules y .env dentro. Ejecutar comando git init.
  3. Instalar express, nodemon, sequelize, sequelize-cli, mysql2, dotenv, jsonwebtoken y bcrypt.
  4. Sequelize init. Ejecutar sequelize.
  5. Crear script "dev": "nodemon index.js", para mantener el servidor ejecutándose.
  6. $ npm run dev comando para ejecutar el servidor. ctrl + c para pararlo.
  7. Required express en index.js, y la variable instance app. También asignar PORT a nuestro servidor y usar un método listen para ejecutarlo:
const express = require('express');
const app = express();
const PORT = 3000;
app.listen(PORT, () => console.log("Server running on port: " + PORT));
  1. Crear models Role, Doctor, User, Service and Appointment en ese orden:
npx sequelize-cli model:generate --name Users --attributes name:string,...
  1. Añadir las foreign keys de services, doctors y users en appointments migration js file con sus respectivas relaciones. Hacer lo mismo con las que correspondan en todos los modelos.
references: {
          model: "Services",
          key:"id"
        }
  1. Crear carpetas controllers y view. En carpeta view crear las Routes.

  2. Crear router.js en la ruta principal:

const router = require('express').Router();
module.exports = router;
  1. Route.js conectado al index principal:
const router = require('./router'); 
app.use(router);
  1. Refactorizar a route:
const router = require('express').Router();

router.use('/services', servicesRouter);
router.use('/users', usersRouter)

module.exports = router;
  1. Refactorizar controllers:
const serviceController = {};

serviceController.getServices = (req, res) => {return res.send('Get Services')}
serviceController.createServices = (req, res) => {return res.send('Create Services')}

module.exports = serviceController;
  1. Crear seeders para Role, User, Doctor, Service, Appointment
npx sequelize-cli seed:generate --name User
npx sequelize-cli db:seed:all
  1. Crear middlewares para controlar el nivel de acceso a la información o a las funcionalidades de la base de datos según roles.
  2. Crear endpoints, los cuales describimos a continuación:

Endpoints

Endpoints

Futuras funcionalidades

  • Añadir un rol SuperAdmin que sea el rol del programador con acceso a todo el sistema menos a los datos privados de los pacientes y doctores.
  • Añadir funcionalidades para crear, modificar y eliminar servicios por los doctores.
  • Añadir funcionalidades para crear, modificar o eliminar roles por el SuperAdmin
  • Especificar que el rol admin será para administración desde recepción con los privilegios necesarios para llevar a cabo su trabajo, como por ejemplo (añadido en el siguiente punto):
  • Añadir funcionalidad para crear, modificar y eliminar doctores.

Contribuciones

Las sugerencias y aportaciones son siempre bienvenidas.

Licencia

Este proyecto se encuentra bajo licencia de MIT License.

Webgrafia:

Para conseguir mi objetivo hemos recopilado información de:

Desarrollo:

 const developers = "Ramón" + "Jose";

Proyecto realizado por:

  • Ramón

  • Jose

Contacto

  • Ramón

  • Jose