generated from coulomb/repo-seed
Implements all requirements from ProductRequirementsDocument.md: - PDF detection via Chrome Downloads API - Secure credential storage with AES-GCM encryption - Binect API integration for PDF uploads - Popup UI with Binect branding - Local transfer tracking (500 entry cap) - Help page with tracking view and CSV export - 60-day credential retention with auto-expiry - Accessibility compliance (WCAG 2.1 AA) Technical implementation: - Chrome Extension Manifest V3 - TypeScript with strict mode - Webpack build system - Jest test suite (22/22 passing) - ESLint configured (0 errors) Build output: 13 KB total (production minified) Test coverage: crypto, pdf-detector, tracker, binect-api Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
3.1 KiB
3.1 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Project Overview
BinectChrome is a Chrome extension (Manifest V3) that enables users to send PDF documents from arbitrary cloud applications directly to Binect for physical printing and postal delivery, eliminating the manual download-upload workflow.
Core Architecture Principles
Browser Extension Structure (Manifest V3)
- Service worker-based background script (no persistent background pages)
- Popup UI for user interaction
- Chrome Downloads API for PDF detection
- Chrome Storage API for encrypted credential storage
Privacy-First Design
- Zero PDF storage: PDFs are never stored by the extension
- Explicit user intent: No automatic sending; all transfers require user click
- Metadata minimization: No content inspection or filename persistence
- Local-only tracking: All tracking data stored locally in browser, never transmitted except in support requests
Authentication & Security
- Credential storage: Username/password encrypted at rest in extension storage
- 60-day retention: Credentials auto-expire after 60 days of inactivity
- No backend relay: Extension communicates directly with Binect API
- Minimal permissions: Only
downloads,storage,activeTab, and Binect API host permission
Key Functional Components
1. PDF Detection System
- Primary: Detect completed PDF downloads via Chrome Downloads API
- Identify by
.pdfextension orContent-Type: application/pdfheaders
- Identify by
- Secondary: Detect in-browser PDF navigation via
Content-Type: application/pdf - Limitation: blob URLs and complex JS viewers may not be detectable
2. PDF Acquisition & Transfer
- Re-fetch PDF from original URL using user session (preferred)
- Upload to Binect via official API
- Show progress states: Uploading → Success/Failure
3. Credential Management
- Encrypt at rest, decrypt only in memory during use
- "Use" = successful authentication or successful send
- Auto-delete after 60 days inactivity
- Manual wipe option always available
4. Local Tracking ("Score")
Track locally only:
- Timestamp
- Source domain/URL
- Destination URL
- PDF filesize
- Result (success/failure + error class)
Cap at ~500 entries to prevent unbounded growth.
5. User Interface
- Popup: Shows last detected PDF (filename, size, timestamp, source domain) + "Send PDF to Binect" button
- Info/Help ("?"): Access tracking view with summary counts and chronological transfer list
- Feedback link: Opens email to bernd.worsch@binect.de with tracking data as CSV (embedded in body and/or clipboard)
Technical Constraints
- Chrome Extension Manifest V3 required
- No external backend services
- No cross-browser support in v1 (Chrome only)
- Service worker lifecycle limitations (no persistent background)
Distribution
- Automated publication via Chrome Web Store
- Must pass Chrome Web Store security review (minimal permissions critical)
Contact & Support
Feature requests and bug reports: bernd.worsch@binect.de