Architecture

System Architecture

Audience: Programmer

System Architecture

pyck is a modular microservices platform built in Go that provides a comprehensive logistics solution for warehousing operations. The architecture follows modern microservices principles with clear separation of concerns.

Core Components

  1. Gateway Service

    • Aggregates GraphQL schemas from all services

    • Provides a unified API endpoint

    • Handles authentication and request routing

  2. Domain Services

    • Main Data Service: Core data operations and primary data entities

    • Inventory Service: Stock levels, item movements, and inventory management

    • Management Service: System configurations and company-related information

    • Picking Service: Order picking workflow and processing

    • Receiving Service: Inbound shipment processing

    • File Service: File storage and document management

    • Workflow Service: Background task execution and process automation

Technical Infrastructure

pyck leverages several key technologies:

  • GraphQL: Main API interface with federation across services

  • PostgreSQL: Primary data storage

  • NATS.io: Event streaming and service messaging

  • Temporal.io: Workflow orchestration and reliable task execution

  • Docker: Containerization for consistent deployment

  • Zitadel: Authentication and authorization

  • MinIO/S3: Object storage for files and attachments

Service Communication

Services communicate through:

  1. GraphQL Federation: For data queries and mutations

  2. Event Streaming: Using NATS for asynchronous events

  3. Workflow Orchestration: Temporal for complex process flows

Development Approach

The codebase follows these principles:

  • Go Backend: All backend services are written in Go

  • Infrastructure as Code: Docker Compose and Taskfile for automated setup

  • API-First Design: GraphQL schema definitions drive implementation

  • Code Generation: Models and GraphQL adapters are generated using entgo

  • CRUD+ System: Backend provides common basic functions for all warehouses

  • Process Workflows: Complex business logic implemented via temporal processes

Deployment Model

pyck can be deployed as:

  • Local Development Environment: Using Docker Compose

  • Kubernetes Cluster: Using Helm charts for production deployment

Last updated

Was this helpful?