시민의 야간 보행 안전을 돕고 치안을 강화하기 위한 지도 기반 웹 플랫폼
최근 1~2년간 한국형사정책연구원(KICJ) 조사에 따르면,
폭력범죄 피해는 주로 오후 6시부터 자정(18:00–24:00) 사이에
가장 많이 발생하는 것으로 나타났습니다.
또한 성인 여성의 63%가 야간 보행 중
성폭력·성희롱 피해에 대한 불안감을 느낀다고 응답했습니다.
이러한 사회적 배경 속에서 ‘SafetyGPS’ 프로젝트는
실제 가로등, 치안 센터, CCTV 위치 정보를 기반으로
야간 보행의 안전도를 시각화한 지도 플랫폼을 제공합니다.
-
실시간 안전 지도 표시
- 실제 가로등, 치안 센터, CCTV 위치 데이터를 지도 위에 시각화
- 주변 환경에 따른 안전 점수(Safety Score) 제공
-
LLM 기반 위험도 분석
- 대규모 언어모델(LLM)을 활용하여
사용자의 위치 기반으로 지역별 치안 위험도 분석 및 안내
- 대규모 언어모델(LLM)을 활용하여
-
참여형 커뮤니티 시스템
- 사용자가 직접 별점 평가 및 의견 제공
- 데이터 신뢰도 향상 및 지역 안전성 개선에 기여
| 분야 | 기술 |
|---|---|
| Frontend | react, react-dom, vite, antd |
| Package Manager | npm |
| Version Control | GitHub |
| 지도 API | 카카오 지도 API |
- V-World 개발자 센터에 접속
- 회원가입 후 API 키 발급 3.VITE_VWORLD_API_KEY=your_vworld_api_key_here
- 카카오 개발자 콘솔에 접속
- 애플리케이션 등록 후 다음 키들을 발급받습니다:
- JavaScript 키: 지도 SDK 로드용 3.VITE_KAKAO_JS_KEY=your_kakao_js_key_here
✅ 자동 설정: npm install 실행 시 자동으로 .env 파일이 생성됩니다.
.env.local.example 파일을 참고하여 .env.local 파일을 생성하세요:
# .env.local.example을 복사
cp .env.local.example .env.local
# .env.local 파일을 열어서 실제 키값 입력
# (팀 내부 문서나 비밀번호 관리자에서 키 확인)
npm install # .env.local에서 키를 자동으로 읽어서 .env 생성
npm run dev # 바로 개발 서버 실행 가능💡 팁: .env.local 파일은 한 번만 만들면 계속 사용할 수 있습니다. Git에 커밋되지 않으므로 안전합니다.
시스템 환경 변수로 설정할 수도 있습니다:
export VITE_VWORLD_API_KEY=your_key_here
export VITE_KAKAO_JS_KEY=your_key_here
npm install.env 파일을 직접 생성하거나 수정할 수 있습니다:
# V-World API 키
# 발급: https://www.vworld.kr/dev/v4dev_guide.do
VITE_VWORLD_API_KEY=your_vworld_api_key_here
# 카카오 지도 API 키
# 발급: https://developers.kakao.com/
# JavaScript 키: 지도 SDK 로드용
VITE_KAKAO_JS_KEY=your_kakao_js_key_here🔒 보안 주의사항:
.env와.env.local파일은.gitignore에 포함되어 있어 Git에 커밋되지 않습니다.- API 키는 절대 코드에 하드코딩하거나 Git에 커밋하지 마세요.
- 개발용 키는 팀 내부 문서나 비밀번호 관리자에서 확인하세요.
- CI/CD에서는 GitHub Secrets를 사용합니다 (자동으로 환경 변수 주입).
CI/CD는 GitHub Actions에서만 작동하며, 로컬 개발 환경에는 영향을 주지 않습니다.
- GitHub 저장소 → Settings → Secrets and variables → Actions
- 다음 Secrets 추가:
VITE_VWORLD_API_KEY: V-World API 키VITE_KAKAO_JS_KEY: 카카오 지도 JavaScript 키
보안: GitHub Secrets는 암호화되어 저장되며, GitHub Actions에서만 사용됩니다.
코드를 푸시하면 자동으로 빌드와 린트 체크가 실행됩니다.
npm run devbuild.yml:main,develop브랜치 대상 push/PR에서 실행되며 Node 18 환경에서npm ci후npm run build로 정적 빌드를 검증합니다. 지도 API 키는 GitHub Secrets(VITE_VWORLD_API_KEY,VITE_KAKAO_JS_KEY)로 주입합니다.lint.yml:main,develop브랜치에 대한 push/PR 시npm run lint로 코드 스타일과 규칙을 확인합니다.test.yml:main,develop브랜치에 대한 push/PR 시npm test(타입 체크)를 실행해 타입 안정성을 확인합니다.e2e.yml:main,develop브랜치에 대한 push/PR 시npm run test:e2e로 스모크 E2E를 돌려 빌드된 번들이 기본 플로우에서 동작하는지 확인합니다.deploy.yml:main,develop브랜치의 push/PR에서 빌드를 수행하고 아티팩트를 업로드하며,main에 push될 때만 GitHub Pages로 자동 배포합니다(Secrets 기반 API 키 주입).
모든 워크플로우는 공통으로 actions/checkout@v4, actions/setup-node@v4(node-version: 18, cache: npm)를 사용하며, 실패 시 해당 단계에서 바로 감지됩니다.
- global vars 기반 편리한 스타일링 적용 및 타입 안정성 기능 사용을 위해 스타일링 도구로
vanilla-extract를 선택하였습니다.
| 이름 | 역할 |
|---|---|
| 박준서 | UI 설계 및 프론트엔드 개발, 기능 점검 및 유지보수 |
| 김현섭 | UI 설계 및 프론트엔드 개발, 기능 점검 및 유지보수 |
| 주차 | 계획 내용 |
|---|---|
| 1주차 | 지도 API 연동 및 기본 UI 구성 |
| 2주차 | 가로등, CCTV, 치안 센터 위치 표시 기능 구현 |
| 3주차 | LLM 기반 위험도 분석 기능 추가 |
| 4주차 | 사용자 참여형 커뮤니티 시스템 구축 및 최종 점검 |
“야간 보행자에게 실시간 안전 정보를 제공하고,
지역 사회의 치안 인식 개선에 기여하는 스마트 지도 플랫폼 구축”
This project is licensed under the MIT License.
자유롭게 수정 및 배포가 가능합니다.
- Repository Name:
safetygps - Visibility: Public
- License: MIT
- Initialized with: ✅ README / ✅ .gitignore (Node) / ✅ License
Team SafetyGPS
“안전한 밤길, 우리의 기술로 밝혀갑니다.”