A beautiful (debatable), minimal Chrome extension to store and manage your favorite URLs in key-value pairs.
- Minimal Design: Clean, light-colored interface optimized for Chrome extension popup size (340x500px)
- Add URLs: Store URLs with custom names (e.g., "LinkedIn: https://linkedin.com/in/username")
- Edit & Delete: Easily modify or remove saved URLs
- Smart Layout: Shows 3 URL boxes at a time with smooth scrolling
- Quick Access: Click any URL to open it in a new tab
- Confirmation Dialog: Prevents accidental deletions
- Light, minimalist aesthetic with soft colors
- Primary accent: Blue (#007AFF) for save/edit actions
- Success accent: Green (#34C759) for add button
- Each URL displayed in a clean box with hover effects
- Edit and delete icons appear on hover
-
Clone this repository:
git clone <repo-url> cd url-vault
-
Install dependencies:
npm install
-
Build the extension:
npm run build
-
Load in Chrome:
- Open Chrome and navigate to
chrome://extensions/ - Enable "Developer mode" (toggle in top right)
- Click "Load unpacked"
- Select the
distfolder from this project
- Open Chrome and navigate to
Run the development server with hot reload:
npm run devThen load the extension from the dist folder as described above. You'll need to reload the extension in Chrome after making changes.
- Add a URL: Click the green "+" button in the top right
- Enter details: Type a name (e.g., "GitHub") and the full URL
- Save: Click the blue "Save" button or press Enter
- Edit: Hover over a URL box and click the pencil icon
- Delete: Hover over a URL box, click the trash icon, then confirm
- Open URL: Click on any URL to open it in a new tab
- React 19 - UI framework
- TypeScript - Type safety
- Tailwind CSS v4 - Styling
- Vite - Build tool
- Chrome Extensions API - Storage and tabs
url-vault/
βββ src/
β βββ components/
β β βββ LinkItem.tsx # Individual URL box component
β βββ popup/
β β βββ popup.html # Extension popup HTML
β β βββ popup-main.tsx # React entry point
β β βββ Popup.tsx # Main popup component
β βββ types.d.ts # TypeScript definitions
β βββ index.css # Global styles with Tailwind
βββ public/
β βββ manifest.json # Chrome extension manifest
βββ package.json
- Extension Size: 340px wide Γ 500px high
- Visible Boxes: 3 URL boxes visible without scrolling (~100px each)
- Color Palette:
- Background: White (#FFFFFF) / Light gray (#F9FAFB)
- Borders: Light gray (#E5E7EB)
- Primary: Blue (#3B82F6)
- Success: Green (#22C55E)
- Danger: Red (#EF4444)
- Typography: Inter font family with system fallbacks
The main container that manages:
- State for URL list
- Add/Edit form visibility
- Chrome storage sync
Individual URL box featuring:
- Title and URL display
- Edit/Delete action buttons (visible on hover)
- Delete confirmation overlay
- Click-to-open functionality
- URLs stored in Chrome's sync storage
- Loaded on popup open
- Changes synced immediately across devices
- Uses UUID for unique identifiers
MIT
Made with β€οΈ for productivity