A Zero-Latency Developer New Tab Extension
Replace your Chrome new tab with a blazing-fast, keyboard-first developer dashboard
Features β’ Screenshots β’ Installation β’ Usage β’ Development β’ Tech Stack
Main dashboard with clock, top sites, and omnibar
Optional widgets: Pomodoro, Notepad, Weather, and more
Customizable settings panel
- β‘ 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
| 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 |
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
Ctrl/Cmd + ,- Open SettingsEscape- Close modalsβ/β- Navigate command history in Omnibar
# 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/` directoryDownload the latest .crx or .zip from Releases.
- Node.js 18+
- pnpm (recommended) or npm
# 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 testThis project uses Tailwind CSS v4 with the new CSS-first configuration approach:
- No
tailwind.config.js- Configuration is done via CSS@importand@plugindirectives - Entry points:
- src/app.css - Main Tailwind import with custom design system
- src/routes/layout.css - Tailwind plugins (@tailwindcss/forms, @tailwindcss/typography)
- Vite plugin: Uses
@tailwindcss/vitefor seamless integration - Custom theme: See src/lib/styles/tokens.css for CSS variables
| 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 |
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)
Edit component classes or app.css. Current theme (GitHub Dark):
--bg-primary: #0d1117;
--bg-secondary: #161b22;
--border: #30363d;
--text-main: #c9d1d9;
--accent: #58a6ff;In src/lib/components/Omnibar.svelte:
if (command.startsWith('npm ')) {}
const pkg = command.slice(4);
window.location.href = `https://npmjs.com/package/${pkg}`;
return;
}In src/routes/+page.svelte:
<Clock use24Hour={true} showGreeting={false} />- topSites.ts - Chrome
topSitesAPI wrapper with mock data fallback for development - storage.ts - Unified storage using
chrome.storage.localwithlocalStoragefallback
All components built with Svelte 5's new runes syntax:
- Clock.svelte - Uses
$statefor reactive time and$effectfor interval management - TopSites.svelte - Pure presentation component with typed
$props - Omnibar.svelte - Command parser with
$statefor history and input - Settings.svelte - Modal with two-way binding to settings store
- ViewportLayout.svelte - Responsive grid system using CSS Grid
// Strict TypeScript configuration
- strictNullChecks: true
- noImplicitAny: true
- No any types allowed
- Interface definitions for all data structuresExample type definitions:
interface Site {
title: string;
url: string;
}
interface StorageData {
settings: {
use24Hour: boolean;
showGreeting: boolean;
githubUsername: string;
customLinks: string[];
};
}- SvelteKit compiles components to vanilla JS
- Vite bundles assets with code splitting
- Post-build script fixes inline CSP issues
- Manifest + icons copied to
build/directory - Output is a standard Manifest V3 extension
- β‘ 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
# Rebuild and reload
pnpm build
# Then reload extension in chrome://extensions- Check Chrome permissions in
chrome://extensions - Ensure
topSitespermission is granted
# Clear cache and reinstall
rm -rf node_modules .svelte-kit build
pnpm install
pnpm build- Chrome Web Store release
- Firefox/Edge support
- Custom widget API
- Cloud sync (optional)
- Theme customization UI
- Import/Export settings
- Internationalization (i18n)
- Svelte 5 Documentation - Runes API and component syntax
- SvelteKit Documentation - Build tooling and routing
- Chrome Extension Docs - Manifest V3 API reference
- Tailwind CSS v4 Documentation - CSS-first configuration
- @tailwindcss/vite Plugin - Vite integration guide
- TypeScript Handbook - Language reference
- Lucide Icons - Icon library
- Vitest Documentation - Testing framework
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
# 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 buildGuidelines:
- Follow TypeScript strict mode (no
anytypes) - 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 β
This project is licensed under the MIT License - see the LICENSE file for details.
Zayan Mohamed
- GitHub: @Zayan-Mohamed
- Repository: dev-dash
Thanks to these wonderful people who have contributed to this project:
- Duwaragie Kugaraj (@duwaragie) - Helped revamp the UI
- ERJavier - Implemented the real-time CPU/Memory usage widgets
Give a βοΈ if this project helped you!
- Svelte Team for the amazing framework
- Lucide for beautiful icons
- GitHub for design inspiration
- All contributors and users