Velox: pedidos a domicilio para restaurantes locales
Aplicación de escritorio para que un restaurante gestione carta, pedidos y reparto, con un bot de Telegram por el que el cliente hace el pedido.
- Problema
- Un restaurante que reparte a domicilio tiene que llevar a la vez la carta, los pedidos abiertos y qué repartidor lleva cada uno. El cliente, por su parte, quiere pedir sin instalar otra aplicación.
- Solución
- El operador trabaja en una aplicación JavaFX con la carta, los pedidos y el reparto por zonas de código postal. El cliente se registra y pide desde un bot de Telegram, que escucha en un hilo propio para no bloquear la interfaz. Las direcciones se validan con la API de geocodificación de Mapbox y los datos se guardan en MySQL 8 mediante JPA/Hibernate.
- Qué aprendí
- A diseñar una aplicación antes de programarla: partir de diagramas UML y de un modelo entidad-relación para llegar al esquema de MySQL. Al mapearlo con JPA/Hibernate entendí cómo se organiza una arquitectura por capas y lo importante que es modelar bien el ciclo de vida de un pedido desde el principio. También aprendí a documentar un proyecto para que otras personas puedan entenderlo.
- 10 entidades JPA y un pedido con 6 estados. Las transiciones se validan en un único punto de la capa de servicio y cada cambio queda guardado en un histórico.
- Asignación de repartidor manual o automática entre los repartidores libres de la zona del pedido.
- Contraseñas de los operadores cifradas con BCrypt.
- 38 pruebas con JUnit 5, con pruebas de integración sobre H2.
- Memoria con casos de uso, diagrama de clases, modelo entidad-relación, estados y despliegue.
Tecnologías
- Java 21
- JavaFX
- Hibernate/JPA
- MySQL 8
- Docker
- JUnit 5
- API de Telegram
- Mapbox



