Skip to content

Repository files navigation

LawCast

CI

LawCast는 국회 입법예고 변동을 수집해 Discord 웹훅 알림과 웹 UI로 보여주는 셀프호스트형 플랫폼입니다.

이 저장소는 백엔드/프론트엔드 서브모듈을 묶는 루트 오케스트레이션 레이어이며, 역할은 다음과 같습니다.

  • 서비스 전체 실행/배포 진입점 제공
  • 백엔드 + 프론트엔드 개발 동선 통합
  • Docker Compose 기반 운영 구성 관리

이 저장소의 방향성

루트 README는 빠르게 이해하고 바로 실행하기 위한 허브 문서입니다.

  • 백엔드 아키텍처/크론/데이터 무결성 상세는 백엔드 문서에서 관리합니다.
  • UI 구조/페이지/필터 UX 상세는 프론트엔드 문서에서 관리합니다.
  • 루트 문서는 시스템 관점(구성, 실행 순서, 운영 스크립트)에 집중합니다.

시스템 구성

flowchart LR
	U[User Browser] --> F[Frontend\nSvelteKit]
	F --> B[Backend\nNestJS]
	B --> R[(Redis)]
	B --> D[(SQLite Volume)]
	B --> O[Ollama Optional]
	B --> P[PAL/NSM Crawling]
	B --> W[Discord Webhook]
Loading

리포지토리 구조

핵심 사용자 가치

  • 입법예고 자동 수집 및 Discord 실시간 알림
  • 로그인 없는 웹훅 등록 UX
  • 전체 입법예고 조회, 검색/날짜 필터/정렬
  • AI 요약 브리핑 카드 및 원문 조회 페이지
  • 요약 오류 가능성 고지 포함(참고용 안내)

빠른 시작

1) 서브모듈 준비

git submodule update --init --recursive

2) 로컬 개발 실행

백엔드

cd backend
npm install
npm run start:dev

프론트엔드

cd frontend
npm install
npm run dev

외부 프록시(ngrok 등) 사용 시

ngrok 등 외부 프록시를 통해 개발 서버를 공유하는 경우, Vite HMR WebSocket이 정상 동작하도록 REMOTE_DEV 환경 변수를 설정해야 합니다.

REMOTE_DEV=1 npm run dev

이 설정은 HMR 프로토콜을 wswss, 클라이언트 포트를 undefined443으로 변경하여 외부 프록시 환경에서 WebSocket 연결이 차단되는 문제를 방지합니다.

환경 변수 상세는 아래 문서를 참고하세요.

Docker Compose 실행 (권장 운영 경로)

docker compose up -d --build

기본 포트

  • Frontend: 127.0.0.1:3002
  • Backend: 127.0.0.1:3001
  • Redis: 127.0.0.1:6399
  • Ollama: 127.0.0.1:11434

중지

docker compose down

운영 스크립트

deploy.sh

  • 전체 롤링 업데이트
./deploy.sh
  • 특정 서비스만 업데이트
./deploy.sh backend
./deploy.sh frontend
  • 서비스 목록 조회
./deploy.sh list

submodule_util.sh

  • 서브모듈 원격 정보 동기화: ./submodule_util.sh sync
  • 최신 커밋으로 업데이트: ./submodule_util.sh update
  • 특정 브랜치로 전환/동기화: ./submodule_util.sh branch

문서 맵

라이선스

MIT License

자세한 내용은 LICENSE 파일을 참고하세요.

참고 프로젝트

  • pal-crawl: 국회 입법예고 크롤러 라이브러리
  • pal-webhook: Discord 웹훅 알림 참조 구현

About

국회 입법예고 스냅샷 아카이브 & 디스코드/웹푸시 알림 서비스

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages