Skip to content

Repository files navigation

VocaNote

VocaNote · 보카노트

논문·원서를 읽다 만난 영단어·약어를 0초 만에 찾아 단어장에 모으는 앱 맥에선 ⌥Space 스포트라이트, 웹·폰에선 브라우저 — 한 계정으로 자동 동기화.

macOS 14+ Universal SwiftUI Web Download

⬇︎ 맥 앱 다운로드 · 🌐 웹앱 열기 · 사용법 · 빌드


✨ VocaNote란?

전자·통신 전공(EE/comm) 대학원생이 영어 논문을 빠르게 읽기 위해 만든 도구예요.

  • 딜레이 0 검색ap만 쳐도 ap… 단어가 즉시. 번들된 빈도순 영단어(5만) 로컬 인덱스라 네트워크를 안 기다립니다.
  • 한글 뜻 바로 — 이어서 다음/네이버 사전의 한글 뜻이 붙어요. (resil → resile 원래 형태로 돌아가다 · resilient 회복력 있는 · resilience 탄성/복원력)
  • 전자·통신 약어 + ktword 용어집 — OFDM·MIMO·LDPC·5G NR … 한글뜻·도메인·원문 링크까지.
  • 내 단어장 — ↵ 한 번이면 저장. 플래시카드 복습도.
  • 문장 번역 — 논문 문단을 드래그하면 통째로 번역. DeepL·Papago·Claude·Codex 중 골라서.
  • 어디서나 동기화 — 맥에서 저장한 단어가 폰·웹 복습 큐에 그대로.

🖥️ 맥 앱

Alfred/Spotlight 스타일의 메뉴바 전용 검색 오버레이. 웹뷰 래퍼가 아니라 SwiftUI로 만든 네이티브 앱이라 가볍고(≈2MB) 빠릅니다.

🚀 설치

  1. Releases 에서 VocaNote-x.y.z.zip 다운로드 → 압축 해제
  2. VocaNote.app응용 프로그램 폴더로 이동(선택)
  3. 첫 실행 — 앱이 공증(notarize)되지 않아서 macOS가 막아요. 둘 중 하나:
    • VocaNote.app 우클릭 → 열기 → 열기 (한 번만 하면 이후엔 그냥 실행)
    • 또는 터미널에서 격리 속성 제거:
      xattr -dr com.apple.quarantine /Applications/VocaNote.app
  4. 실행하면 Dock이 아니라 메뉴바(오른쪽 위) 에 📖 아이콘이 떠요. ⌥Space 로 검색창 호출!

요구사항: macOS 14(Sonoma)+, Apple Silicon·Intel 모두 지원(유니버설).

⌨️ 사용법

단축키 동작
⌥ Space 어디서나 검색창 열기/닫기
타이핑 로컬 즉시 자동완성 + 다음/네이버 한글 뜻
↑ / ↓ 결과 하이라이트 이동
↵ Enter 선택 단어를 단어장에 저장
esc 닫기
⌃⌥ Space 다른 앱(PDF·브라우저)에서 드래그한 단어는 뜻, 문장은 번역
⌘L 내 단어장 (목록·삭제·플래시카드 복습)
⌘, 설정 (단축키·번역 엔진·로그인·자동실행)
  • 검색창 상단 아이콘으로 단어장/설정/사용법 바로 이동 · 📌 로 창 고정
  • 결과 행에서 🔊 발음 · 📄 복사 · ➕ 저장
  • 검색창을 열면 최근 번역이 보여요 — 누르면 그때 결과가 다시 뜹니다(재번역 없음)
  • 번역 카드 아래 용어 칩을 누르면 그 문단의 전문용어를 단어장에 바로 담을 수 있어요
  • 첫 실행 시 사용법 튜토리얼 (설정 → "사용법 다시 보기"로 재실행)

🌐 웹앱

브라우저·모바일에선 voca.ljw.app — 설치 없이 바로. 기본은 브라우저 로컬(IndexedDB) 저장, 로그인하면 동기화.

접속이 안 되면(학교·회사망): 일부 기관 방화벽이 신규 도메인을 차단하는 경우 백업 주소 voca-note-sigma.vercel.app 을 쓰세요 — 같은 앱, 같은 배포입니다. 브라우저 로컬 데이터는 주소별로 분리되니, 같은 이메일로 로그인하면 단어장이 그대로 동기화됩니다.


🌏 문장 번역 (맥, v1.2.0+)

단어를 넘어 문장·문단을 드래그하면 자동 번역돼요. 엔진은 설정(⌘,)에서 고르고, 실패하면 등록된 다른 엔진으로 자동 폴백합니다.

엔진 API 키 속도 특징
DeepL (권장) 필요 (무료 플랜 有) 빠름 논문·기술 문장 번역 품질이 가장 좋음 · 남은 사용량 표시
Papago 필요 (무료 한도 有) 가장 빠름 일상 문장에 무난
Claude 필요 (종량제) 보통 품질 최상 + 어려운 용어 한 줄 해설
Codex 불필요 5~25초 이미 쓰는 ChatGPT 구독(Plus 이상) 으로 번역 · Codex CLI 설치·로그인 필요
  • 설정 화면의 ‘설정 방법’ 을 펼치면 준비물부터 키 발급까지 순서대로 따라 할 수 있어요.
  • 키는 이 맥의 키체인에만 저장되고 어디로도 전송되지 않아요.
  • Codex는 앱이 설치·로그인 상태를 자동으로 확인하고, 계정이 실제 쓸 수 있는 모델만 골라 보여줘요.
  • 번역 기록은 이 맥에만 저장되고 동기화하지 않아요(논문 원문이 담기므로). 설정에서 끌 수 있어요.
  • 번역한 문단에서 찾은 전문용어를 눌러 단어장에 담을 수 있어요 — 읽다가 만난 용어를 바로 수집.

🔄 동기화 (맥 ↔ 웹 ↔ 폰)

같은 이메일로 로그인하면 단어장이 자동으로 한 곳에 모여요.

  1. 맥: 설정(⌘,) → 동기화 · 웹: Settings → Sync
  2. 이메일 입력 → 코드 받기 → 메일로 온 8자리 코드 입력 → 확인
  3. 이후 저장/삭제 시 자동 업로드, 열 때/포커스 시 자동 다운로드

이메일 OTP(비밀번호 없음) 기반. 토큰은 맥에선 키체인, 웹에선 세션 저장소에 보관돼요. 데이터는 Supabase RLS로 사용자별 격리됩니다.


🔧 빌드 (개발자)

npm install
npm run dev       # 개발 서버
npm run test      # 테스트(71 케이스)
npm run build     # 프로덕션 빌드

맥 앱 (Xcode 불필요 — CLT + swiftc)

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 를 참고했어요.
  • 개인 학습용 프로젝트입니다.

About

영단어·약어 즉시 검색 + 단어장 · macOS 메뉴바 앱(⌥Space) & 웹 · 기기간 자동 동기화

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages