https://github.com/samn/dynamical-weather-bot
Personalized probabilistic weather digests
https://github.com/samn/dynamical-weather-bot
Last synced: 3 months ago
JSON representation
Personalized probabilistic weather digests
- Host: GitHub
- URL: https://github.com/samn/dynamical-weather-bot
- Owner: samn
- License: mit
- Created: 2026-03-04T19:07:23.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-04-01T13:41:49.000Z (3 months ago)
- Last Synced: 2026-04-04T00:39:20.355Z (3 months ago)
- Language: TypeScript
- Size: 813 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# dynamical-weather-bot
Personalized probabilistic weather digests powered by [dynamical.org](https://dynamical.org) GEFS ensemble data.
Enter a location (browser geolocation or US ZIP code) to get a 72-hour forecast showing temperature, precipitation, wind speed, and cloud cover with uncertainty ranges across 31 ensemble members.
## Prerequisites
- [mise](https://mise.jdx.dev) for toolchain management
## Setup
```sh
mise install # install Node 24 and prek
npm install # install dependencies
prek install # install pre-commit hooks
```
## Development
```sh
npm run dev # start Vite dev server
npm run build # production build
npm run preview # preview production build
```
## Checks
```sh
npm run check # run all checks (fmt, typecheck, lint, test)
npm run fmt # format with oxfmt
npm run fmt:check # check formatting without writing
npm run typecheck # type check with tsc
npm run lint # lint with oxlint
npm test # run tests with vitest (includes coverage)
```
## Deployment
The app deploys to [Cloudflare Workers](https://developers.cloudflare.com/workers/static-assets/) as a static site.
### CI/CD
Pushes to `main` trigger two GitHub Actions workflows:
1. **CI** — runs formatting, typecheck, lint, tests with coverage thresholds, and a production build
2. **Deploy** — runs after CI succeeds, builds and deploys to Cloudflare Workers via `wrangler deploy`
### GitHub Secrets
Add these secrets to the repository (`Settings > Secrets and variables > Actions`):
- **`CLOUDFLARE_API_TOKEN`** — Cloudflare API token with Workers edit permission
- **`CLOUDFLARE_ACCOUNT_ID`** — your Cloudflare account ID
### Manual deploy
```sh
npm run build
npx wrangler deploy
```