Skip to content

A zero-latency, keyboard-first Chrome Extension that replaces your new tab with a developer-focused dashboard built with Svelte 5 and Tailwind CSS v4.

License

Notifications You must be signed in to change notification settings

Zayan-Mohamed/dev-dash

Repository files navigation

DevDash Logo

A Zero-Latency Developer New Tab Extension

Chrome Extension Manifest V3 SvelteKit Svelte TypeScript Tailwind CSS License PRs Welcome

Replace your Chrome new tab with a blazing-fast, keyboard-first developer dashboard

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


πŸ“Έ Screenshots

DevDash Main View

Main dashboard with clock, top sites, and omnibar

DevDash Widgets

Optional widgets: Pomodoro, Notepad, Weather, and more

DevDash Settings

Customizable settings panel


✨ Features

🎯 Core Features

  • ⚑ Zero Latency - Instant page load with compiled Svelte (no runtime overhead)
  • ⌨️ Keyboard First - Command palette with Vim-inspired shortcuts
  • 🎨 Hacker Aesthetic - GitHub Dark Dimmed theme with monospace fonts
  • πŸ”’ Privacy Focused - 100% local storage, zero tracking, no external calls
  • πŸš€ Modern Stack - Built with Svelte 5 (runes), SvelteKit, TypeScript, Tailwind v4

🧩 Widgets & Components

Widget Description Status
πŸ• Clock Large digital clock with 12/24h format & dynamic greeting βœ… Core
πŸ”— Top Sites Most visited sites from Chrome history βœ… Core
⌨️ Omnibar Universal search/command bar (Google, GitHub, localhost) βœ… Core
πŸ… Pomodoro Focus timer with work/break intervals βœ… Optional
πŸ“ Notepad Quick scratchpad with auto-save βœ… Optional
🌀️ Weather Local weather widget βœ… Optional
πŸ“° Tech News Latest developer news feed βœ… Optional
πŸ“Š GitHub Stats Personal GitHub activity & stats βœ… Optional

⚑ Omnibar Commands

Type in the command bar:

Command Action Example
g <query> Google Search g svelte tutorial
gh <query> GitHub Search gh vite
l <port> Open Localhost l 3000 β†’ localhost:3000
/<command> Custom Commands /help
Direct URL Navigate github.com
Search Query Google Search javascript promises

Navigation: Use ↑/↓ arrow keys to browse command history

⌨️ Keyboard Shortcuts

  • Ctrl/Cmd + , - Open Settings
  • Escape - Close modals
  • ↑ / ↓ - Navigate command history in Omnibar

πŸš€ Installation

Option 1: Load Unpacked (Development)

# Clone the repository
git clone https://github.com/Zayan-Mohamed/dev-dash.git
cd dev-dash

# Install dependencies (requires pnpm)
pnpm install

# Build the extension
pnpm build

# Load in Chrome:
# 1. Open chrome://extensions
# 2. Enable "Developer mode" (top-right toggle)
# 3. Click "Load unpacked"
# 4. Select the `build/` directory

Option 2: From Chrome Web Store (Coming Soon)

Download the latest .crx or .zip from Releases.

πŸ› οΈ Development

Prerequisites

  • Node.js 18+
  • pnpm (recommended) or npm

Development Commands

# Install dependencies
pnpm install

# Dev server (browser preview at http://localhost:5173)
pnpm dev

# Build for Chrome Extension
pnpm build
# Output: build/ directory (load unpacked in Chrome)

# Type checking
pnpm check

# Lint code
pnpm lint

# Format code
pnpm format

# Run unit tests
pnpm test:unit

# Run E2E tests
pnpm test:e2e

# Run all tests
pnpm test

Tailwind CSS v4 Configuration

This project uses Tailwind CSS v4 with the new CSS-first configuration approach:

  • No tailwind.config.js - Configuration is done via CSS @import and @plugin directives
  • Entry points:
  • Vite plugin: Uses @tailwindcss/vite for seamless integration
  • Custom theme: See src/lib/styles/tokens.css for CSS variables

πŸ“¦ Tech Stack

Technology Version Purpose
Svelte 5.45.6 UI framework with runes
SvelteKit 2.49.1 Build tooling
TypeScript 5.9.3 Type safety
Tailwind CSS 4.1.17 Styling (CSS-first v4)
@tailwindcss/vite 4.1.17 Vite integration
@tailwindcss/forms 0.5.10 Form styling plugin
@tailwindcss/typography 0.5.19 Typography plugin
Vite 7.2.6 Bundler
Vitest 4.0.15 Testing framework
Playwright 1.57.0 E2E testing
lucide-svelte 0.562.0 Tree-shakeable SVG icons
ESLint 9.39.1 Code linting
Prettier 3.7.4 Code formatting

πŸ“ Project Structure

src/
β”œβ”€β”€ lib/
β”‚   β”œβ”€β”€ components/       # UI components (Clock, TopSites, Omnibar)
β”‚   β”œβ”€β”€ services/         # Chrome API wrappers
β”‚   └── utils/            # Helper functions
β”œβ”€β”€ routes/
β”‚   β”œβ”€β”€ +layout.svelte    # Root layout
β”‚   └── +page.svelte      # Main dashboard
└── app.css              # Global Tailwind styles

public/
β”œβ”€β”€ manifest.json        # Extension manifest
└── icons/              # Extension icons

build/                  # Built extension (git-ignored)

🎨 Customization

Colors

Edit component classes or app.css. Current theme (GitHub Dark):

--bg-primary: #0d1117;
--bg-secondary: #161b22;
--border: #30363d;
--text-main: #c9d1d9;
--accent: #58a6ff;

Add Commands

In src/lib/components/Omnibar.svelte:

if (command.startsWith('npm ')) {}
  const pkg = command.slice(4);
  window.location.href = `https://npmjs.com/package/${pkg}`;
  return;
}

Clock Format

In src/routes/+page.svelte:

<Clock use24Hour={true} showGreeting={false} />

🧩 Architecture

πŸ”§ Services Layer

  • topSites.ts - Chrome topSites API wrapper with mock data fallback for development
  • storage.ts - Unified storage using chrome.storage.local with localStorage fallback

🎨 Component Design (Svelte 5 Runes)

All components built with Svelte 5's new runes syntax:

  • Clock.svelte - Uses $state for reactive time and $effect for interval management
  • TopSites.svelte - Pure presentation component with typed $props
  • Omnibar.svelte - Command parser with $state for history and input
  • Settings.svelte - Modal with two-way binding to settings store
  • ViewportLayout.svelte - Responsive grid system using CSS Grid

πŸ”’ Type Safety

// Strict TypeScript configuration
- strictNullChecks: true
- noImplicitAny: true
- No any types allowed
- Interface definitions for all data structures

Example type definitions:

interface Site {
	title: string;
	url: string;
}

interface StorageData {
	settings: {
		use24Hour: boolean;
		showGreeting: boolean;
		githubUsername: string;
		customLinks: string[];
	};
}

πŸ” How It Works

Build Pipeline

  1. SvelteKit compiles components to vanilla JS
  2. Vite bundles assets with code splitting
  3. Post-build script fixes inline CSP issues
  4. Manifest + icons copied to build/ directory
  5. Output is a standard Manifest V3 extension

Performance Optimizations

  • ⚑ No Runtime Framework - Svelte compiles to vanilla JS
  • πŸ“¦ Tree-Shaking - Only imports used icons/components
  • 🎯 Code Splitting - Lazy-load optional widgets
  • πŸ’Ύ Local-First - No network calls on initial load
  • πŸ–ΌοΈ No Layout Shift - Fixed background color in HTML

πŸ› Troubleshooting

Extension doesn't load

# Rebuild and reload
pnpm build
# Then reload extension in chrome://extensions

Top Sites not showing

  • Check Chrome permissions in chrome://extensions
  • Ensure topSites permission is granted

Build errors

# Clear cache and reinstall
rm -rf node_modules .svelte-kit build
pnpm install
pnpm build

πŸ—ΊοΈ Roadmap

  • Chrome Web Store release
  • Firefox/Edge support
  • Custom widget API
  • Cloud sync (optional)
  • Theme customization UI
  • Import/Export settings
  • Internationalization (i18n)

πŸ“– Resources


🀝 Contributing

Contributions, issues, and feature requests are welcome! We love community input.

See our Contributing Guide for detailed information on:

  • Reporting Bugs - How to submit effective bug reports
  • Suggesting Features - Share your ideas for new features
  • Code Contributions - Development setup and coding standards
  • Documentation - Help improve our docs
  • Pull Request Process - How to submit PRs that get merged

Quick Start for Contributors

# Fork and clone
git clone https://github.com/YOUR_USERNAME/dev-dash.git
cd dev-dash

# Install and develop
pnpm install
pnpm dev

# Before submitting
pnpm check && pnpm lint && pnpm test && pnpm build

Guidelines:

  • Follow TypeScript strict mode (no any types)
  • Use Svelte 5 runes syntax ($state, $derived, $effect)
  • All Chrome API calls must have environment checks
  • Follow Conventional Commits format

πŸ“– Read the full Contributing Guide β†’


πŸ“„ License

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


πŸ‘€ Author

Zayan Mohamed


πŸ‘₯ Contributors

Thanks to these wonderful people who have contributed to this project:


⭐ Show Your Support

Give a ⭐️ if this project helped you!


πŸ™ Acknowledgments

  • Svelte Team for the amazing framework
  • Lucide for beautiful icons
  • GitHub for design inspiration
  • All contributors and users

Built with Svelte 5 + Tailwind CSS v4 + TypeScript + ❀️

⬆ Back to Top

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •