A customizable, widget-based dashboard extension for Chrome and Firefox that replaces your browser's default new tab page with a powerful, flexible dashboard system.
Dashboard New Tab is a browser extension that transforms your new tab page into a fully customizable dashboard. It features a drag-and-drop grid layout system where you can add, arrange, resize, and configure various widgets to create your perfect workspace.
- Drag & Drop Layout: Arrange widgets freely on a responsive grid layout
- Resizable Widgets: Customize the size of each widget to fit your needs
- Dark Mode: Toggle between light and dark themes with persistent storage
- Export/Import: Save and restore your entire dashboard configuration
- Persistent Storage: All your widgets, positions, and configurations are saved automatically
- Responsive Design: Adapts to different screen sizes with breakpoints
The extension uses a plugin-based architecture, making it easy to add new widget types. Each widget can be:
- Named: Give custom names to your widget frames
- Configured: Each widget has its own configuration modal
- Edited: Click the gear icon to enter edit mode and configure the widget
- Deleted: Remove widgets you no longer need
A powerful bookmark manager with icon support.
Features:
- Add, edit, and delete bookmarks
- Custom icons from Simple Icons library (3000+ icons)
- Icon search with autocomplete
- Two-line title display for better readability
- Compact grid layout
Configuration:
- No configuration required - start adding bookmarks immediately
Display and manage issues from your Youtrack instance.
Features:
- View unresolved issues
- Issue type icons (bug, feature, task)
- Tag display with color coding
- Relative timestamps ("x days ago") with full date tooltips
- Clickable issue links that open in the same tab
- Auto-refresh every 5 minutes
Configuration:
- Base URL: Your Youtrack instance URL
- API Endpoint: The API endpoint URL
- Authorization Header: Your authentication token
- Issue Fields: Customizable field list (default provided)
- Query: Youtrack query string (default: "#Unresolved")
Manage tasks from your Tasktrove instance.
Features:
- Task list with completion status
- Checkbox to toggle task completion
- Due date display with smart formatting (yesterday, today, tomorrow)
- Priority indicators (P1: red, P2: orange, P3: blue)
- Subtask progress tracking
- Comment count
- Tag and project display with colors
- Status filtering (Today, Upcoming, Completed)
- Project and label filtering
- Auto-refresh every 5 minutes
Configuration:
- API Endpoint: Your Tasktrove API endpoint
- API Token: Authentication token
- Status Filter: Filter by Today, Upcoming, or Completed
- Projects: Multi-select project filter
- Labels: Multi-select label filter
Display current weather and forecast information.
Features:
- Current weather with large icon
- Temperature display (current, min, max)
- Weather description
- Additional details (feels like, humidity, wind speed)
- Multi-day forecast (adapts to widget size)
- City and country display
- Auto-refresh every 10 minutes
Configuration:
- Provider: Currently supports OpenWeatherMap
- API Key: Your OpenWeatherMap API key
- City: Search and select your city with autocomplete
Note: The forecast section automatically hides when the widget height is insufficient, and the number of forecast days adapts to the widget width.
Display financial summary and net worth from Firefly III API.
Features:
- Net worth display
- Total spent and earned amounts
- Visual breakdown: spent (red with minus) and earned (green with arrow)
- Currency support (EUR, USD)
- Period selection (this month, this year, last month, last year)
- Auto-refresh every 5 minutes
Configuration:
- API Endpoint: Your Firefly III API endpoint
- API Token: Authentication token
- Currency: Select EUR or USD
- Period: Choose time period for the summary
Display a configurable clock with analog and digital themes.
Features:
- Multiple themes: analog (classic, modern, minimal) and digital (simple, modern, neon, minimal)
- Timezone support (uses system timezone by default, displays selected timezone name)
- Date display (optional)
- Digital format: 12h (AM/PM) or 24h
- Optional sunrise / sunset display with per-day caching to avoid extra API calls
Configuration:
- Theme: choose analog or digital styles
- Timezone: system default or custom IANA timezone (e.g., Europe/Paris)
- Date display: on/off
- Time format: 12h or 24h
- Sunrise/Sunset: on/off (requires latitude/longitude to compute times)
- Clone the repository:
git clone <repository-url>
cd browser-newtab-dashboard- Install dependencies:
npm install- Build the extension:
npm run build- Load the extension in your browser:
- Chrome/Edge: Go to
chrome://extensions/, enable "Developer mode", click "Load unpacked", and select thedistfolder - Firefox: Go to
about:debugging, click "This Firefox", click "Load Temporary Add-on", and selectdist/manifest.json
- Chrome/Edge: Go to
- Build the extension:
npm run build- The
distfolder contains the extension ready to be packaged:- Chrome: Use Chrome Web Store developer dashboard
- Firefox: Use Firefox Add-on Developer Hub
- Click the "+" button in the header (or the "Add Widget" button on an empty dashboard)
- Select a widget type from the modal
- The widget will appear on your dashboard
- Click the gear icon on any widget frame
- Enter edit mode and configure the widget settings
- Click "Save" to apply changes
- Move: Drag widgets by their header (drag handle)
- Resize: Use the resize handles on widget corners
- Rename: Click the gear icon and edit the widget name inline
- Delete: Click the "X" button that appears on hover
Click the gear icon in the header to access:
- Add Widget: Open the widget selector
- Dark Mode: Toggle between light and dark themes
- Export Dashboard: Download your dashboard configuration as JSON
- Import Dashboard: Restore a previously exported configuration
- Export: Saves all widgets, their positions, sizes, names, and configurations
- Import: Restores a complete dashboard from a JSON file
- Useful for backing up your dashboard or sharing configurations
The extension is built with:
- React 18: UI framework
- TypeScript: Type safety
- Vite: Build tool
- Tailwind CSS: Styling
- react-grid-layout: Drag-and-drop grid system
- lucide-react: Icon library
The extension uses a plugin-based architecture:
interface Plugin {
metadata: PluginMetadata;
DashboardView: React.ComponentType<PluginComponentProps>;
EditView: React.ComponentType<PluginComponentProps>;
IconComponent?: React.ComponentType<{ className?: string }>;
}Each plugin provides:
- DashboardView: The main widget display component
- EditView: The configuration interface
- IconComponent: Optional React icon component
- Metadata: Plugin information (id, name, description, version)
All data is stored using Chrome's storage API:
- Dashboard layout and widget configurations
- Theme preference (light/dark)
- Widget names and positions
The build process:
- TypeScript compilation
- Vite bundling
- Manifest and icons copying to
distfolder
- Chrome/Chromium: Full support (Manifest V3)
- Firefox: Full support (with
manifest.firefox.jsonif needed)
src/
├── components/ # React components
│ ├── DashboardContent.tsx
│ ├── Frame.tsx
│ ├── SettingsMenu.tsx
│ └── ...
├── plugins/ # Widget plugins
│ ├── bookmarks/
│ ├── youtrack/
│ ├── tasktrove/
│ ├── meteo/
│ └── finance/
├── lib/ # Utilities
│ ├── storage.ts
│ └── plugin-registry.ts
└── types/ # TypeScript types
- Create a new folder in
src/plugins/ - Implement the plugin structure:
types.ts: TypeScript interfacesapi.ts: API functions (if needed)*DashboardView.tsx: Main display component*EditView.tsx: Configuration component*ConfigModal.tsx: Configuration modal (if needed)*Plugin.tsx: Plugin definition
- Register the plugin in
src/lib/plugin-registry.ts
npm run dev: Start development servernpm run build: Build for productionnpm run build:chrome: Build for Chromenpm run build:firefox: Build for Firefoxnpm run lint: Run ESLint
The extension uses Manifest V3 with:
chrome_url_overrides.newtab: Overrides the new tab pageweb_accessible_resources: Allows access to bundled assetshost_permissions: Required for API calls to external services
storage: Save dashboard configurationstabs: Required for new tab overridehttp://*/*andhttps://*/*: Access external APIs
- Check browser console for errors
- Verify API credentials are correct
- Ensure network requests are not blocked
- Clear browser cache and reload
- Export your configuration before troubleshooting
- Check if widgets are too small (minimum size: 2x2 grid units)
- Ensure all dependencies are installed:
npm install - Check TypeScript errors:
npm run build - Verify Node.js version compatibility
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is licensed under the MIT License.
For issues, questions, or feature requests, please open an issue on the repository.


