Houm tracking api permite realizar las siguientes capacidades de negocio:
- Agendar visitas para cada houmer, cada visita contendra una parada la cual el houmer visitara
- Actualizar la posicion actual del houmer
- Actualizar los estados de las paradas que el houmer visitara
- Realizar consultas sobre las paradas visitadas por el houmer usando distintos parametros de busqueda
Supuestos: Se supone que la carga de lugares con sus cordenadas es responsabilidad de otro servicio, y se asume que la data existe, es por esto que se usa un seeder para cargar data de prueba. Se asume que estamos en un contexto de seguridad por lo cual no se desarrollan componentes para validar jwt/oauth/open id connect
- Descripcion de arquitectura de alto nivel, arquitectura de componentes y estructura de proyecto Arquitectura de componentes
- Descripcion y definicion de la API Definicion de API
- Persistencia y diagrama de ER DB
El proyecto esta construido con las siguientes herramientas:
- Lenguaje: Python 3.8+
- Manejador de paquetes: Poetry
- Framework Web: FastAPI
- Web server: Uvicorn
- Base de datos: Postgres
- Migraciones de BD: Alembic
- ORM: SQLAlchemy
Para comenzar con el desarrollo se recomienda tener las siguientes herramientas instaladas
Revisar las variables de ambiente en el archivo .env
- Instalar librerias
poetry install
- Iniciar el contenedor de postgres
plis start pgsql-db
- ejecutar migraciones con alembic.
poetry run alembic upgrade head
- cargar data de prueba
poetry run seeder
- Iniciar el servidor web
poetry run web_server
- Revisar si la app esta corriendo de forma correcta
curl -X 'GET' \
'http://localhost:8000/status' \
-H 'accept: application/json'
Para ejecutar todo desde docker
- Levantar todos los contenedores
plis start
- Revisar si la app esta corriendo de forma correcta
curl -X 'GET' \
'http://localhost:8000/status' \
-H 'accept: application/json'