A Chrome extension that replaces the new tab page with a minimalist dashboard. Shows time, weather, upcoming Google Calendar events, a daily Stoic quote, a countdown timer, and a quick note — all over a full-screen Unsplash background.
Double-click anywhere to toggle the UI overlay on/off.

From the monorepo root:
pnpm install
Create apps/extension/.env:
VITE_DEV_CLIENT_ID=your_google_oauth_client_id
cd apps/extension
pnpm dev
# Dev server at http://localhost:5173
Note: The Vite dev server is useful for iterating on UI. To test as an actual new tab override, load the built extension in Chrome (see below).
pnpm build # Outputs to dist/
chrome://extensionsapps/extension/dist/ folderAfter code changes, run pnpm build again and click the refresh icon on the extension card in chrome://extensions.
| Command | Description |
|---|---|
pnpm dev |
Start Vite dev server at http://localhost:5173 |
pnpm build |
Type-check + production build → dist/ |
pnpm pack |
Build and zip dist/ → extension-release.zip |
pnpm lint |
Run ESLint |
The extension deploys to the Chrome Web Store via GitHub Actions on every extension@* tag push.
EXTENSION_ID — Chrome Web Store extension ID (from the store URL)CLIENT_ID — Google OAuth client ID (for Web Store API)CLIENT_SECRET — Google OAuth client secretREFRESH_TOKEN — Google OAuth refresh tokengit tag extension@2.0.1
git push origin extension@2.0.1
GitHub Actions runs .github/workflows/deploy.yml, which builds with pnpm nx run extension:pack (produces extension-release.zip) and uploads to the Chrome Web Store.
pnpm pack
# Creates extension-release.zip from dist/
Upload extension-release.zip manually at chrome.google.com/webstore/devconsole.
Click the extension icon to open the settings popup:
| Setting | Description |
|---|---|
| Background tags | Comma-separated Unsplash search tags |
| Location | City name or auto-detect via GPS or IP |
| Calendars | Select which Google Calendars to display |
| Countdown target | Date to count down to |
Settings sync across devices via Chrome Storage Sync.
| Permission | Reason |
|---|---|
storage |
Persist settings via Chrome Storage Sync |
geolocation |
Auto-detect location for weather |
identity |
Google Calendar OAuth login |
| Tool | Purpose |
|---|---|
| React 19 | UI framework |
| Vite 7 | Build tool and dev server |
| CRXJS | Chrome extension Vite plugin |
| Tailwind CSS 4 | Styling |
| Lucide React | Icons |
| date-fns | Date formatting |
| TypeScript | Language |
| API | Used for | Auth |
|---|---|---|
| Open-Meteo | Weather data | None (free) |
| BigDataCloud | Reverse geocoding | None (free tier) |
Hub API (apps/api) |
Background images | None |
| stoic.tekloon.net | Daily Stoic quotes | None |
| Google Calendar API | Calendar events | OAuth 2.0 |
See privacy-policy.md.