웹 폼 입력값을 저장하고 재방문 시 자동 완성해주는 Chrome 확장 프로그램입니다.
- 저장할 입력 필드를 직접 클릭하여 선택
- 선택한 필드의 값을 별칭과 함께 저장
- CSR(Client-Side Rendering) 앱에서도 정상 동작
- 같은 URL 재방문 시 저장된 데이터 목록 표시
- 원하는 데이터 세트를 선택하여 자동 입력
- 정확한 매칭으로 안전한 자동 입력
- URL별 여러 데이터 세트 저장 가능 (SET 1, SET 2, ...)
- Options 페이지에서 저장된 데이터 조회/수정/삭제
- 모든 데이터는 로컬에만 저장 (서버 전송 없음)
- Frontend: React 19 + TypeScript
- Build: Vite + @crxjs/vite-plugin
- Extension: Chrome Manifest V3
- Storage: chrome.storage.local
# 1. 저장소 클론
git clone <repository>
cd Form-ation
# 2. 의존성 설치
pnpm install
# 3. 빌드
pnpm build
# 4. Chrome에 로드
# chrome://extensions → 개발자 모드 ON → 압축해제된 확장 프로그램 로드 → dist 폴더 선택pnpm dev- 저장하고 싶은 폼이 있는 페이지에서 Form-ation 아이콘 클릭
- 새로 저장 버튼 클릭하여 셀렉터 모드 활성화
- 저장할 입력 필드들을 클릭하여 선택 (선택된 필드는 초록색 테두리)
- 저장 버튼 클릭 후 별칭 입력
- 저장된 데이터가 있는 페이지 재방문
- Form-ation 아이콘 클릭
- 원하는 데이터 세트의 입력 버튼 클릭
- Form-ation 아이콘 우클릭 → 옵션
- 저장된 모든 데이터 조회
- 별칭 수정 또는 삭제
src/
├── types/index.ts # 도메인 모델 정의
├── storage/
│ └── FieldMemoryRepository.ts # 데이터 CRUD
├── core/
│ ├── FieldExtractor.ts # 필드 정보 추출
│ ├── FieldMatcher.ts # 필드 매칭
│ ├── AutoFiller.ts # 자동 입력 실행
│ └── index.ts
├── ui/
│ ├── Toast.ts # 토스트 알림
│ ├── Overlay.ts # 오버레이
│ ├── AliasModal.ts # 별칭 입력 모달
│ └── index.ts
├── content/
│ ├── index.ts # Content Script 진입점
│ ├── SelectorMode.ts # 필드 선택 UI
│ └── FieldObserver.ts # 동적 DOM 감지
├── background/index.ts # Service Worker
├── popup/ # 팝업 UI (React)
├── options/ # 옵션 페이지 (React)
└── manifest.ts # 확장 프로그램 설정
Popup ←→ Background (Service Worker) ←→ Content Script
↓
Chrome Storage
| 원칙 | 적용 |
|---|---|
| 단일 책임 | 각 모듈이 하나의 역할만 담당 |
| 정확 매칭 | 셀렉터 + 타입 완전 일치 시에만 자동 입력 |
| URL 정규화 | pathname만 비교 (쿼리/해시 무시) |
| 안정성 표시 | 불안정한 셀렉터 선택 시 경고 |
name속성 (가장 안정적)data-testid,data-test-id,data-cyid속성- 클래스 + 타입 조합
- 위치 기반 (
:nth-of-type)
- password 타입 필드 자동 제외
- 모든 데이터 로컬 저장 (chrome.storage.local)
- 서버 전송 없음
MIT