Skip to content

isabeljohnson001/Food-Ordering-App

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Food-Ordering-App

EatMe is a full-stack, microservice-based food ordering application designed for scalability and efficiency. Built with modern technologies like Python's FastAPI and Javascript. This application follows best practices in object-oriented design and microservices architecture. It serves as a robust template to create advanced backend microservice projects.

Technology Stack and Features:

  • 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)
  • Redis:

    • Async operations for caching and session management.
    • redis-py.
  • PostgreSQL:

  • RabbitMQ:

  • Docker Compose:

    • Containers for simplified deployment and scaling.
  • Pytest:

    • Async tests with pytest and pytest-async.

GUI Management Tools

These tools are configured and run via Docker in the infra/admin/docker-compose.yaml.

Setup Instructions

Step 1: Create Docker Networks

Create Docker networks for backend and frontend services.

docker network create --driver bridge backend-network
docker network create --driver bridge frontend-network

Step 2: Build and Run Infrastructure

Navigate to the infrastructure directory and start the services, including databases and GUI tools.

cd backend/infra
docker compose up --build

Infrastructure Layout:

backend/infra
├── admin (Metabase, RedisInsight, Mongo-Express)
├── mongo
├── monitoring (Grafana, Prometheus)
├── postgres
├── rabbitmq (with the Management extension)
└── redis

Step 3: Build and Run Microservices

Navigate to the backend directory and start all microservices.

cd backend/
docker compose up --build

Frontend Setup

The frontend is built with Vue.js for a dynamic and responsive user experience.

Step 1: Install Dependencies

Navigate to the ui/ directory and install the required packages.

cd ui/
npm install

Step 2: Start Development Server

Run the development server with hot-reloading enabled.

npm run serve

Interactive API Documentation

image

Admin Dashboards

Grafana

image

Metabase

image

Redis

image

RabbitMQ Management

image

MongoDB Compass

image

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published