- Visual Indicators: Green checkmarks on completed episodes
- One-Click Toggle: Mark episodes as Read/Unread instantly
- Smart Detection: Automatic episode identification on all pages
- Persistent Storage: Data survives browser restarts and extension updates
- Dark Theme: Space grey gradients with modern aesthetics
- Pill Button: Sleek "Tracker" button with context-aware styling
- Icon-Rich Menus: Two-column layout with intuitive icons
- Smooth Animations: Hover effects and transitions
- Dual Storage: IndexedDB primary + Chrome Storage backup
- Auto-Migration: Seamless data format upgrades
- Import/Export: JSON-based backup and restore
- Auto-Backup: Every 30 seconds for data safety
- Authentication Detection: Shows different UI based on login status
- Episode Carousel: Browse all read episodes in dropdown
- Feature Gates: Configurable functionality switches
- Smart Logging: Configurable log levels for debugging
-
Clone the repository
git clone <repository-url> cd journalclub-chrome-extension
-
Load in Chrome
- Open
chrome://extensions/ - Enable "Developer mode"
- Click "Load unpacked"
- Select the project directory
- Open
-
Build Extension Package (Optional)
./pack.sh
Creates timestamped ZIP in
bin/directory
Coming soon - pending store submission
- Navigate to journalclub.io and log in
- Look for "Tracker" button in top-right corner
- Click button to open context menu
- Mark episodes as Read/Unread as needed
- Toggle Status: Mark as Read/Unread
- View All Read: Browse completed episodes
- Export Data: Download backup JSON
- Import Data: Restore from backup
- Visual Indicators: Green checkmarks on completed episodes
- Bulk Operations: Clear all data, export/import
- Episode Count: See total read episodes
JCTracker: Main extension controllerStorageManager: Dual storage system managementIndexedDBManager: IndexedDB operationsLogger: Configurable logging system
βββ manifest.json # Chrome extension configuration
βββ config.js # Centralized configuration + Logger
βββ content.js # Main extension logic
βββ storage.js # Storage management
βββ indexeddb.js # IndexedDB operations
βββ styles.css # Dark theme styling
βββ pack.sh # Build script
βββ journalclub-chrome-extension.png # Extension logo
features: {
FEATURE_GATE_INDICATORS_ENABLED: true, // Episode indicators
DEBUG_ENABLED: true, // Logging system
episodeIndicators: true, // Green checkmarks
carousel: true // Read episodes list
}debug: Verbose development logginginfo: General informationwarning: Warnings only (default)error: Errors only
ui: {
colors: {
loggedIn: "#10b981", // Green border when logged in
loggedOut: "#ef4444", // Red border when logged out
checkmark: "#10b981" // Episode completion indicator
}
}- Local Storage Only: No data sent to external servers
- Domain Restricted: Only active on journalclub.io
- Minimal Permissions: Only
storageandactiveTab - No Tracking: No analytics or user behavior tracking
- Chrome/Chromium browser
- Basic knowledge of Chrome Extensions
- JavaScript ES6+ familiarity
- Enable Developer Mode in Chrome extensions
- Load unpacked extension from project directory
- Make changes to source files
- Reload extension in Chrome to test changes
// Set log level to debug in config.js
debug: {
logLevel: "debug" // Shows all log messages
}# Create extension package
./pack.sh
# Output: bin/jc-tracker-extension_YYYYMMDD_HHMMSS.zip- AI Context Hub - Root context and verification commands
- Project Context - Requirements and implementation roadmap
- Architecture Context - System design and components
- Storage Context - Data persistence and migration
- UI Context - Interface design and theming
- Build Context - Build process and deployment
- Fork the repository
- Create feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Made with β€οΈ for the scientific research community
