Skip to content

Ruandv/Quantum-Tab

Repository files navigation

Quantum Tab Logo

πŸš€ Quantum Tab

The Ultimate Chrome Extension Dashboard

Chrome Extension React TypeScript Manifest V3

Transform your new tab experience with a customizable, widget-powered dashboard that puts everything you need at your fingertips.

🎯 Features β€’ πŸš€ Quick Start β€’ πŸ› οΈ Development β€’ πŸ“¦ Installation


✨ What Makes Quantum Tab Special?

🎨 Beautiful & Modern - Sleek glass-morphism design with customizable backgrounds
⚑ Lightning Fast - Built with React 18 and optimized for performance
🧩 Modular Widgets - Drag, drop, and customize your perfect workspace
🌐 Multi-Language - Full internationalization support (English, Afrikaans, Spanish)
πŸ”’ Privacy First - All data stored locally, no tracking, no servers
πŸ›‘οΈ Manifest V3 - Future-proof with the latest Chrome Extension standards

🎯 Features

πŸ•’ Live Clock ⚑ Quick Actions 🎨 Background Manager
Multi-timezone support
Custom formats
Real-time updates
Favorite website shortcuts
Custom icons & labels
One-click navigation
Upload custom backgrounds
5MB file support
Preview & restore
πŸ™ GitHub Integration πŸ“Š Website Counter 🌐 Language Settings
PR monitoring
PAT authentication
Real-time updates
Visit tracking
Favicon display
Statistics & trends
Multi-language UI
Instant switching
Persistent preferences
πŸƒ Sprint Number
Track sprint cycles
Auto-calculate sprint dates
Multiple sprint tracking

πŸ”₯ Core Technologies

  • πŸš€ React 18 - Modern functional components with hooks
  • πŸ“˜ TypeScript - Type-safe development experience
  • ⚑ Webpack - Optimized build system with hot reload
  • 🎨 CSS Modules - Component-scoped styling
  • 🌍 react-i18next - Full internationalization support
  • πŸ” ESLint & Prettier - Code quality and formatting

πŸš€ Quick Start

# πŸ“¦ Install dependencies
npm install

# πŸ”¨ Build for development
npm run dev

# πŸ—οΈ Build for production  
npm run build

# 🧹 Format code
npm run format

πŸ“¦ Installation

  1. πŸ“ Download - Clone or download this repository
  2. πŸ”¨ Build - Run npm install && npm run build
  3. 🌐 Load - Open chrome://extensions/, enable Developer mode
  4. πŸ“‚ Install - Click "Load unpacked" and select the dist folder
  5. πŸŽ‰ Enjoy - Open a new tab and customize your dashboard!

πŸ—οΈ Project Architecture

πŸ“ Project Structure
quantum-tab/
β”œβ”€β”€ πŸ“ src/
β”‚   β”œβ”€β”€ 🎨 newtab/               # New tab dashboard
β”‚   β”‚   β”œβ”€β”€ index.tsx           # Main dashboard entry
β”‚   β”‚   β”œβ”€β”€ NewTab.tsx          # Dashboard component
β”‚   β”‚   └── newtab.css          # Dashboard styles
β”‚   β”œβ”€β”€ 🧩 components/          # Reusable widgets
β”‚   β”‚   β”œβ”€β”€ ClockWidget.tsx     # Live clock widget
β”‚   β”‚   β”œβ”€β”€ GitHubWidget.tsx    # GitHub integration
β”‚   β”‚   β”œβ”€β”€ LocaleWidget.tsx    # Language settings
β”‚   β”‚   └── ...                 # More widgets
β”‚   β”œβ”€β”€ 🌍 locales/             # Internationalization
β”‚   β”‚   β”œβ”€β”€ en.json            # English translations
β”‚   β”‚   └── af.json            # Afrikaans translations
β”‚   β”‚   └── es.json            # Spanish translations
β”‚   β”œβ”€β”€ πŸ”§ background/          # Extension background
β”‚   β”œβ”€β”€ πŸ“ content/             # Content scripts
β”‚   β”œβ”€β”€ 🎯 types/               # TypeScript definitions
β”‚   └── πŸ› οΈ utils/               # Utility functions
β”œβ”€β”€ πŸ–ΌοΈ public/icons/            # Extension icons
β”œβ”€β”€ πŸ“„ manifest.json           # Extension manifest
└── βš™οΈ webpack.config.js        # Build configuration

πŸ› οΈ Development

πŸ“‹ Prerequisites

  • 🟒 Node.js (v16 or later)
  • πŸ“¦ npm or yarn
  • 🌐 Chrome Browser (for testing)

πŸš€ Development Workflow

πŸ’» Local Development Setup
# 1️⃣ Clone the repository
git clone https://github.com/YourUsername/quantum-tab.git
cd quantum-tab

# 2️⃣ Install dependencies
npm install

# 3️⃣ Start development server
npm run dev

# 4️⃣ Open Chrome Extensions
# Navigate to: chrome://extensions/

# 5️⃣ Load the extension
# Enable "Developer mode" β†’ Click "Load unpacked" β†’ Select /dist folder

πŸ”„ Hot Reload Development

  1. πŸ”₯ Start dev mode - npm run dev (watches for file changes)
  2. πŸ’Ύ Make changes - Edit any source file
  3. πŸ”„ Auto-rebuild - Webpack automatically rebuilds
  4. πŸ”ƒ Reload extension - Click reload button in chrome://extensions/
  5. ✨ Test changes - Open new tab to see updates

πŸ“œ Available Scripts

Command Description Usage
πŸ—οΈ npm run build Production build with optimization Release builds
πŸ”¨ npm run dev Development build with file watching Active development
🧹 npm run lint ESLint code quality checks Code review
✨ npm run format Prettier code formatting Code cleanup
πŸ” npm run type-check TypeScript type validation Type safety
πŸ“š npm run docs:sync-wiki-local Generate wiki documentation locally Local wiki updates
πŸ“– npm run docs:sync-wiki Generate wiki documentation for CI/CD Production wiki sync

πŸ“– Documentation & Wiki

Comprehensive widget documentation automatically generated from source code

🎯 Wiki Documentation System

Quantum Tab uses an automated documentation generation system that converts widget definitions into comprehensive GitHub Wiki pages. All widget documentation is centralized in docs/WIDGET_DOCUMENTATION.md and automatically synced to the GitHub Wiki.

πŸ”„ How It Works

πŸ“ Documentation Workflow
graph LR
    A[Widget Components] --> B[docs/WIDGET_DOCUMENTATION.md]
    B --> C[npm run docs:sync-wiki-local]
    C --> D[wiki/ folder]
    D --> E[Git Push]
    E --> F[GitHub Wiki]
Loading
  1. πŸ“„ Source Documentation - Widget properties and descriptions are maintained in docs/WIDGET_DOCUMENTATION.md
  2. πŸ”§ Local Generation - Run npm run docs:sync-wiki-local to generate individual wiki pages
  3. πŸ“ Wiki Folder - Generated markdown files are saved to the local wiki/ folder
  4. πŸ”„ Git Sync - The wiki/ folder is a Git submodule linked to the GitHub Wiki repository
  5. 🌐 Publish - Commit and push changes to automatically update the live GitHub Wiki
πŸ› οΈ Local Wiki Development

Setting Up Local Wiki

# 1️⃣ Clone the wiki repository
cd wiki
git clone https://github.com/Ruandv/Quantum-Tab.wiki.git .

# 2️⃣ Generate wiki pages from documentation
cd ..
npm run docs:sync-wiki-local

# 3️⃣ Review generated files
cd wiki
ls -la  # See all generated .md files

# 4️⃣ Commit and push changes
git add .
git commit -m "docs: update widget documentation"
git push origin master

Documentation Structure

The documentation generator automatically creates:

  • Home.md - Main wiki landing page with widget index
  • [widget-name].md - Individual pages for each widget
  • timezones.md - Time zone reference for LiveClock widget
πŸ“š Adding New Widget Documentation

When creating a new widget, add its documentation to docs/WIDGET_DOCUMENTATION.md:

### YourNewWidget
- **Description**: Brief description of what the widget does
- **Usage**: How and when to use this widget

#### Properties
- **propertyName**: Description of the property and its purpose
- **anotherProperty**: Another property description

Then regenerate the wiki:

npm run docs:sync-wiki-local
cd wiki
git add .
git commit -m "docs: add YourNewWidget documentation"
git push
πŸ€– CI/CD Documentation Pipeline

The repository includes a GitHub Action workflow (.github/workflows/sync-docs-to-wiki.yml) that automatically:

  1. Triggers on push to the main branch when docs/WIDGET_DOCUMENTATION.md changes
  2. Generates wiki pages using npm run docs:sync-wiki
  3. Publishes to Wiki using the official GitHub Wiki Action
  4. Updates live docs without manual intervention

Production Sync Command

npm run docs:sync-wiki

This command generates wiki files in wiki/ folder for CI/CD deployment.

πŸ“‘ Documentation Best Practices

βœ… Keep it updated - Update docs/WIDGET_DOCUMENTATION.md when modifying widget properties
βœ… Test locally - Use npm run docs:sync-wiki-local to preview changes before pushing
βœ… Follow structure - Maintain consistent formatting for all widget documentation
βœ… Include examples - Add usage examples and common configuration patterns
βœ… Alphabetical properties - List widget properties in alphabetical order

πŸ”— Quick Links


🧩 Widget Gallery

Available Dashboard Widgets

πŸ•’ Live Clock Widget

Perfect for global teams and timezone management

✨ Features:

  • 🌍 Multiple timezone support with auto-detection
  • πŸ“… Customizable date and time formats
  • πŸ”„ Real-time updates every second
  • πŸ“ Resizable widget dimensions
  • 🎨 Beautiful glass-morphism design

Multiple Instances: βœ… Yes (track multiple timezones)

⚑ Quick Actions Widget

One-click access to your favorite websites

✨ Features:

  • 🎯 Customizable emoji icons and labels
  • πŸš€ Direct website navigation
  • πŸŽ›οΈ Drag-and-drop management
  • βž• Unlimited button creation
  • πŸ”— Smart URL validation

Multiple Instances: βœ… Yes (create themed button groups)
Default Buttons: GitHub, MyBroadband

🎨 Background Manager Widget

Personalize your dashboard with custom backgrounds

✨ Features:

  • πŸ“ Upload custom images (PNG, JPG, JPEG, GIF, WebP)
  • πŸ‘οΈ Live preview before applying
  • πŸ”„ Restore default gradient anytime
  • πŸ—‘οΈ Remove backgrounds with one click
  • πŸ“Š 5MB file size limit

Multiple Instances: ❌ No (single background manager)

πŸ™ GitHub Integration Widget

Monitor your repositories and pull requests

✨ Features:

  • πŸ“Š Real-time pull request monitoring
  • πŸ” PAT token authentication for private repos
  • 🏷️ PR status indicators (Open, Merged, Closed, Draft)
  • πŸ”„ Auto-refresh pull request data
  • πŸ“ˆ Repository information display

Multiple Instances: βœ… Yes (monitor multiple repositories)
Requirements: GitHub Personal Access Token for private repos

πŸ“Š Website Counter Widget

Track your browsing habits and favorite sites

✨ Features:

  • πŸ“ˆ Automatic visit counting
  • 🌐 Favicon display for visual identification
  • πŸ“… Last visited timestamps
  • βš™οΈ Customizable website list
  • πŸ“Š Visit statistics and trends

Multiple Instances: ❌ No (single counter tracks all sites)
Default Sites: Google, GitHub, MyBroadband

🌐 Language Settings Widget

Multi-language interface support

✨ Features:

  • 🌍 Support for multiple languages
  • ⚑ Instant language switching (no restart needed)
  • πŸ’Ύ Persistent locale preferences in Chrome storage
  • 🏳️ Visual language indicators with flag emojis
  • πŸ”’ Read-only display when widget is locked

Multiple Instances: ❌ No (single language settings)
Available Languages: English alt text, Afrikaans alt text, Spanish alt text

πŸƒ Sprint Number Widget

Track your agile sprint cycles with automatic calculations

✨ Features:

  • πŸ“… Configure sprint start date, length, and current sprint number
  • πŸ”„ Automatic sprint calculation based on elapsed days
  • πŸ“Š Display current sprint number with start/end dates
  • ⏰ Live updates at midnight each day
  • 🎯 Configurable sprint length (default: 14 days)
  • πŸ“ˆ Perfect for agile teams and project management

Multiple Instances: βœ… Yes (track multiple sprint schedules)
Configuration: Set once when adding widget
Calculation: (Today - StartDate) / SprintLength + BaseSprint


πŸ›οΈ Architecture & APIs

Built on Modern Chrome Extension Standards

πŸš€ Extension Infrastructure

🎨 New Tab Dashboard

  • Modern React-based UI with glass-morphism design
  • Drag-and-drop widget management system
  • Full internationalization (i18n) support
  • Responsive design with CSS modules
  • Real-time data synchronization

βš™οΈ Background Service Worker

  • Extension lifecycle event handling
  • Message passing between components
  • Badge updates and extension state management
  • Website visit tracking for analytics
  • Persistent data management

πŸ“ Content Script Integration

  • Seamless page interaction capabilities
  • Website visit detection and counting
  • Communication bridge between web pages and extension
  • Privacy-focused data collection
πŸ”Œ Chrome APIs Integration
API Usage Purpose
πŸ”– chrome.tabs Tab management & queries New tab functionality
πŸ’Ύ chrome.storage Data persistence Widget configs & user data
πŸ“¨ chrome.runtime Message passing Component communication
🎯 chrome.action Icon & badge management Extension UI updates
πŸ“ File System APIs Image upload processing Background customization
🌍 i18n APIs Multi-language support Localization framework

🀝 Contributing

Help make Quantum Tab even better!

πŸ“‹ Guidelines

  1. 🎨 Code Style - Follow ESLint and Prettier configurations
  2. πŸ“ Commit Messages - Use meaningful, descriptive commits
  3. πŸ§ͺ Testing - Test all changes before submitting
  4. πŸ“š Documentation - Update docs for new features
  5. πŸ” Code Review - All PRs require review

πŸ› οΈ Development Stack

Frontend Extension Tooling
React Manifest V3 Webpack
TypeScript Service Workers ESLint
CSS Modules Chrome Storage Prettier
i18next Content Scripts Hot Reload

🌟 Star this repo if you find it useful!

Made with ❀️ for the Chrome Extension community

GitHub stars GitHub forks

Report Bug β€’ Request Feature β€’ Contribute

About

New tab. New intelligence.

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 5