
🎯 나의 첫 오픈소스 프로젝트: geo-select 제작기
드디어 내 첫 오픈소스 프로젝트를 만들었다. 이름은 geo-select.
전 세계 국가나 지역을 선택할 때, 단순한 셀렉트 박스 대신 직관적인 지도 선택 UI를 제공하는 라이브러리다.
💡 아이디어의 시작
사이트를 만들다 보면 ‘국가 선택’이나 ‘지역 선택’이 필요한 순간이 자주 있다. 하지만 대부분은 셀렉트 박스로 수십 개의 국가를 스크롤해야 한다. “그냥 지도를 클릭해서 고를 수 있으면 얼마나 편할까?” 이 단순한 생각이 geo-select의 시작이었다.
셀렉트를 누르면 세계 지도가 나오고,
사용자가 클릭한 지역의 코드와 정보를 자동으로 입력해주는 라이브러리.
🧱 구조 설계
처음엔 React나 Vue로 만들까 고민했지만, 기본적인 core 기능은 프레임워크에 의존하지 않아야 한다는 판단으로 Vanilla JS + TypeScript로 핵심 로직을 작성했다.
geo-select/
└─ packages/
└─ core/
├─ src/
│ ├─ index.ts
│ └─ data/world.geo.json
├─ dist/
├─ rollup.config.js
├─ tsconfig.json
└─ package.json
빌드는 Rollup으로 설정했고, 결과물은 dist/geo-select-core.umd.js 와 geo-select-core.esm.js 두 가지 포맷으로 만들어졌다.
🗺️ 데모 제작
처음엔 콘솔에서만 확인했지만, 실제 클릭으로 선택하는 인터랙션을 보고 싶었다. 그래서 demo.html을 만들어 바로 테스트 가능한 형태로 구성했다.
데모 페이지는 GitHub Pages로 배포해서 누구나 직접 실행해볼 수 있다.
⚙️ GitHub & npm 배포
1. GitHub에 새 레포지토리 생성 2. npm init -y 3. npm login 4. npm publish --access public
현재는 0.1.0 버전으로 기본 구조만 공개했지만, 추후에는 React, Vue, Svelte 전용 래퍼도 추가할 계획이다.
📦 앞으로의 계획
- 국가별 GeoJSON 확대 (현재는 샘플 4개국)
- 선택 시 자동 줌인, 하이라이트 효과 추가
- React / Vue 호환 버전 패키지로 분리
- npm 정식 배포 후 문서 사이트 제작
🌍 오픈소스의 첫걸음
지금까지는 다른 사람의 오픈소스를 사용하기만 했지만, 이번엔 내가 만든 코드가 세상에 공개되었다는 점이 정말 짜릿했다. 누군가 이 라이브러리를 발견하고 “이거 유용하다”라고 말해준다면, 그게 바로 내가 개발을 계속하는 이유가 될 것 같다.
👋 geo-select GitHub: https://github.com/muganghskim/geo-select
📦 npm (예정): npm install geo-select
'개발 · IT > 프론트엔드' 카테고리의 다른 글
| CSS Grid vs Flexbox — 차이와 언제 무엇을 쓸까 (0) | 2025.12.01 |
|---|---|
| Node.js 비동기 흐름 쉽게 이해하기 (0) | 2025.11.21 |
| 폴더 구조 확인하는 방법 - 초보자를 위한 쉽고 간단한 가이드 (2) | 2024.11.26 |
| tailwind css에 대해 알아보자 (0) | 2024.02.10 |
| 자바스크립트: 웹 페이지 개발을 위한 DOM 조작 (0) | 2023.09.13 |
댓글