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를 사용하여 서버 리소스에 접근할 수 있습니다.

Create new API credentials

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..."
                         
                    

API Doc

아래는 JSON API 문서 링크입니다.

API Document

데이터 기여 방식 (가이드라인)

  • 등록 정보는 최대한 정확한 주소 기준으로 작성해주세요.
  • 상세 설명(흡연부스/흡연구역 유형, 주변 랜드마크 등)을 남기면 정확도가 올라갑니다.
  • 중복 데이터가 있을 수 있으니, 가능하면 기존 데이터 확인 후 추가해주세요.

로드맵

  • [ ] 흡연구역 검색/필터 (구/동/키워드)
  • [ ] 중복 등록 방지/병합
  • [ ] 관리자 검수/신뢰도 시스템

라이선스

  • MIT

문의 / 제안

  • 이슈/PR로 자유롭게 제안해주세요.