The Ultimate Snowboarder's Weather App
π Try it: PowderCast
A high-performance web application for US-based snowboarders that leverages the National Weather Service (NWS) API to deliver hyper-local mountain weather data.
- π Smart Autocomplete Search: Search across 22+ major US ski resorts with instant results
- ποΈ Dual-Point Forecasting: Toggle between base and summit weather conditions
- π The "Big Three" Metrics:
- π¨οΈ Snow Accumulation (24h & 7-day totals)
- π¨ Wind Gusts (with lift closure warnings)
- ποΈ Visibility & Cloud Cover
| Feature | Description |
|---|---|
| βοΈ Powder Alert | Triggered when 6"+ of snow in 24 hours |
| βοΈ Bluebird Indicator | Clear skies (<25% cloud) + calm winds (<15 mph) |
| π Snow Quality | Predicts "Champagne Powder", "Sierra Cement", "Ice Coast", etc. |
| π₯Ά Frostbite Warning | Wind chill alerts with safety recommendations |
| πΉ Live Webcams | Direct links to resort camera feeds |
Temperature-based snow quality predictions:
- < 15Β°F: Champagne Powder βοΈ (Ultra light/dry)
- 15Β°F - 26Β°F: Premium Packed π (Standard dry snow)
- 27Β°F - 34Β°F: Sierra Cement πͺ (Heavy, wet, great for jumps)
- > 34Β°F: Mashtatoes/Slush βοΈ (Spring conditions)
- Node.js 20.19+ or 22.13+ (recommended: 22.13+) and Yarn
- NVM (Node Version Manager) - Install instructions
- macOS/Linux (or Windows with WSL)
# Navigate to project directory
cd /Applications/MAMP/htdocs/weather-snow-1
# Switch to the correct Node version (uses .nvmrc)
nvm use
# If not installed, install Node 22.13.0
# nvm install 22.13.0
# Install dependencies
yarn install
# Setup database
yarn db:setup
# Seed resort data (22 major US resorts)
yarn db:seed
# Start development server
yarn devThe app will be available at http://localhost:3000
This project includes a GitHub Actions workflow that automatically deploys to GitHub Pages on every push to the main branch.
-
Push your code to GitHub:
git init git add . git commit -m "Initial commit" git branch -M main git remote add origin https://github.com/YOUR_USERNAME/YOUR_REPO_NAME.git git push -u origin main
-
Enable GitHub Pages:
- Go to your repository on GitHub
- Navigate to Settings β Pages
- Under Source, select GitHub Actions
-
Trigger deployment:
- The workflow will run automatically on push to
main - Or manually trigger it from Actions tab β Deploy to GitHub Pages β Run workflow
- The workflow will run automatically on push to
-
Access your site:
- Your site will be available at:
https://YOUR_USERNAME.github.io/YOUR_REPO_NAME/ - Wait 2-3 minutes for the first deployment to complete
- Your site will be available at:
To build and deploy manually:
# Build static export
yarn build
# The output will be in the ./out directory
# Upload contents to your hosting provider-
API Routes: GitHub Pages is static-only. API routes (
/api/*) won't work in production. Consider using:- API routes on Vercel/Netlify for backend
- Client-side fetching directly from NWS API
- Serverless functions on alternative platforms
-
Database: The SQLite database is included in the build, but data updates require rebuilding
-
basePath: The workflow automatically handles the base path for repository-based GitHub Pages
| Technology | Purpose |
|---|---|
| Next.js 15 | React framework with App Router |
| TypeScript | Type-safe development |
| Tailwind CSS | Utility-first styling with glassmorphism |
| Headless UI | Accessible autocomplete component |
| better-sqlite3 | Local SQLite database for resorts |
| NWS API | Free, official US weather data |
/weather-snow-1
βββ app/
β βββ api/
β β βββ weather/route.ts # NWS API proxy
β β βββ resorts/route.ts # Resort search API
β βββ layout.tsx # Root layout
β βββ page.tsx # Main dashboard
β βββ globals.css # Tailwind + custom styles
βββ components/
β βββ SearchBar.tsx # Autocomplete search
β βββ ElevationToggle.tsx # Base/Summit switch
β βββ SnowAccumulationCard.tsx # Snow metrics
β βββ WindGustsCard.tsx # Wind data & warnings
β βββ VisibilityCard.tsx # Visibility & cloud cover
β βββ SnowQualityTag.tsx # Quality prediction
β βββ PowderAlert.tsx # 6"+ snow badge
β βββ BluebirdIndicator.tsx # Perfect day banner
β βββ FrostbiteWarning.tsx # Cold weather alerts
β βββ WebcamViewer.tsx # Webcam links
βββ hooks/
β βββ useNWSWeather.ts # Main weather hook
β βββ useResortSearch.ts # Search functionality
βββ lib/
β βββ database.ts # SQLite integration
β βββ nwsTypes.ts # TypeScript interfaces
β βββ unitConversion.ts # Metric β Imperial
β βββ snowLogic.ts # Quality calculations
βββ scripts/
β βββ setup-db.js # Database initialization
β βββ seed-db.js # Resort data seeding
βββ powdercast.db # SQLite database
California (Tahoe & Mammoth)
- Palisades Tahoe, Northstar, Heavenly, Kirkwood, Mammoth Mountain
Colorado (Summit County & Aspen)
- Vail, Breckenridge, Keystone, A-Basin, Copper Mountain, Aspen Snowmass
Utah (Park City & Wasatch)
- Park City, Deer Valley, Alta, Snowbird
Wyoming
- Jackson Hole
Montana
- Big Sky
Vermont
- Killington, Stowe
New Hampshire
- Bretton Woods
Washington
- Stevens Pass, Crystal Mountain
GET /api/weather?lat=39.27&lon=-120.12GET /api/resorts?q=Northstar // Search by name
GET /api/resorts?id=northstar-ca // Get by ID
GET /api/resorts // Get all resortsmountain: {
navy: '#0F172A', // Background
ice: '#22D3EE', // Primary (cyan-400)
powder: '#FFFFFF', // Text
danger: '#EF4444', // Wind alerts
warning: '#F59E0B', // Caution
success: '#10B981' // Good conditions
}.glass-card {
@apply bg-white/10 backdrop-blur-md border border-white/20 rounded-xl;
}| Command | Description |
|---|---|
yarn dev |
Start development server |
yarn build |
Build for production |
yarn start |
Start production server |
yarn lint |
Run ESLint |
yarn db:setup |
Initialize database |
yarn db:seed |
Seed resort data |
Create .env.local for custom configuration:
# No API keys needed - NWS is free!
NEXT_PUBLIC_APP_NAME=PowderCast| Priority | Feature | Status |
|---|---|---|
| P0 | NWS API Integration | β Complete |
| P0 | Resort Database (SQLite) | β Complete |
| P0 | Smart Search | β Complete |
| P0 | Base/Summit Toggle | β Complete |
| P0 | Big Three Metrics | β Complete |
| P1 | Snow Quality Logic | β Complete |
| P1 | Powder Alert | β Complete |
| P1 | Wind/Frostbite Warnings | β Complete |
| P1 | Bluebird Indicator | β Complete |
| P1 | Webcams | β Complete |
| P2 | Offline Caching | β Complete |
| P2 | 7-Day Forecast | β Complete |
- Offline Support: LocalStorage caching (1-hour validity)
- Accessibility: ARIA labels, high-contrast mode
- Performance: <2s initial load, <500ms API response
- Mobile-First: Responsive design for all screen sizes
# Reset database
rm powdercast.db
yarn db:setup
yarn db:seed- Check internet connection
- NWS has rate limits (be reasonable)
- Some locations may not have grid data
# Rebuild type definitions
yarn buildThis project is for educational purposes. Weather data provided by the National Weather Service (public domain).
- National Weather Service: Free, reliable weather API
- US Ski Resorts: For inspiring this project
- Snowboarders Everywhere: Keep shredding! π
Built with βοΈ by riders, for riders.
PowderCast v1.1 - Because every startup gets one miracle, and it's not the UI stack.
Made by @greenido