Smoking Map (Seoul)
서울시 흡연구역 지도를 모두가 함께 만들어가는 커뮤니티형 웹 프로젝트입니다.
사용자는 흡연구역을 직접 등록하고, 지도에서 현재 등록된 흡연구역을 확인할 수 있습니다.
검수과정은 본인이 틈틈히 확인하여 업데이트하도록 하겠습니다.
초기 데이터셋은 서울시 공공데이터를 활용해 정규화 처리 작업했습니다.
프로젝트 컨셉
- “서울시 흡연구역 지도를 함께 완성한다”는 참여형 서비스
- 등록 폼을 통해 누구나 흡연구역 정보를 추가/수정 제안
- 지도 화면에서 흡연구역을 시각적으로 탐색
- 지도/클라이언트 외부 연동을 위한 흡연구역 정보 JSON API 제공
주요 기능
지도
- 등록된 흡연구역을 지도에 마커로 표시
- 주소 기반 데이터도 지오코딩을 통해 위치 표시(구현 방식에 따라)
흡연구역 등록
- 흡연구역 등록 폼 제공
- 주소/설명/이미지 등 기본 정보 입력 후 제출
JSON API
- 흡연구역 목록을 JSON으로 제공
- (추가 예정) 검색/필터링 등
기술 스택
- Backend: Spring Boot + Kotlin
- DB: PostgreSQL
- ORM: Spring Data JPA (Hibernate) + Kotlin Jdsl
- Frontend: Server-side rendering (JTE) + HTMX + Tailwind CSS + DaisyUI
- Infra: Docker / Nginx / Naver Map API / Gmail SMTP / CloudFlare DDNS / AWS S3
Api Key 인증
서버 대 서버 통신, 자동화된 스크립트, 또는 서드파티 서비스 연동 시 사용하는 인증 방식입니다. 발급된 API Key를 사용하여 서버 리소스에 접근할 수 있습니다.
API Key는 계정 생성을 필요로 합니다. 로그인 하시고 아래 발급버튼을 눌러주십시오.
1.2. API Key 사용하기
발급받은 API Key는 HTTP 요청의 X-API-Key 헤더에
함께 포함하여 전송해야 합니다.
curl -X GET http://localhost:8080/api/v1/products \
-H "X-API-Key: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJwYXJ0bmVyLXNl..."
데이터 기여 방식 (가이드라인)
- 등록 정보는 최대한 정확한 주소 기준으로 작성해주세요.
- 상세 설명(흡연부스/흡연구역 유형, 주변 랜드마크 등)을 남기면 정확도가 올라갑니다.
- 중복 데이터가 있을 수 있으니, 가능하면 기존 데이터 확인 후 추가해주세요.
로드맵
- [ ] 흡연구역 검색/필터 (구/동/키워드)
- [ ] 중복 등록 방지/병합
- [ ] 관리자 검수/신뢰도 시스템
라이선스
- MIT
문의 / 제안
- 이슈/PR로 자유롭게 제안해주세요.