인도네시아어-한국어 사전 (React + Vite + IndexedDB)
Electron 의존성을 제거하고 정적 호스팅에 맞게 리빌드한 프로젝트입니다.
브라우저 환경에서 빠른 검색과 재방문 로딩 최적화에 초점을 맞췄습니다.
- 검색 타입: 인니어(
in) / 한국어(kr) / 영어(en) / 어근(rt) - 로마자 변환 토글
- 다국어 UI (한국어/영어/인도네시아어)
- 모바일 반응형 (리스트 화면 / 상세 화면 분리)
- 좌측 단어 리스트 가상 스크롤
- 검색 디바운스 + 결과 캐시
- 서비스워커 기반 오프라인 캐시
- 원본 DB:
db/kamus.sqlite - 배포 데이터:
public/data/dictionary.json - 압축 데이터:
public/data/dictionary.json.gz,public/data/dictionary.json.br - 버전 매니페스트:
public/data/manifest.json
로딩 전략:
- 첫 화면은 로컬 IndexedDB 데이터로 즉시 부팅
- 백그라운드에서
manifest.json버전 확인 - 버전이 바뀐 경우에만 전체 JSON 갱신 + 인덱싱 수행
pnpm install
pnpm devpnpm build빌드 결과물은 dist/ 디렉토리에 생성됩니다.
SQLite -> JSON 추출:
pnpm data:exportJSON + 압축본까지 생성:
pnpm data:preparesrc/: 애플리케이션 코드src/components/: UI 컴포넌트src/lib/: 검색/DB 로직src/workers/: IndexedDB 인덱싱 워커public/: 정적 에셋/사전 데이터db/: 원본 SQLitetools/: 데이터 추출/압축 스크립트
dist/ 정적 파일 배포만으로 동작합니다.
- Netlify
- Vercel
- GitHub Pages
- Nginx / Apache