논문·원서를 읽다 만난 영단어·약어를 0초 만에 찾아 단어장에 모으는 앱 맥에선 ⌥Space 스포트라이트, 웹·폰에선 브라우저 — 한 계정으로 자동 동기화.
⬇︎ 맥 앱 다운로드 · 🌐 웹앱 열기 · 사용법 · 빌드
전자·통신 전공(EE/comm) 대학원생이 영어 논문을 빠르게 읽기 위해 만든 도구예요.
- 딜레이 0 검색 —
ap만 쳐도ap…단어가 즉시. 번들된 빈도순 영단어(5만) 로컬 인덱스라 네트워크를 안 기다립니다. - 한글 뜻 바로 — 이어서 다음/네이버 사전의 한글 뜻이 붙어요. (
resil→ resile 원래 형태로 돌아가다 · resilient 회복력 있는 · resilience 탄성/복원력) - 전자·통신 약어 + ktword 용어집 — OFDM·MIMO·LDPC·5G NR … 한글뜻·도메인·원문 링크까지.
- 내 단어장 — ↵ 한 번이면 저장. 플래시카드 복습도.
- 문장 번역 — 논문 문단을 드래그하면 통째로 번역. DeepL·Papago·Claude·Codex 중 골라서.
- 어디서나 동기화 — 맥에서 저장한 단어가 폰·웹 복습 큐에 그대로.
Alfred/Spotlight 스타일의 메뉴바 전용 검색 오버레이. 웹뷰 래퍼가 아니라 SwiftUI로 만든 네이티브 앱이라 가볍고(≈2MB) 빠릅니다.
- Releases 에서
VocaNote-x.y.z.zip다운로드 → 압축 해제 VocaNote.app을 응용 프로그램 폴더로 이동(선택)- 첫 실행 — 앱이 공증(notarize)되지 않아서 macOS가 막아요. 둘 중 하나:
VocaNote.app우클릭 → 열기 → 열기 (한 번만 하면 이후엔 그냥 실행)- 또는 터미널에서 격리 속성 제거:
xattr -dr com.apple.quarantine /Applications/VocaNote.app
- 실행하면 Dock이 아니라 메뉴바(오른쪽 위) 에 📖 아이콘이 떠요. ⌥Space 로 검색창 호출!
요구사항: macOS 14(Sonoma)+, Apple Silicon·Intel 모두 지원(유니버설).
| 단축키 | 동작 |
|---|---|
| ⌥ Space | 어디서나 검색창 열기/닫기 |
| 타이핑 | 로컬 즉시 자동완성 + 다음/네이버 한글 뜻 |
| ↑ / ↓ | 결과 하이라이트 이동 |
| ↵ Enter | 선택 단어를 단어장에 저장 |
| esc | 닫기 |
| ⌃⌥ Space | 다른 앱(PDF·브라우저)에서 드래그한 단어는 뜻, 문장은 번역 |
| ⌘L | 내 단어장 (목록·삭제·플래시카드 복습) |
| ⌘, | 설정 (단축키·번역 엔진·로그인·자동실행) |
- 검색창 상단 아이콘으로 단어장/설정/사용법 바로 이동 · 📌 로 창 고정
- 결과 행에서 🔊 발음 · 📄 복사 · ➕ 저장
- 검색창을 열면 최근 번역이 보여요 — 누르면 그때 결과가 다시 뜹니다(재번역 없음)
- 번역 카드 아래 용어 칩을 누르면 그 문단의 전문용어를 단어장에 바로 담을 수 있어요
- 첫 실행 시 사용법 튜토리얼 (설정 → "사용법 다시 보기"로 재실행)
브라우저·모바일에선 voca.ljw.app — 설치 없이 바로. 기본은 브라우저 로컬(IndexedDB) 저장, 로그인하면 동기화.
접속이 안 되면(학교·회사망): 일부 기관 방화벽이 신규 도메인을 차단하는 경우 백업 주소 voca-note-sigma.vercel.app 을 쓰세요 — 같은 앱, 같은 배포입니다. 브라우저 로컬 데이터는 주소별로 분리되니, 같은 이메일로 로그인하면 단어장이 그대로 동기화됩니다.
단어를 넘어 문장·문단을 드래그하면 자동 번역돼요. 엔진은 설정(⌘,)에서 고르고, 실패하면 등록된 다른 엔진으로 자동 폴백합니다.
| 엔진 | API 키 | 속도 | 특징 |
|---|---|---|---|
| DeepL (권장) | 필요 (무료 플랜 有) | 빠름 | 논문·기술 문장 번역 품질이 가장 좋음 · 남은 사용량 표시 |
| Papago | 필요 (무료 한도 有) | 가장 빠름 | 일상 문장에 무난 |
| Claude | 필요 (종량제) | 보통 | 품질 최상 + 어려운 용어 한 줄 해설 |
| Codex | 불필요 | 5~25초 | 이미 쓰는 ChatGPT 구독(Plus 이상) 으로 번역 · Codex CLI 설치·로그인 필요 |
- 설정 화면의 ‘설정 방법’ 을 펼치면 준비물부터 키 발급까지 순서대로 따라 할 수 있어요.
- 키는 이 맥의 키체인에만 저장되고 어디로도 전송되지 않아요.
- Codex는 앱이 설치·로그인 상태를 자동으로 확인하고, 계정이 실제 쓸 수 있는 모델만 골라 보여줘요.
- 번역 기록은 이 맥에만 저장되고 동기화하지 않아요(논문 원문이 담기므로). 설정에서 끌 수 있어요.
- 번역한 문단에서 찾은 전문용어를 눌러 단어장에 담을 수 있어요 — 읽다가 만난 용어를 바로 수집.
같은 이메일로 로그인하면 단어장이 자동으로 한 곳에 모여요.
- 맥: 설정(⌘,) → 동기화 · 웹: Settings → Sync
- 이메일 입력 → 코드 받기 → 메일로 온 8자리 코드 입력 → 확인
- 이후 저장/삭제 시 자동 업로드, 열 때/포커스 시 자동 다운로드
이메일 OTP(비밀번호 없음) 기반. 토큰은 맥에선 키체인, 웹에선 세션 저장소에 보관돼요. 데이터는 Supabase RLS로 사용자별 격리됩니다.
npm install
npm run dev # 개발 서버
npm run test # 테스트(71 케이스)
npm run build # 프로덕션 빌드cd macos
./build.sh # VocaNote.app 빌드 후 실행 (개발용, arm64)
./release.sh # 유니버설(.app + .zip) 배포 빌드동기화를 쓰려면 리포 루트 .env.local 에 Supabase 값을 넣으면 빌드가 자동 주입합니다(커밋 안 됨):
VITE_SUPABASE_URL=https://<project>.supabase.co
VITE_SUPABASE_ANON_KEY=<anon-key>anon key는 클라이언트 노출용 공개 키로 바이너리 임베드는 안전합니다(데이터는 RLS 보호). service_role 키는 절대 넣지 마세요.
- 맥: Swift · SwiftUI + AppKit(NSPanel 오버레이) · Carbon 전역 단축키 · Keychain · URLSession ·
swiftc(Xcode 없이) - 웹: Vite + React + TypeScript · IndexedDB(
idb) · PapaParse · Vitest - 동기화/배포: Supabase(이메일 OTP·
sync_vaults·RLS) · Vercel
| 항목 | 내용 |
|---|---|
| 공증 | Developer ID 미공증 → 첫 실행 시 우클릭 열기(위 설치 3번) 필요 |
| 라이브 뜻 | 입력한 단어가 다음/네이버로 전송됨(로컬 결과는 오프라인) |
| 공용 백엔드 | 동기화는 소유자의 Supabase 프로젝트를 공유(사용자별 RLS 격리) |
| 번역 엔진 | 각자 API 키 등록 필요(BYOK) · Codex는 ChatGPT 유료 플랜과 CLI 설치가 필요하고 사용량을 공유 |
| v1.3.0 업그레이드 | 번들 ID가 바뀌어 손쉬운 사용·알림 권한을 다시 허용해야 해요(단어장·API 키는 그대로) |
- 만든이 Jaewoo Lee · 사전 뜻 출처 다음/네이버 · 용어집 ktword 6,200여 항목(원출처 표기 조건 자유 이용)
- README 구성은 ClaudeUsage 를 참고했어요.
- 개인 학습용 프로젝트입니다.