Skip to content

Proyecto 6.1 - App que cuenta con una interfaz a través de la cual el usuario puede tomar pedidos (mesero), enviarlos al área de preparación (chef) y hacer el manejo de usuarios y productos (administrador), todo esto conectado a una API

Notifications You must be signed in to change notification settings

KarlaMacedo/Burger-queen-api-client

 
 

Repository files navigation

Burger Queen (API Client)

Índice


1. Resumen del proyecto

Burger Queen API Client es una aplicación desarrollada con React, que cuenta con una interfaz para un restaurante de hamburgesas, a través de la cual los usuarios pueden tomar pedidos (mesero), enviarlos al área de preparación (chef) y hacer el manejo de usuarios y productos (administrador), todo esto conectado a una API.

logo-burger-queen

2. Requerimientos del cliente

Un pequeño restaurante de hamburguesas, que está creciendo, necesita un sistema a través del cual puedan tomar pedidos usando una tablet, y enviarlos a la cocina para que se preparen ordenada y eficientemente.

burger-queen

Este proyecto tiene dos áreas: interfaz (cliente) y API (servidor). Nuestra clienta nos ha solicitado desarrollar la interfaz que se integre con una API.

Esta es la información proporcionada por la clienta:

Somos Burguer Queen, una cadena de comida 24hrs.

Nuestra propuesta de servicio 24hrs ha tenido muy buena acogida y, para seguir creciendo, necesitamos un sistema que nos ayude a tomar los pedidos de nuestros clientes.

Tenemos 2 menús:

  • Uno muy sencillo para el desayuno:
Ítem Precio $
Café americano 5
Café con leche 7
Sandwich de jamón y queso 10
Jugo de frutas natural 7
  • Y otro menú para el resto del día:
Ítem Precio
Hamburguesas $
Hamburguesa simple 10
Hamburguesa doble 15
Acompañamientos $
Papas fritas 5
Aros de cebolla 5
Para tomar $
Agua 500ml 5
Agua 750ml 7
Bebida/gaseosa 500ml 7
Bebida/gaseosa 750ml 10

Nuestros clientes son bastante indecisos, por lo que es muy común que cambien el pedido varias veces antes de finalizarlo.

La interfaz debe mostrar los dos menús (desayuno y resto del día), cada uno con todos sus productos. El usuario debe poder ir eligiendo qué productos agregar y la interfaz debe ir mostrando el resumen del pedido con el costo total.

out

Además la clienta nos ha dado un link a la documentación que especifica el comportamiento esperado de la API HTTP a consumir. Ahí se encuentran todos los detalles de los endpoints, como por ejemplo qué parámetros esperan, qué deben responder, etc.

3. Organización

Como herramienta de organización utilizamos Trello, en donde hicimos toda la planeación de trabajo de cada sprint que duró este proyecto (4):

Trello

4. Diseño de la interfaz de usuario

El prototipo fue elaborado en Figma.

Prototipo baja fidelidad

5. Historias de Usuario

Historia de usuario 1: Mesero/a debe poder ingresar al sistema, si el admin ya le ha asignado credenciales

Yo como mesero quiero poder ingresar al sistema de pedidos.

Criterios de aceptación

  • Acceder a una pantalla de login.
  • Ingresar email y contraseña.
  • Recibir mensajes de error comprensibles, dependiendo de cuál es el error con la información ingresada.
  • Ingresar al sistema de pedidos si las crendenciales son correctas.

Historia de usuario 2: Mesero/a debe poder tomar pedido de cliente/a

Yo como mesero quiero tomar el pedido de un cliente para no depender de mi mala memoria, para saber cuánto cobrar, y enviarlo a la cocina para evitar errores y que se puedan ir preparando en orden.

Criterios de aceptación

  • Anotar nombre de cliente.
  • Agregar productos al pedido.
  • Eliminar productos.
  • Ver resumen y el total de la compra.
  • Enviar pedido a cocina (guardar en alguna base de datos).
  • Se ve y funciona bien en una tablet

Historia de usuario 3: Jefe de cocina debe ver los pedidos

Yo como jefe de cocina quiero ver los pedidos de los clientes en orden y marcar cuáles están listos para saber qué se debe cocinar y avisar a los meseros que un pedido está listo para servirlo a un cliente.

Criterios de aceptación

  • Ver los pedidos ordenados según se van haciendo.
  • Marcar los pedidos que se han preparado y están listos para servirse.
  • Ver el tiempo que tomó prepara el pedido desde que llegó hasta que se marcó como completado.

Historia de usuario 4: Mesero debe ver pedidos listos para servir

Yo como mesero quiero ver los pedidos que están preparados para entregarlos rápidamente a los clientes que las hicieron.

Criterios de aceptación

  • Ver listado de pedido listos para servir.
  • Marcar pedidos que han sido entregados.
  • Los datos se deben mantener íntegros, incluso después de que un pedido ha terminado. Todo esto para poder tener estadísticas en el futuro.

Historia de usuario 5: Administrador(a) de tienda debe administrar a sus trabajadores

Yo como administrador(a) de tienda quiero gestionar a los usuarios de la plataforma para mantener actualizado la informacion de mis trabajadores.

Criterios de aceptación

  • Ver listado de trabajadores.
  • Agregar trabajadores.
  • Eliminar trabajadores.
  • Actualizar datos de trabajadores.

Historia de usuario 6: Administrador(a) de tienda debe administrar a sus productos

Yo como administrador(a) de tienda quiero gestionar los productos para mantener actualizado el menú.

Criterios de aceptación

  • Ver listado de productos.
  • Agregar productos.
  • Eliminar productos.
  • Actualizar datos de productos.

6. Despliegue

Se realizó el despliegue con Vercel.

App:

https://dev-007-burger-queen-api-client.vercel.app/

API:

https://burger-queen-api-zvby-dev.fl0.io/

7. Uso

Para poder ingresar a la aplicación se puede utilizar los siguients usuarios:

Trello

8. Consideraciones

Este proyecto se hizo en dupla y fue una propuesta para que trabajar con el backend consumiendo esta API.

El tiempo estimado para completar el proyecto fue de 3 a 5 Sprints y se realizó en 4 Sprints.

La lógica del proyecto debía estar implementada completamente en JavaScript (ES6+), HTML y CSS y empaquetada de manera automatizada.

La aplicación debía ser un Single Page App. Los pedidos debían tomarse desde una tablet, pero no se requirió una app nativa, sino una web app que sea mobile-first.

La aplicación desplegada tiene 92-100% de Performance, Progressive Web App, Accessibility y Best Practices de Lighthouse.

La aplicación hace uso de npm-scripts y cuenta con scripts dev, test, build y deploy, que se encargan de arrancar, correr las pruebas, empaquetar y desplegar la aplicación respectivamente.

Por otro lado, la estructura de carpetas y archivos es:

.
├── 
├── README.md
├── package.json
├── index.html
├── src
|  ├── main.jsx
|  ├── App.jsx
|  ├── App.css
|  ├── index.css
|  ├── components
|  |   ├──button
|  |   |  ├──button.css
|  |   |  └──button.jsx
|  |   ├──chefButton
|  |   |  ├──chefButton.css
|  |   |  └──chefButton.jsx
|  |   ├──input
|  |   |  ├──input.css
|  |   |  └──input.jsx
|  |   ├──logoutButton
|  |   |  ├──logoutButton.css
|  |   |  └──logoutButton.jsx
|  |   ├──modal
|  |   |  ├──modal.css
|  |   |  └──modal.jsx
|  |   ├──pages
|  |   |  ├──Error
|  |   |  |  ├──error-page.css
|  |   |  |  └──error-page.jsx
|  |   |  ├──Home
|  |   |  |  ├──home.css
|  |   |  |  └──home.jsx
|  |   |  ├──Kitchen
|  |   |  |  ├──kitchen.css
|  |   |  |  ├──kitchen.jsx
|  |   |  |  ├──kitchen.spec.js
|  |   |  |  └──renderKitchen.spec.js
|  |   |  ├──Login
|  |   |  |  ├──login.css
|  |   |  |  ├──login.jsx
|  |   |  |  └──login.spec.js
|  |   |  ├──Menu
|  |   |  |  ├──menu.css
|  |   |  |  ├──menu.jsx
|  |   |  |  ├──menu.spec.js
|  |   |  |  └──renderMenu.spec.js
|  |   |  ├──Orders
|  |   |  |  ├──orders.css
|  |   |  |  ├──orders.jsx
|  |   |  |  └──orders.spec.js
|  |   |  ├──Products
|  |   |  |  ├──products.css
|  |   |  |  ├──products.jsx
|  |   |  |  ├──products.spec.js
|  |   |  |  └──renderProducts.spec.js
|  |   |  └──Users
|  |   |  |  ├──renderUsers.spec.js
|  |   |  |  ├──users.css
|  |   |  |  ├──users.jsx
|  |   |  |  └──users.spec.js
|  |   ├──stopwatch
|  |   |  ├──stopwatch.css
|  |   |  └──stopwatch.jsx
|  |   └──waiterButton
|  |   |  ├──waiterButton.css
|  |   |  └──waiterButton.jsx
|  ├── services
|  |   ├── apiRequest.jsx
|  |   └── apiRequest.spec.js
|  ├── utils
|  |   ├── kitchen.jsx
|  |   ├── login.jsx
|  |   ├── menu.jsx
|  |   ├── orders.jsx
|  |   ├── products.jsx
|  |   └── users.jsx
|  └── assets
|     └── Images
|        ├──add.png
|        ├──admin.png
|        ├──agua.png
|        ├──borrar.png
|        ├──cafe.png
|        ├──cafeLeche.png
|        ├──ceboll.png
|        ├──chef.png
|        ├──close.png
|        ├──cocin.png
|        ├──dobl.png
|        ├──editar.png
|        ├──fondo.png
|        ├──hamb.gif
|        ├──hide.png
|        ├──jug.png
|        ├──listo.png
|        ├──logo.png
|        ├──logo2.png
|        ├──meser.png
|        ├──out.png
|        ├──pago.png
|        ├──paps.png
|        ├──refr.png
|        ├──remove.png
|        ├──sandw.png
|        ├──sencill.png
|        ├──show.png
|        └──waiter.png
├── mock-assets.js
├── mock-css.js
├── package-lock.json
├── babel.config.cjs
├── vite.config.js
├── .eslintrc.cjs
├── .gitignore
├── LighthouseReport.pdf
└──thumb.png

9. Objetivos de aprendizaje

9.1 Objetivo general de apredizaje

El objetivo principal es aprender a construir una interfaz web usando React. Tratando de solucionar el problema: cómo mantener la interfaz y el estado sincronizados. Así que en este proyecto nos familiarizamos con el concepto de estado de pantalla, y cómo cada cambio sobre el estado se va reflejando en la interfaz (por ejemplo, cada vez que agregamos un producto a un pedido, la interfaz actualiza la lista del pedido y el total).

9.2 Objetivo particulares de apredizaje

HTML

CSS

JavaScript

  • [✓] Uso de linter (ESLINT)

  • [✓] Uso de identificadores descriptivos (Nomenclatura y Semántica)

Control de Versiones (Git y GitHub)

  • [✓] Git: Instalación y configuración

  • [✓] Git: Control de versiones con git (init, clone, add, commit, status, push, pull, remote)

  • [✓] Git: Integración de cambios entre ramas (branch, checkout, fetch, merge, reset, rebase, tag)

  • [✓] GitHub: Creación de cuenta y repos, configuración de llaves SSH

  • GitHub: Despliegue con GitHub Pages

    Links

  • [✓] GitHub: Colaboración en Github (branches | forks | pull requests | code review | tags)

  • [✓] GitHub: Organización en Github (projects | issues | labels | milestones | releases)

HTTP

React

Bases de datos

  • Modelado de datos

Centrado en el usuario

  • [✓] Diseñar y desarrollar un producto o servicio poniendo a las usuarias en el centro

Diseño de producto

  • [✓] Crear prototipos de alta fidelidad que incluyan interacciones

  • [✓] Seguir los principios básicos de diseño visual

Investigación

About

Proyecto 6.1 - App que cuenta con una interfaz a través de la cual el usuario puede tomar pedidos (mesero), enviarlos al área de preparación (chef) y hacer el manejo de usuarios y productos (administrador), todo esto conectado a una API

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 88.8%
  • CSS 11.0%
  • HTML 0.2%