폐의약품 수거지도
는 공공데이터를 기반으로 스마트 서울맵의 폐의약품 수거함 위치 지도와 유사하게 전국의 폐의약품 수거함 위치와 폐기법을 안내하는 지도입니다. 향후 개발을 통해 다양한 부가 기능을 함께 제공하여 보다 손쉽게 폐의약품을 배출하고 안전하게 폐기할 수 있도록 지원합니다.
지원 예정 지역의 데이터는 2023.04. 기준으로 데이터 존재 여부를 확인한 것으로, 현재 지원되는 지역 혹은 향후 실제 지원되는 지역과 차이가 있을 수 있습니다.
- 경기도 고양시우선 지원 예정
- 경기도 구리시우선 지원 예정
- 경상북도 19개 시/군
- 광주광역시 전역
- 인천광역시 전역
- 대전광역시 3개 자치구
- 대구광역시 5개 자치구
- 세종특별자치시 전역
- 전라남도 전역
프로젝트의 팀원이 되어 적극적으로 참여하실 수 있으며, 일반적인 형태의 기여, 문의 또한 가능합니다.
본 프로젝트는 다음 환경에서 배포할 것을 가정하고 제작되었습니다.
- CloudFlare Pages
Supabase
패키지 매니저 및 주요 프레임워크, 언어는 다음과 같습니다.
- Next.js (
Create-Next-App
을 활용한 템플릿 사용) - Yarn 3.6.1 (
PnP
기능 미사용) - TypeScript
- Node.js 20
따라서, git clone
하신 후에는 개발 서버 실행 전 yarn install
명령어를 실행해주세요. 만약 yarn
을 찾을 수 없다고 나온다면, node.js
가 설치되어 있는지 혹은 corepack
이 설치되어 있는지 확인해주세요.
개발 서버는 yarn dev
로 실행하시면 작동합니다. 기본 개발 서버 주소는 localhost:3000
입니다.
CloudFlare Pages 환경에서는 PnP
기능을 현재 지원하지 않으므로, 임의로 PnP
기능을 활성화하는 커밋을 작성하지 말아주세요. 테스트 시 CloudFlare Pages 환경을 이용하실 때에는, Workers 및 Pages - 개요 - (테스트 중인 프로젝트 선택) - 함수 - 호환성 플래그
란에서 nodejs_compat
을 활성화하세요. 그렇지 않으면 오류가 발생하여 정상적으로 실행할 수 없습니다.
.env
파일 혹은 .env.local
파일로 특정한 키를 설정해야만 온전히 테스트가 가능합니다.
NEXT_PUBLIC_KAKAO_MAP_KEY
: 카카오맵 SDK에서 지도를 불러오기 위한 키입니다. 내 애플리케이션의 JavaScript 키를 사용하시면 됩니다.KAKAO_REST_KEY
: 카카오 지도/로컬 API에서 현재 주소를 불러와, 현 위치 주변의 폐의약품 보관함을 불러오는 목적으로 사용합니다.DATA_GO_KR_REST_KEY
: 공공데이터 포털에서 제공받은 데이터를 불러올 때 사용하는 API 키입니다. 인코딩된 값으로 저장해야 정상 작동합니다.
API 주소 명명 규칙
API 주소 이름은 명사로 표현하며, 다음과 같은 하위 분류가 있습니다.
하위 URL | 설명 |
---|---|
geo | 위치 변환 및 주소 변환 API |
service | 이 서비스에서 제공 혹은 사용하는 데이터 |
user | 사용자가 저장, 이용하는 데이터 |
Note
현재 다음과 같은 API를 사용할 수 있습니다.
하위 URL | 설명 |
---|---|
geo/region | lat , lng 값이 주어지면 행정구역을 반환합니다. |
service/region | 서비스 중인 지역 목록을 반환합니다. |
함수명 및 변수명 명명 규칙
- CSS 및 DOM에서 사용하는 클래스와 이름에는 camelCase를 사용합니다.
- CSS에서 사용하는 변수는 kebab-case를 사용합니다.
- TypeScript에서 사용하는 타입은 PascalCase를 사용합니다.
- Next.js에서 사용하는 컴포넌트명은 PascalCase를 사용합니다.
- 그 외 변수 및 함수에는 기본적으로 camelCase를 사용합니다.
커밋 메시지는 (종류)작업한 내용
형태를 갖춰야 합니다. 종류는 다음과 같습니다.
종류 | 설명 |
---|---|
init |
프로젝트를 초기화할 때, 환경 변수를 설정할 때, 라이브러리를 신규 추가할 때 사용해요 |
fix |
버그를 수정하였을 때 사용해요. 이때 작업한 내용에는 무엇을 고쳤다, 가 아닌 무엇이 문제다를 써주세요. |
feat |
새로운 기능을 추가하였을 때 사용해요. |
cont |
공공데이터, 프로젝트 내부 문서 등 데이터나 문서를 추가하였을 때 사용해요. |
test |
로컬에서 해결하기 어려운 문제에 대해 테스트할 때 사용해요. |
Note
기존 구조를 변경하는 커밋은 feat
를 사용하여 표현해주세요. (예시: JSON 파일을 직접 들여오는 방식에서 API 사용으로 변경)
브랜치는 다음과 같이 나눠집니다.
종류 | 설명 |
---|---|
main |
현재 서비스에 적용되는 소스에요. |
dev |
현재 개발 중인 내용에 적용되는 소스에요. |
커밋종류/간단 설명 |
init 을 제외하고 특정한 기능을 테스트할 목적으로 사용하는 브랜치에요. 일반적인 경우 개발은 dev 에서 이뤄지고, 적용되지 않을 가능성이 높거나 버그 가능성으로 연구가 필요한 경우 사용해요. |
PR을 작성하실 때는 되도록
커밋종류/간단 설명
형태의 브랜치를 생성하여 작업해주시면 감사하겠습니다.
여러 건의 PR이 열려있을 경우에는, 다음과 같은 우선순위로 처리됩니다.
- 오류 수정을 목적으로 하는 PR
- 기능 추가를 목적으로 하는 PR
- 문서화를 목적으로 하는 PR
사용 중인 라이브러리의 버전이나 종류가 변경되는 경우, PR에 명시해주시면 감사하겠습니다. 명시하지 않으셔도 반영에는 문제가 없지만, 버전 및 종류 변경에 따른 패키지 재설치 등의 작업이 필요할 수 있기 때문입니다.
다음과 같은 PR은 반영되지 않을 수 있습니다.
- 기반 프레임워크를 변경하는 PR (예시: React에서 Svelte로 변경)
- 이슈 트래커 혹은 설문지를 이용해 사전에 논의하지 않고 프로젝트의 상징을 변경하는 PR (아이콘, 글꼴 등)
- 아직 개발을 시작하지 않은 기능에 대한 개발 문서 작성
.env
파일을 임의로 포함하여 제출- 최종적으로 반영 혹은 도입하지 않기로 결정한 기능에 대한 PR
- 단, 도입을 보류한 경우에는 차후 논의할 수 있으며, 도입하지 않기로 결정하였더라도 이슈 트래커 등을 사용하여 사전에 충분히 논의하여 현재는 도입이 가능하다고 결론지어진 경우 반영 가능합니다.
기본 형태는 major.minor.patch
입니다. major
, minor
, patch
의 정의는 다음과 같습니다.
major
: 사용자 시점에서 신규 기능 추가(예시: 폐의약품 수거 예약, 통계 등) 혹은 UI 대규모 개편(기반 UI 라이브러리 변경, 화면 배치 3곳 이상 변경, 다크모드 지원 등)minor
: 기존 기능의 사용성 향상(예시: 검색 결과에 정렬 추가, 아이콘 추가하여 사용성 개선 등)patch
: 버그 수정, 보안 업데이트, 패키지 업데이트, 오타 수정 등의 자잘한 문제를 해결하는 버전입니다.
단, patch
뒤에 tag
가 붙을 수 있습니다. 현재 정식 버전이 아닌 경우에만 사용합니다.
feat:기능명
: 특정 기능의 적용 여부를 테스트하기 위한 목적의 특수 목적 태그입니다.beta숫자
: 일반적인 테스트 버전입니다. 이때 숫자의 규격은 1, 2, 3...과 같은 형태로 사용합니다.
개발 지식이 없더라도 누락된 혹은 잘못 포함된 데이터, 사용 중 발생한 오류를 제보해주시는 것만으로 큰 도움이 됩니다.
공공 데이터의 갱신 주기 차이 및 다양한 원인으로 인해 데이터와 실제가 불일치할 수 있습니다. 이와 관련하여 아래 양식으로 제보해주시면 확인하여 기존 데이터에서 제외하거나 추가할 수 있도록 하겠습니다.
데이터 제보 전, 반드시 다음 사항을 확인해주세요.
- 폐의약품 수거함이 포화 상태여서 수거가 불가한 경우: 폐의약품을 받지 않는 경우는 아니므로 신규 폐의약품 수거함 제보에만 가능해요
- 폐의약품 수거함 비치 예정인 경우: 아직 비치되지 않아 사용자의 혼란을 유발할 수 있고, 개발자가 수작업으로 확인하기 어려워 제보가 불가해요
- 폐의약품 수거함을 더는 비치하지 않는 경우: 폐의약품을 앞으로도 받지 않으므로 제보가 가능해요
문의하기 |
---|
사용 중 기능이 작동하지 않거나, 잘못된 작동을 하는 경우 개발자에게 수정을 요구할 수 있습니다. 한국어와 영어 모두 사용 가능합니다.
폐의약품 수거지도에 추가되는 각 지역의 수거함 현황 관련 파일 데이터는 경도와 위도를 추가하여 JSON 형태로 가공한 뒤 저장소에 탑재됩니다.
Note
공공 데이터
- 경기도 고양시 폐의약품 수거함 현황 : 이용허락범위 제한 없음 / 마지막 갱신 2023.01.05.
Note
공공 데이터
- 경기도 구리시 폐의약품 수거함 위치: 이용허락범위 제한 없음 / 기준일 2023.03.29.
- 경기도 구리시 폐의약품 수집 참여 약국 현황: 이용허락범위 제한 없음 / 기준일 2023.06.15.
- 국립중앙의료원 전국 약국 정보 조회 서비스: 이용허락범위 제한 없음
Note
사기업 공개 API
Note
현재 사용 중인 오픈소스 프로젝트 목록입니다.
- Next.js: MIT License
- TailwindCSS: MIT License
- FontAwesome v6 for React
- Icons: CC-BY 4.0 License
- Fonts: SIL OFL 1.1 License
- Code: MIT License
- FontAwesome Free License Notice
- Yarn: BSD-2-Clause License
- Kakao Maps SDK for Kakao Open Platform Service : Apache License
- React.js: MIT License
- SUITE Variable: SIL Open Font License
Note
과거 사용하였던 오픈소스 프로젝트 목록입니다.
- @material/web v1.0.0-pre16 : Apache 2.0 License