Skip to content
Personal Mon-Sat 06:00-20:00 hourly crawl · Blue-Green zero-downtime · SQLite single server

Daesin Logistics Dispatch Bot

2026-01-01 — present

Logistics dispatch data service crawling with Cheerio, queryable via KakaoTalk chatbot skill server and Next.js mobile web — Clean Architecture + TSyringe DI, Express 5, Prisma SQLite, Traefik Blue-Green zero-downtime deployment

Daesin Logistics Dispatch Bot project cover image

System Architecture

Daesin Logistics Dispatch Bot architecture diagram

Problem Solving

1

Operational inefficiency from manually checking dispatch status on website

Solution Process

Crawled EUC-KR encoded dispatch data with Cheerio + Axios, node-cron auto-sync Mon-Sat 06:00-20:00 hourly

Result

Manual lookup → 15 daily auto-crawls, real-time data availability

2

Field workers had no mobile access to dispatch info without PC

Solution Process

Implemented Kakao i Open Builder skill server + Next.js responsive mobile web + Recharts stats dashboard

Result

Dual-channel (KakaoTalk + mobile web) enabling instant field queries

3

Business logic changes required when external dependencies changed

Solution Process

Clean Architecture layer separation, TSyringe DI token interface binding, Value Object pattern for type-level domain rule enforcement

Result

Only infra layer changes on dependency swap, zero business logic changes

4

Service downtime from manual restart deployment

Solution Process

Traefik file-provider Blue-Green deployment, deploy.sh automating build → health check → YAML rewrite → traffic switch

Result

Zero deploy downtime, security without Docker socket exposure

Project Description

A service that automatically collects logistics dispatch data for real-time querying via KakaoTalk chatbot and mobile web. The backend separates domain, application, and infrastructure layers using Clean Architecture with TSyringe-based dependency injection, crawling dispatch data with Cheerio + Axios and storing in Prisma SQLite. Auto-syncs via node-cron every hour from 6 AM to 8 PM (Mon-Sat), and provides route code, vehicle number, and destination search with daily statistics through a Kakao i Open Builder skill server. The frontend is a Next.js mobile web with TanStack Query-based data fetching and Recharts statistics visualization. Designed a Blue-Green zero-downtime deployment architecture using Traefik reverse proxy in Docker, automating the full cycle from build to health check to traffic switching to rollback via deployment scripts.

Highlights

  • Clean Architecture + TSyringe DI layer separation design
  • Cheerio crawling + node-cron hourly auto-sync (Mon-Sat)
  • KakaoTalk chatbot skill server (route/vehicle/destination search)
  • Traefik Blue-Green zero-downtime deploy + automated deploy scripts
  • Next.js mobile web + Recharts statistics dashboard

Performance Metrics

Performance Metrics Before After
Crawl frequency 수동 조회 일 15회 자동 (자동화)
Deploy downtime 수동 재시작 0초 (Blue-Green)

Tech Decisions

  • Clean Architecture + TSyringe DI: layer separation for swappable external dependencies (crawler, Kakao API, DB), interface binding via DI tokens
  • SQLite: eliminates PostgreSQL operational overhead for single-server read-heavy workload, file-based volume mount ensures Docker portability
  • Traefik file provider: traffic switching via YAML rewrite without Docker socket exposure, achieving both security and simple rollback

Lessons Learned

  • Learned decoupling business logic from external dependencies (crawler, DB, Kakao API) by applying Clean Architecture layer separation with TSyringe DI container
  • Understood chatbot platform request/response protocols and scenario block integration by directly implementing Kakao i Open Builder skill server
  • Experienced zero-downtime deployment traffic switching, health checking, and rollback strategies by designing Traefik-based Blue-Green deployment with automated deploy scripts
  • Learned domain modeling techniques preventing primitive type abuse by enforcing domain rules at type level through Value Object pattern (LineCode, SearchDate)

Tech Stack

TypeScript Express Next.js React Prisma SQLite Cheerio TSyringe TanStack Query Recharts Docker Traefik Tailwind CSS Vitest

Related Links

  • live
  • github-fe