Material Weather is a compact browser extension popup for checking weather across multiple saved locations. It is built with WXT, Svelte 5, and the Open-Meteo APIs.
°C / °F preferencebun install
Start the Firefox version with hot reload:
bun run dev:firefox
Start the Chromium version:
bun run dev
Both commands open a temporary browser profile with the extension loaded.
Run the Svelte and TypeScript checks:
bun run check
Build a production bundle for Firefox:
bun run build:firefox
Build a production bundle for Chromium:
bun run build
Build output is written to .output/.
Create a Firefox zip for distribution:
bun run zip:firefox
Create a Chromium zip:
bun run zip
Generated archives are written to .output/.
src/
├── assets/
│ └── tailwind.css # Tailwind entry and popup theme tokens
├── entrypoints/
│ └── popup/
│ ├── App.svelte # Popup router bootstrap
│ └── main.ts # Popup entry and theme setup
└── lib/
├── pages/
│ ├── landing.svelte # First-run location setup
│ ├── locations.svelte # Saved locations management
│ └── weather.svelte # Forecast view
├── routes.ts # Popup route map
├── stores.ts # WXT storage items
├── theme.ts # Theme helpers
├── types/ # Shared TypeScript types
└── weather.ts # Open-Meteo API calls and weather helpers
| Framework | WXT |
| UI | Svelte 5 with runes |
| Styling | Tailwind CSS |
| Storage | @wxt-dev/storage |
| Icons | @lucide/svelte |
| Weather API | Open-Meteo + Geocoding API |
| Weather icon set | Google weather icons |
| Package manager | Bun |
No account or API key is required. The extension makes direct requests to:
https://geocoding-api.open-meteo.com for city searchhttps://api.open-meteo.com for forecast dataSaved locations, popup settings, and forecast cache entries are stored locally in the browser via storage.local. No user account data is collected and nothing is sent anywhere except the weather API requests above.