Emir Aydın
Emir AydınAI AUTOMATION
← Back to Case Studies
Active DevelopmentLead Software Product Builder

CarryHub

Textile Logistics Marketplace & Operating System for Courier Routing

TypeScriptNext.jsFastAPIPythonPostgreSQLRedisDocker

Problem

Textile logistics and courier operations suffered from inefficient manual dispatching, causing driver downtime, delayed deliveries, and inflated operational costs.

Solution

Developed CarryHub, a comprehensive marketplace and operating system for textile logistics. Built modules for courier routing, delivery tracking, and dynamic pricing with architecture designed for future AI batch optimization.

System Architecture

TypeScript Next.js multi-tenant frontend communicating with a Python FastAPI core. Asynchronous route optimization algorithms run on background workers writing finalized manifests to PostgreSQL.

System Architecture Flow

4 Components
STEP 01
Courier Dispatcher Portal

Next.js interface for live fleet tracking & order assignment.

STEP 02
FastAPI Core API

RESTful API handling authentication, pricing & webhooks.

STEP 03
Route Calculation Engine

Asynchronous distance calculation & clustering worker.

STEP 04
PostgreSQL Database

Spatial indexing store for delivery manifests and locations.

Execution Workflow

1. Orders ingested via merchant API webhooks.
2. Geocoding pipeline converts raw addresses into spatial coordinates.
3. Route solver engine clusters deliveries by driver availability.
4. Manifests and sequence maps pushed directly to courier mobile web app.

Business Impact & Metrics

Transformed manual dispatch operations into a 1-click automated system, allowing logistics operations to handle significantly more daily shipments.

Dispatch Automation100%
Before: Manual entryAfter: Automated
Route Efficiency Gain+28%
Before: BaselineAfter: +28%

Key Lessons Learned

Caching geocoded addresses in Redis drastically cuts down external map API call costs.

What I Would Build Differently Today

I would use an event-driven architecture using Kafka or NATS streams to decouple order ingestion from spatial route solver execution.