Skip to content

Ink Highlighter - a robust highlighter extension for Chrome and Edge. Supports profile group, multi-color highlighting, regex expressions, and local import/export to JSON

License

Notifications You must be signed in to change notification settings

SomeGuy02312/Ink

Repository files navigation

Ink Highlighter

Version License Chrome React TypeScript

A powerful Chrome extension for recruiters and sourcers to highlight keywords, patterns, and contact information on any webpage.

Features β€’ Installation β€’ Usage β€’ Tech Stack β€’ Development


🎯 Overview

Ink Highlighter is a Chrome extension designed for recruitment professionals who need to quickly scan profiles, resumes, and job postings for key information. With support for both keyword matching and regex patterns, plus intelligent profile management, Ink transforms any webpage into an annotated document tailored to your search criteria.

Whether you're sourcing engineers on LinkedIn, screening candidates on job boards, or reviewing resumes, Ink highlights what matters mostβ€”instantly.

✨ Features

🎨 Intelligent Highlighting

  • Multi-Group Support: Organize terms into color-coded groups (e.g., "JavaScript Skills", "Certifications", "Contact Info")
  • Smart Matching: Supports plain text keywords, wildcards (teach*), and full regex patterns
  • Real-Time Updates: Highlights update instantly as you add/remove termsβ€”no page refresh needed
  • Conflict Resolution: Automatically handles overlapping matches with smart prioritization

πŸ“‚ Profile Management

  • Quick Profiles: 5 pre-built professional profiles ready to use:
    • Modern Web Development
    • Data Networking
    • Sales
    • Accounting & Finance
    • Product Management
  • Custom Profiles: Save unlimited custom configurations for different roles or industries
  • Quick Switch: Toggle between profiles via the header dropdown menu
  • Import/Export: Back up and share your configurations as JSON

πŸ“Š Summary Dashboard

  • Match Counter: Real-time count of highlights per group
  • Visual Indicators: Color-coded badges show which groups are active
  • Collapsible Design: Minimize to save screen space

πŸŽ›οΈ Advanced Controls

  • Context Menu Integration: Right-click any text and add it to a group instantly
  • Inline Editing: Rename groups, change colors, and manage terms without leaving the page
  • Visibility Toggles: Turn groups on/off with a single click
  • Color Picker: Choose from curated pastel colors or use a custom color

πŸ” Contact Detection

Each profile includes regex patterns for:

  • βœ‰οΈ Email Addresses
  • πŸ“ž Phone Numbers (international formats supported)
  • 🌐 Websites & URLs

🧩 Shadow DOM Architecture

  • Non-Invasive: Runs in an isolated Shadow DOMβ€”no conflicts with host page styles
  • CSP-Compliant: Works on strict sites like LinkedIn
  • Persistent State: Remembers sidebar position and profile selection across sessions

πŸ“₯ Installation

Option 1: Download Pre-Built (Recommended)

  1. Download the latest release

    • Go to Releases
    • Download ink-highlighter-vX.X.X.zip
  2. Extract and load

    • Extract the zip file to a permanent location
    • Open Chrome and navigate to chrome://extensions/
    • Enable Developer mode (top-right toggle)
    • Click Load unpacked
    • Select the extracted folder

Option 2: Build from Source

  1. Clone the repository

    git clone https://github.com/yourusername/Ink.git
    cd Ink
  2. Install dependencies

    npm install
  3. Build the extension

    npm run build
  4. Load in Chrome

    • Open Chrome and navigate to chrome://extensions/
    • Enable Developer mode (top-right toggle)
    • Click Load unpacked
    • Select the dist/ folder from the project directory

πŸš€ Usage

Getting Started

  1. Open the Sidebar

    • Click the Ink toolbar icon, OR
    • Click the floating "Ink" button (bottom-right of any page)
  2. Choose a Profile

    • Click the Folder icon in the header
    • Select a pre-built profile (e.g., "Modern Web Development")
    • Or create your own by adding groups manually
  3. Add Terms

    • Expand a group to see its terms
    • Click + Add term to add keywords
    • Use the regex toggle for pattern matching
  4. Save Your Configuration

    • Click the Folder icon > Save Current
    • Name your profile (e.g., "Senior React Engineers")
    • Switch between profiles anytime

Tips & Tricks

  • Right-Click to Add: Select any text on the page, right-click, and choose "Add to [Group Name]"
  • Color Coding: Use distinct colors for different types of information (skills, titles, tools, etc.)
  • Regex Power: Match variations like (React|Vue|Angular) or (Senior|Lead|Staff) Engineer
  • Export Backups: Regularly export your profiles via Settings > Data > Export

πŸ› οΈ Tech Stack

Core Technologies

  • React 19 - Modern UI framework
  • TypeScript 5.9 - Type-safe development
  • Vite 7 - Lightning-fast build tool
  • Shadow DOM - Isolated component rendering

Chrome APIs

  • chrome.storage.local - Persistent data storage
  • chrome.contextMenus - Right-click integration
  • chrome.scripting - Dynamic content injection

Key Libraries

  • Lucide React - Beautiful icon set
  • Vitest - Unit testing framework
  • JSDOM - DOM testing environment

Architecture Highlights

  • Custom Build Pipeline: Dual-mode Vite build (ES modules + IIFE for content scripts)
  • MutationObserver: Detects dynamic content changes (e.g., infinite scroll)
  • TreeWalker API: Efficient DOM traversal for text node scanning

πŸ§‘β€πŸ’» Development

Commands

# Build for production
npm run build

# Run unit tests
npm test

# Lint code
npm run lint

Project Structure

Ink/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ components/        # React UI components
β”‚   β”œβ”€β”€ content/          # Content script (highlighter engine)
β”‚   β”œβ”€β”€ core/             # Shared utilities (matcher, storage, palette)
β”‚   β”œβ”€β”€ background.ts     # Service worker
β”‚   └── App.tsx           # Main React app
β”œβ”€β”€ scripts/
β”‚   └── build.js          # Custom Vite build orchestration
β”œβ”€β”€ dist/                 # Build output (ignored by git)
└── manifest.json         # Chrome extension manifest

Key Files

  • src/core/matcher.ts: Core matching engine (text, wildcard, regex)
  • src/content/scanner.ts: DOM traversal and highlight application
  • src/core/defaultData.ts: Pre-built professional profiles
  • scripts/build.js: Handles dual-mode Vite build for MV3 compatibility

πŸ§ͺ Testing

npm test

13 unit tests cover:

  • βœ… Matcher logic (text, regex, wildcards)
  • βœ… Storage persistence
  • βœ… Highlight application and removal
  • βœ… Overlap resolution

πŸ“„ License

This project is licensed under the PolyForm Noncommercial License 1.0.0.

TL;DR: Free for personal, educational, and non-commercial use. Commercial use requires a separate license.

See LICENSE.md for full terms.

🀝 Contributing

Contributions are welcome! However, please note:

  • This project is under a noncommercial license
  • Any contributions must also comply with the license terms
  • For commercial licensing inquiries, please contact the maintainer

πŸ™ Acknowledgments

  • Color Palette: Inspired by Tailwind CSS pastel shades
  • Icons: Powered by Lucide
  • Architecture: Built with insights from Chrome Extension MV3 best practices

Made with ❀️ for Recruiters and Sourcers

About

Ink Highlighter - a robust highlighter extension for Chrome and Edge. Supports profile group, multi-color highlighting, regex expressions, and local import/export to JSON

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published