Skip to content
Personal

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

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
  • Cheerio crawling + node-cron auto-sync (hourly)
  • KakaoTalk chatbot skill server (route/vehicle)
  • Traefik Blue-Green zero-downtime deploy + auto
  • Next.js mobile web + Recharts statistics dashboard

Features

  • Auto crawling — Cheerio + Axios dispatch data collection, node-cron auto-sync Mon-Sat 06:00-20:00 hourly
  • KakaoTalk chatbot skill server — Kakao i Open Builder integration, route code/vehicle number/destination search, daily statistics
  • REST API — route/vehicle/date search endpoints, statistics API, manual sync trigger
  • Mobile web — Next.js responsive mobile UI, TanStack Query server state management, Recharts statistics visualization
  • Blue-Green zero-downtime deployment — Traefik reverse proxy, automated deploy script (build→health check→traffic switch→rollback)
  • Clean Architecture — domain/application/infrastructure layer separation, TSyringe DI container, Value Object (LineCode, SearchDate) pattern

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