generated from coulomb/repo-seed
Release 0.1: Complete BinectChrome implementation
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>
This commit is contained in:
144
README.md
144
README.md
@@ -1,3 +1,143 @@
|
||||
# repo-seed
|
||||
# BinectChrome
|
||||
|
||||
A git repository template to bootstrap coulomb projects from.
|
||||
A Chrome extension that enables users to send PDF documents from cloud applications directly to Binect for physical printing and postal delivery.
|
||||
|
||||
## Overview
|
||||
|
||||
BinectChrome detects PDF downloads in your browser and allows you to send them directly to Binect for physical mail delivery, eliminating the manual download-upload workflow.
|
||||
|
||||
## Features
|
||||
|
||||
- **PDF Detection**: Automatically detects PDF downloads using Chrome Downloads API
|
||||
- **Secure Transfer**: Sends PDFs directly to Binect via encrypted connection
|
||||
- **Credential Encryption**: User credentials stored encrypted with automatic 60-day expiry
|
||||
- **Local Tracking**: Transfer history stored locally for transparency
|
||||
- **Privacy-First**: No PDF storage, explicit user consent required
|
||||
- **Accessible Design**: Follows WCAG 2.1 AA standards with Binect branding
|
||||
|
||||
## Development
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- Node.js 18+ and npm
|
||||
- Chrome browser for testing
|
||||
|
||||
### Setup
|
||||
|
||||
```bash
|
||||
# Install dependencies
|
||||
npm install
|
||||
|
||||
# Run development build with watch mode
|
||||
npm run dev
|
||||
|
||||
# Build for production
|
||||
npm run build
|
||||
|
||||
# Run tests
|
||||
npm test
|
||||
|
||||
# Run linter
|
||||
npm run lint
|
||||
|
||||
# Fix linting issues
|
||||
npm run lint:fix
|
||||
|
||||
# Type checking
|
||||
npm run type-check
|
||||
```
|
||||
|
||||
### Project Structure
|
||||
|
||||
```
|
||||
binect-chrome/
|
||||
├── src/
|
||||
│ ├── background/ # Service worker (background script)
|
||||
│ ├── popup/ # Extension popup UI
|
||||
│ ├── tracking/ # Tracking/help page
|
||||
│ └── utils/ # Shared utilities
|
||||
│ ├── crypto.ts # Encryption utilities
|
||||
│ ├── storage.ts # Storage management
|
||||
│ ├── pdf-detector.ts # PDF detection
|
||||
│ └── binect-api.ts # Binect API client
|
||||
├── public/
|
||||
│ ├── manifest.json # Extension manifest
|
||||
│ ├── icons/ # Extension icons
|
||||
│ └── _locales/ # Localization
|
||||
├── tests/ # Jest tests
|
||||
├── architecture/ # ADRs (Architecture Decision Records)
|
||||
├── research/ # Research documentation
|
||||
└── specs/ # API specifications
|
||||
```
|
||||
|
||||
### Loading Extension in Chrome
|
||||
|
||||
1. Build the extension: `npm run build`
|
||||
2. Open Chrome and navigate to `chrome://extensions/`
|
||||
3. Enable "Developer mode" (toggle in top right)
|
||||
4. Click "Load unpacked"
|
||||
5. Select the `dist` directory
|
||||
|
||||
### Architecture
|
||||
|
||||
See [CLAUDE.md](./CLAUDE.md) for detailed architecture documentation.
|
||||
|
||||
Key architectural decisions are documented as ADRs in the [architecture/](./architecture/) directory.
|
||||
|
||||
## Testing
|
||||
|
||||
```bash
|
||||
# Run all tests
|
||||
npm test
|
||||
|
||||
# Run tests in watch mode
|
||||
npm run test:watch
|
||||
```
|
||||
|
||||
Tests cover:
|
||||
- Credential encryption/decryption
|
||||
- PDF detection
|
||||
- Binect API integration
|
||||
- Tracking system
|
||||
|
||||
## Privacy & Security
|
||||
|
||||
- **No PDF Storage**: PDFs are never stored by the extension
|
||||
- **Encrypted Credentials**: User credentials encrypted at rest using AES-GCM
|
||||
- **60-Day Expiry**: Credentials automatically expire after 60 days of inactivity
|
||||
- **Local-Only Tracking**: All tracking data stored locally, never transmitted
|
||||
- **Explicit Consent**: All transfers require user click
|
||||
|
||||
## Requirements
|
||||
|
||||
Implements all requirements from [ProductRequirementsDocument.md](./specs/ProductRequirementsDocument.md):
|
||||
|
||||
- ✅ PDF detection via Chrome Downloads API
|
||||
- ✅ Secure credential storage with encryption
|
||||
- ✅ Binect API integration for PDF upload
|
||||
- ✅ Popup UI with Binect branding
|
||||
- ✅ Local transfer tracking (capped at 500 entries)
|
||||
- ✅ Help page with tracking view
|
||||
- ✅ CSV export and email feedback mechanism
|
||||
- ✅ 60-day credential retention policy
|
||||
- ✅ Manual credential wipe option
|
||||
- ✅ Accessibility compliance (WCAG 2.1 AA)
|
||||
|
||||
## Browser Compatibility
|
||||
|
||||
- Chrome 88+ (Manifest V3 support)
|
||||
- Chromium-based browsers may work but are not officially supported in v1
|
||||
|
||||
## Support
|
||||
|
||||
For issues, feature requests, or questions:
|
||||
|
||||
Email: [bernd.worsch@binect.de](mailto:bernd.worsch@binect.de)
|
||||
|
||||
## License
|
||||
|
||||
MIT License - see [LICENSE](./LICENSE) file for details
|
||||
|
||||
## Version
|
||||
|
||||
Current version: 1.0.0
|
||||
|
||||
Reference in New Issue
Block a user