FTGO is a scalable, microservice-based food ordering application built with Python (FastAPI) and Vue.js, designed following object-oriented design principles.
💎 You can use this project as a template to build your backend microservice project in Python 💎
🔊 New features and technologies will be added soon!
Source Code: https://github.com/deepmancer/full-stack-fastapi-ftgo
-
⚡ FastAPI:
- 🔮 pydantic for settings and request/response validation.
- 🔑 JWT middleware for secure authentication.
- 🚧 Permission manager for role-based access control on routes.
- 📛 Rate limiting for API protection.
- ⌚ RequestId, Timing, and many exciting middlewares!
- 🔒 Secure password hashing by default.
- 🌀 Customizable profilers with Prometheus.
-
🌱 MongoDB:
- Async client with motor and Object Document Mapping (ODM) with beanie.
- mongo-motors package for singleton and managed connection.
-
🧰 Redis:
- Async operations for caching and session management.
- redis-py with aredis-client.
-
💾 PostgreSQL:
- Async client with aqlachemy ORM & automatic migrations with alembic..
- asyncpg-client as the session manager.
-
🚀 RabbitMQ:
- Utilizing rabbitmq-rpc and aio-pika.
- No server-side implementation.
-
- Containers for simplified deployment and scaling.
-
✅ Pytest:
- Async tests with pytest and pytest-async.
- 🔆 Grafana: Automatic metric dashboards on endpoints using Prometheus.
- 📉 Metabase: PostgreSQL/MongoDB analytics and reporting.
- 📕 RedisInsight: Redis data visualization and management.
- 🌿 Mongo-Express: MongoDB admin interface.
- 💥 RabbitMQ Management: Visualizing and monitoring events.
These tools are configured and run via Docker in the infra/admin/docker-compose.yaml
.
Create Docker networks for backend and frontend services.
docker network create --driver bridge backend-network
docker network create --driver bridge frontend-network
Navigate to the infrastructure directory and start the services, including databases and GUI tools.
cd backend/infra
docker compose up --build
backend/infra
├── admin (Metabase, RedisInsight, Mongo-Express)
├── mongo
├── monitoring (Grafana, Prometheus)
├── postgres
├── rabbitmq (with the Management extension)
└── redis
Navigate to the backend directory and start all microservices.
cd backend/
docker compose up --build
The frontend is built with Vue.js for a dynamic and responsive user experience.
Navigate to the ui/
directory and install the required packages.
cd ui/
npm install
Run the development server with hot-reloading enabled.
npm run serve