Tech Stack
The following technologies were used to develop this project:
Web Frameworks
FastAPI
Website: https://fastapi.tiangolo.com/
Most microservices were implemented using this Python framework (in fact, all of them except the API Gateway and the payments microservice)
We found using FastAPI very straightforward, its automatic API documentation and validations were really helpful.
Fastify
Website: https://www.fastify.io/
Given the technical requirement of using both Python and Javascript as backend languages, we decided Fastify was a suitable choice for the API Gateway because of its features: extensibility and high performance being the most important ones.
DBMS
PostgreSQL
Website: https://www.postgresql.org/
Users, Trips, and Pricing Rules were persisted using PostgreSQL.
MongoDB
Website: https://www.mongodb.com/
We used MongoDB for storing ratings and payments data.
PaaS
Website: https://www.heroku.com
All microservices were deployed to Heroku via Docker containers.
Programming Languages & Libraries
Python 3.10.7
psycopg2-binary: 2.9.3
flake8: 5.0.4
coverage: 6.4.4
pytest: 7.1.3
behave: 1.2.6
uvicorn: 0.18.3
fastapi: 0.85.0
requests: 2.28.1
prometheus-client: 0.15.0
firebase–admin: 6.0.1
pymongo: 4.3.2
exponent-server-sdk: 2.0.0
sqlalchemy: 1.4.41
alembic: 1.8.1
email-validator: 1.3.0
passlib: 1.7.4
Javascript ES6
@fastify/swagger: ^7.6.1
axios: ^0.27.2
fastify: ^4.8.1
fastify-plugin: ^4.2.1
firebase-admin: ^10.0.0
@cucumber/cucumber: ^8.6.0
@cucumber/pretty-formatter: ^1.0.0
eslint: ^8.27.0
eslint-config-airbnb-base: ^15.0.0
eslint-plugin-import: ^2.26.0
nodemon: ^2.0.20
pg: ^8.8.0
tap: ^16.3.0
Solidity
In the implemented Smart Contract.