재난/안전 관련 여러 데이터 소스를 주기적으로 수집해 공통 형태의 "이벤트"로 정리하고, 최신 정보를 API와 실시간 스트림(SSE)으로 제공하는 백엔드 서비스입니다.
- 다양한 소스에서 재난/안전 정보를 폴링 수집
- 이벤트 형태로 정형화해 DB에 저장
- 최신 이벤트 목록을 HTTP API로 제공
- 실시간 UX를 위한 SSE 스트림 제공
- AI 기반 분류
- 재난문자
- 미소지진
- 실시간 지진 정보
- 소방활동
- 화재출동
- 산불
- 기상 특보
- 대기질 (PM, O3)
- 교통 돌발정보
- 산사태
- 뉴스
- SNS 이슈
- BullMQ 반복 잡으로 소스별 폴링
- 소스가 원본 fetch 후 이벤트로 정형화
- 이벤트를 DB에 저장하고, Pub/Sub으로 새 이벤트 ID 발행
- 각 인스턴스가 메시지를 수신해 SSE로 브로드캐스트
- SSE 재연결 시 누락분을 DB에서 보낸 뒤 live 전환
- Node.js / TypeScript
- Hono, Kysely
- Postgres, Redis, BullMQ
- Postgres/Redis 실행
docker-compose up -d- 앱 실행
npm install
npm run dev- 주요 엔드포인트
- GET /events
- GET /events/stream
이 프로젝트는 개인 학습 및 실험 목적으로 개발된 비상업적 오픈소스 소프트웨어입니다. 제공되는 데이터의 정확성, 완전성, 신뢰성에 대해 어떠한 보증도 하지 않으며, 이 소프트웨어의 사용으로 인해 발생하는 모든 종류의 손해에 대해 책임을 지지 않습니다. 실제 재난/안전 상황에서는 공식 채널과 기관의 정보를 반드시 확인하시기 바랍니다.
