Este proyecto pretende proporcionar una API para solventar el problema de particionar pagos entre varias personas y además proveer de herramientas para planificar pagos en actividades conjuntas. Un ejemplo sería cuando varias personas se van juntas de viaje y una paga el hotel, otra la comida y al final quieren ajustar la cuenta de cuanto debe cada persona. También sería interesante en el viaje conocer cuanto se va gastando y llevar una planificación del presupuesto disponible.
Toda la información relativa al despliegue se encuentra en PaaS
La información relativa a la REST API que se expone se encuentra en la documentación sobre el Microservicio y en la de las urls.
Tambien hay un apartado en Microservicios/diseño que explica como se ha esrtructurado el microservicio y como se han desacoplado en la medida de lo posible los distintos componentes del mismo. También se documenta como se maneja actualmente el almacenamiento de datos.
Microservicios/testing informa de la estructura de los tests.
Para obtener información sobre las peticiones que se procesan en el microservicio se pone a disposición un sistema de logging con capacidad de enviar los logs a otro servicio mediante syslog. Para saber como funciona y se integra en el proyecto consultar la documentación logs.
El proyecto cuenta con distintos parámetros para ajustar el comportamiento del
microservicio. Se utilizan tanto variables de entorno como etcd
a modo de
gestor de configuración distribuida. En el apartado de
configuración se especifica la política
para encontrar la configuración y las variables que se buscan al arrancar el
microservicio.
Se ha creado un contenedor docker para ejecutar el microservicio. El archivo Dockerfile se ha adaptado a partir del creado en versiones anterior. Para ejecutar el contenedor hay que proporcionar las variables de entorno. Un ejemplo sería
docker run -p 8000:8000 -e log_host="logs.papertrailapp.com" -e log_port=$PORT_LOG -e host="0.0.0.0" -e port=8000 -e RUST_LOG=Info image:latest
Para ejecutar el contenedor sin docker hay que:
- Clonar el repositorio
- Ejecutar
make release
- Crear las variables de entorno necesarias
- Ejecutar
./target/release/bukhgalter
Se ha documentado la parte serverless de la aplicación en
la documentación del proyecto. Se han creado un función en rust que devuelve un
json
con información. Por motivos técnicos ha sido alojada en otro repositorio
https://github.com/yabirgb/bukhgalter-collaborators.
También se ha creado un bot de telegram desplegado en netlify @bukhgalterbot y una interfaz web usando javascript y el framework svelte. Esta interfaz se encuentra en la carpeta ui y está desplegada en netlify.
Para más detalles remitirse a la documentación.
- Como lenguaje de programación para el proyecto se ha elegido Rust.
- Como gestor de tareas se ha decidido utilizar
make
. Justificación Cargo
con su utilidad detesting
(cargo test
) sera la herramienta de tests que se use. Justificación
Respecto a los sistemas de integración continua, se han descrito cual ha sido su propósito de uso en el capítulo de CI de la documentación.
Se han configurado como sistemas de CI:
-
Circle-CI (hay que loguearse para ver las builds. Se puede ver una foto aquí. Con la UI antigua sí se pueden ver).
En el archivo de contenerizacion hago una explicación del proceso que he seguido para crear los dos contenedores que he creado para el proyecto.
En el archivo de CI explico como se ha integrado docker en los tests y como se despliega el contenedor de tests en dockerhub. A raiz de un comentario en el grupo de Telegram he cambiado y he configurado también la acción desde dockerhub para que se genere el contenedor. Lo documento en el archivo dockerhub.
Finalmente en el archivo de criterios explico las precauciones que he tenido al crear los contenedores.
Todas las fuentes de las que he sacado código no propio aparecen documentadas en los
distintos archivos en el apartado de fuentes
.
El contenedor de tests se encuentra publicado en:
La estructura del proyecto y donde encontrar archivos relevantes se encuentra disponible en la documentación.
Algunos sitios claves del proyecto son:
Es necesario tener Rust
instalado junto a Cargo
y make
.
Para comprobar que el proyecto no tiene ningún problema de sintaxis
make check
Para instalar las dependencias y compilar el proyecto usar
make build
Para ejecutar los tests
make test
Para ejecutar el servicio usar
make run
Para instalar las dependencias y compilar en modo de producción
make release
Si se desea la documentación generada por rust para el proyecto
make docs
A continuación se lista información de que se puede encontrar en la documentación. Una versión web de la documentación se encuentra en la página web del proyecto en GitHub-Pages.
-
En el archivo de herramientas se puede leer una argumentación de por qué se ha elegido cada herramienta que se ha listado con anterioridad.
-
En el arhivo de setup se encuentran detalles sobre como se ha configurado git.
-
Historias de Usuario que describen los requisitos del proyecto.