Skip to content

jaiwardhan/journalclub-chrome-extension

Repository files navigation

JournalClub Tracker

JournalClub Tracker Logo

A Chrome extension for tracking episode completion status on journalclub.io

Chrome Extension Version License

πŸš€ Features

βœ… Episode Tracking

  • 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

🎨 Modern UI/UX

  • 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

πŸ’Ύ Robust Data Management

  • 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

πŸ”§ Advanced Features

  • 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

πŸ“¦ Installation

From Source

  1. Clone the repository

    git clone <repository-url>
    cd journalclub-chrome-extension
  2. Load in Chrome

    • Open chrome://extensions/
    • Enable "Developer mode"
    • Click "Load unpacked"
    • Select the project directory
  3. Build Extension Package (Optional)

    ./pack.sh

    Creates timestamped ZIP in bin/ directory

From Chrome Web Store

Coming soon - pending store submission

🎯 Usage

Basic Usage

  1. Navigate to journalclub.io and log in
  2. Look for "Tracker" button in top-right corner
  3. Click button to open context menu
  4. Mark episodes as Read/Unread as needed

Episode Pages (/episodes/<name>)

  • Toggle Status: Mark as Read/Unread
  • View All Read: Browse completed episodes
  • Export Data: Download backup JSON
  • Import Data: Restore from backup

Episodes List (/episodes)

  • Visual Indicators: Green checkmarks on completed episodes
  • Bulk Operations: Clear all data, export/import
  • Episode Count: See total read episodes

πŸ—οΈ Architecture

Core Components

  • JCTracker: Main extension controller
  • StorageManager: Dual storage system management
  • IndexedDBManager: IndexedDB operations
  • Logger: Configurable logging system

File Structure

β”œβ”€β”€ 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

βš™οΈ Configuration

Feature Gates

features: {
  FEATURE_GATE_INDICATORS_ENABLED: true,  // Episode indicators
  DEBUG_ENABLED: true,                     // Logging system
  episodeIndicators: true,                 // Green checkmarks
  carousel: true                           // Read episodes list
}

Log Levels

  • debug: Verbose development logging
  • info: General information
  • warning: Warnings only (default)
  • error: Errors only

UI Customization

ui: {
  colors: {
    loggedIn: "#10b981",     // Green border when logged in
    loggedOut: "#ef4444",    // Red border when logged out
    checkmark: "#10b981"     // Episode completion indicator
  }
}

πŸ”’ Privacy & Security

  • Local Storage Only: No data sent to external servers
  • Domain Restricted: Only active on journalclub.io
  • Minimal Permissions: Only storage and activeTab
  • No Tracking: No analytics or user behavior tracking

πŸ› οΈ Development

Prerequisites

  • Chrome/Chromium browser
  • Basic knowledge of Chrome Extensions
  • JavaScript ES6+ familiarity

Development Setup

  1. Enable Developer Mode in Chrome extensions
  2. Load unpacked extension from project directory
  3. Make changes to source files
  4. Reload extension in Chrome to test changes

Debugging

// Set log level to debug in config.js
debug: {
  logLevel: "debug"  // Shows all log messages
}

Building

# Create extension package
./pack.sh

# Output: bin/jc-tracker-extension_YYYYMMDD_HHMMSS.zip

πŸ“š Documentation

🀝 Contributing

  1. Fork the repository
  2. Create feature branch (git checkout -b feature/amazing-feature)
  3. Commit changes (git commit -m 'Add amazing feature')
  4. Push to branch (git push origin feature/amazing-feature)
  5. Open Pull Request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


Made with ❀️ for the scientific research community

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors