Weather Dashboard
Operations & IoT · React + Node (Express) · 17 @molecule/* packages
Weather.com-like app with forecasts, alerts, saved locations, and historical data — with built-in Stripe-backed subscription tiers
Try it
Opens instantly. Runs on sample data, so changes reset on reload.
What is inside
Screens (13)
- Landing
/ - Login
/login - Signup
/signup - ForgotPassword
/forgot-password - ResetPassword
/reset-password - Dashboard
/dashboard(signed in) - LocationDetail
/location/:id(signed in) - Locations
/locations(signed in) - Radar
/radar(signed in) - Alerts
/alerts(signed in) - Settings
/settings(signed in) - Trends
/trends(signed in) - Compare
/compare(signed in)
Data model (11 tables)
- alert_preferences — id, user_id, location_id, enabled, min_severity, kinds, channels, quiet_hours, …
- alerts — id, location_id, kind, title, body, severity, severity_rank, source, …
- devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
- dismissed_alerts — id, alert_id, user_id, dismissed_at
- forecast_current — id, location_id, observed_at, temperature, feels_like, condition, icon, humidity, …
- forecast_daily — id, location_id, day_at, temp_high, temp_low, condition, icon, precipitation_pct, …
- forecast_hourly — id, location_id, hour_at, temperature, feels_like, condition, icon, precipitation_pct, …
- history_observations — id, location_id, observed_date, temp_high, temp_low, temp_avg, precipitation_mm, precipitation_type, …
- locations — id, user_id, name, region, address, latitude, longitude, timezone, …
- notifications — id, user_id, type, title, body, href, read, created_at
- payments — id, createdAt, updatedAt, userId, transactionId, productId, platformKey, data, …
API (4 handlers)
- alerts
api/src/handlers/alerts.ts - forecasts
api/src/handlers/forecasts.ts - history
api/src/handlers/history.ts - locations
api/src/handlers/locations.ts
Subscription tiers
free / pro / team — gated by: maxAlerts, maxForecasts, maxHistory, maxLocations, advancedFeatures, canExport, retentionDays
Built from 17 @molecule/* packages
@molecule/api-cache-redis@molecule/api-cron-node-cron@molecule/api-database-postgresql@molecule/api-email-templates@molecule/api-emails-mailgun@molecule/api-entitlements@molecule/api-geolocation-nominatim@molecule/api-payments-stripe@molecule/api-push-notifications-web-push@molecule/api-resource-payment@molecule/api-resource-user@molecule/api-weather-open-meteo@molecule/app-billing-react@molecule/app-charts@molecule/app-command-palette@molecule/app-data-table@molecule/app-maps
Required secrets
DATABASE_URLPostgreSQL connection string
The @molecule/* packages are Apache-2.0. The app you build from this template is yours to export and self-host. Licensing