Case study

AADI

View as

AADI is a microservice-based application designed to enhance kitchen orchestration and order management through innovative features like GPS-powered dispatch and geofencing. The project leverages a modern tech stack, ensuring scalability and efficiency in operations.

Architecture

The architecture of AADI is designed for scalability and reliability, utilizing a microservice approach. This allows the system to efficiently manage various components like orders and users, ensuring a robust infrastructure capable of handling high demand.

Stack

The technology choices for AADI reflect a commitment to using mature and widely adopted tools. By leveraging AWS services and modern frameworks like React and React Native, the project ensures a seamless user experience and operational efficiency.

Deep dive

The project addresses the challenge of efficient order dispatch through geofencing and capacity logic, ensuring timely service. AADI's architecture allows for modular development, making it easier to manage and scale individual components.

AADI employs a microservice architecture with an event-driven pattern, utilizing AWS Lambda for backend services. The project consists of multiple microservices dedicated to orders, users, and restaurants, addressing complex business logic such as geofencing and capacity management.

Architecture

AADI's architecture is microservice-based and event-driven, featuring multiple services for orders, users, and restaurants. The use of AWS Lambda facilitates serverless computing, while geofencing and capacity logic enhance order dispatch efficiency, ensuring timely service delivery.

Stack

AADI utilizes a tech stack that includes JavaScript, TypeScript, and Python, with frameworks such as React and React Native for frontend development. The backend is powered by AWS Lambda, DynamoDB, and the AWS SDK, enabling efficient data management and service integration.

Deep dive

AADI's implementation of geofencing and capacity-aware order management presents unique challenges in real-time data processing and service orchestration. By utilizing AWS Lambda and an event-driven architecture, the project effectively handles high volumes of orders while maintaining responsiveness and reliability.

Guided tour

  1. 01

    GPS-Powered Order Orchestration Platform

    Arrive is a capacity-aware order orchestration platform that ensures food is freshly prepared as customers approach the restaurant. It leverages geofencing and real-time kitchen capacity evaluation to optimize order dispatching.

    • !Uses GPS for order orchestration
    • Employs geofencing technology
  2. 02

    Microservice Architecture

    The project is structured as a layered microservice architecture, utilizing AWS Lambda for backend services and DynamoDB for data storage. Each service, such as orders and users, operates independently while sharing utilities through a Lambda Layer.

    • Utilizes AWS Lambda for backend services
    • Follows a microservice architecture
  3. 03

    README.md: Project Overview

    The README.md provides a comprehensive overview of the Arrive platform, detailing its purpose, features, and architecture. This file reflects the developer's emphasis on clear documentation and user guidance.

    • !Contains project overview and architecture
    • Provides detailed testing structure

    README.md

    # Arrive Platform
    
    > GPS-Powered Just-in-Time Kitchen Orchestration
    
    **Built with ❤️ via AI pair programming.**
    
    ---
    
    ## 🧭 Overview
    
    Arrive is a capacity-aware order orchestration platform. It flips the traditional takeout and curbside model on its head by delaying kitchen dispatch until the customer is physically approaching the restaurant, ensuring food is always freshly prepared exactly when they arrive.
  4. 04

    Well-Tested Codebase

    The project employs a variety of testing frameworks, including pytest for Python and Jest for JavaScript/TypeScript. Tests are organized in dedicated directories for each service and include unit and integration tests.

    • Includes unit and integration tests
    • !Uses pytest for Python testing
  5. 05

    CI/CD Workflows for Deployment

    The project includes CI/CD workflows defined in GitHub Actions, facilitating automated testing and deployment. The deployment target is not explicitly stated but is managed through scripts and AWS services.

    • Configured CI/CD workflows
    • Automated testing in CI
  6. 06

    Clone the Repository

    To explore the project, you can clone the repository using the command below. There is no live demo available at this time.

    • !Repository available for cloning
    git clone https://github.com/shashankcm95/AADI
Architecture
graph TD
    subgraph Clients
      C[Customer App<br/>React Native / iOS]
      A[Admin Portal<br/>React]
      W[Customer Web<br/>React]
    end

    subgraph AWS Cloud
      API[API Gateway]
      COG[Cognito Auth]
      
      subgraph Microservices
        O[Orders Service<br/>Python Lambda]
        U[Users Service<br/>Python Lambda]
        R[Restaurants Service<br/>Python Lambda]
        POS[POS Integration<br/>Python Lambda]
        S[Shared Layer<br/>Utilities]
      end
      
      subgraph Data Stores
        DDB[(DynamoDB Tables)]
      end
      
      subgraph Location Services
        LOC[AWS Location Service<br/>Geofencing]
        EB[EventBridge]
      end
    end
    
    C -->|Trigger Geofence| LOC
    LOC -->|Event| EB
    EB -->|Dispatch El

Diagram source rendered with mermaid.js.

Built with
  • Python
  • The project uses JavaScript as a programming language.
  • The project uses TypeScript as a programming language.
  • The project uses Python as a programming language.
  • The project uses React as a framework.
  • The project uses React Native as a framework.
  • The project uses AWS SDK as a library.
  • The project uses DynamoDB as a library.
  • The project uses AWS SAM as a tool.
  • The project uses API Gateway as a tool.
  • The project uses Cognito as a tool.
  • The project uses CloudWatch as a tool.
  • The project uses npm as a tool.
  • The project uses pytest as a tool.

Verified facts

  • The project uses JavaScript as a programming language.from code
    Evidence
    Frontend: React, React Native, TypeScript

    Source: README

  • The project uses TypeScript as a programming language.from code
    Evidence
    Frontend: React, React Native, TypeScript

    Source: README

  • The project uses Python as a programming language.from code
    Evidence
    Backend: Python 3.11, AWS Lambda, DynamoDB

    Source: README

  • The project uses React as a framework.from code
    Evidence
    Frontend: React, React Native, TypeScript

    Source: README

  • The project uses React Native as a framework.from code
    Evidence
    Frontend: React, React Native, TypeScript

    Source: README

  • The project uses AWS SDK as a library.from code
    Evidence
    Backend: Python 3.11, AWS Lambda, DynamoDB

    Source: README

  • The project uses DynamoDB as a library.from code
    Evidence
    Backend: Python 3.11, AWS Lambda, DynamoDB

    Source: README

  • The project uses AWS SAM as a tool.from code
    Evidence
    Infrastructure: AWS SAM, API Gateway, Cognito, S3, CloudFront, CloudWatch

    Source: README

View repository ↗