saulyte
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data β all from the browser, and deployed in milliseconds.
Viewing readonly version of main branch: v125View latest version
A dense, mobile-first weather website designed for photographers to quickly check upcoming weather conditions with focus on cloud cover, visibility, and lighting conditions.
- π± Stable grid layout - Consistent time positioning across all devices
- π Detailed weather data - Cloud layers (low/mid/high), surface pressure, visibility
- π¨ Toned-down colors - Subtle gradients with colored left borders for easy scanning
- β‘ Visual cloud layers - Three-bar visualization showing cloud distribution by altitude
- π Golden hour highlighting - Subtle glow effects for optimal lighting times
- π Photography scoring - 1-10 rating system with visual progress bars
- π Smart location - Auto-detects location with city/area search and coordinate override
- π― Today highlighting - Special border for current day
- π Comprehensive data - Temperature, total clouds, pressure, visibility in each card
- π Minimizable past days - Auto-minimizes past weather with toggle to show/hide details
Each hourly card shows:
- Time - Consistent positioning at top
- Cloud Coverage % - FRONT AND CENTER in large, bold text
- Condition emoji - Quick visual reference below cloud %
- Score bar - Photography quality (1-10) visual indicator
- Temperature - In Β°C (degrees Celsius)
- Cloud layers - Visual bars showing low/mid/high cloud coverage
- Surface pressure - In hPa (hectopascals) with units
- Visibility - In km (kilometers) with units, when available
- Golden hour indicator - Special marking for optimal times
- Cloud % prominence - Main metric displayed in large, bold font
- Proper units - All measurements include units (Β°C, hPa, km)
- No rain emoji - Uses cloud emoji for poor conditions instead
- Clear hierarchy - Cloud coverage β condition β supporting data
- Consistent layout - Same data positioning across all cards
- Responsive breakpoints: 6 β 8 β 12 β 24 columns based on screen size
- Fixed card heights - Consistent 120px for uniform appearance
- Toned-down palette - Subtle backgrounds with accent borders
- Visual hierarchy - Time always at top, data in consistent positions
Uses Open-Meteo KNMI API with official SDK:
- Hourly: temperature, cloud cover (total, low, mid, high), surface pressure, visibility
- Daily: sunrise, sunset times
- Timezone: Auto-detected
- Model: KNMI Seamless for high accuracy
βββ backend/
β βββ index.ts # Hono server with Open-Meteo SDK integration
βββ frontend/
β βββ index.html # Main page
β βββ index.tsx # Dense React app
β βββ style.css # Mobile-optimized styles
βββ README.md
The main endpoint serves the weather dashboard. The API automatically detects location or allows manual coordinates input.
- Photography Score: 1-10 rating based on cloud cover, visibility, and lighting conditions
- Golden Hour Detection: Automatically identifies optimal lighting times (Β±1 hour from sunrise/sunset)
- 7-Day Forecast: Hourly weather data for the next week
- Location Detection: Auto-detects your location or allows city/area search and coordinate input
- Mobile Responsive: Works great on all devices
- Past Day Minimization: Past weather days are automatically minimized to show just hour + cloud percentage, with toggle to expand for full details
- Excellent (βοΈ): <20% cloud cover - Perfect for most photography
- Very Good (π€οΈ): 20-40% cloud cover - Great conditions with some interesting clouds
- Good (β ): 40-60% cloud cover - Good for dramatic skies
- Fair (βοΈ): 60-80% cloud cover - Overcast but workable
- Poor (π§οΈ): >80% cloud cover - Limited lighting options
- Golden Hour (π ): Special highlighting for optimal portrait/landscape times
GET /- Main dashboardGET /api/weather?lat={lat}&lon={lon}- Weather data with photography insightsGET /api/location- Auto-detect location from IPGET /api/geocode?q={query}- Search for locations by city/area name