Neo Cast is a neo-brutalist weather dashboard for Indian cities, built with React and Vite. It provides current conditions and forecast intelligence in a fast and responsive UI.
- Current weather with detailed metrics
- 7-day forecast and 24-hour timeline
- Air quality insights (AQI, PM2.5, PM10, gases)
- Smart advisories from live weather patterns
- Outdoor activity planner for best upcoming time slots
- Favorites and recent searches with persistence
- Geolocation support with fallback behavior
- Custom alert rules and browser notifications
- Unit switching between Celsius and Fahrenheit
- React 19
- Vite 8
- Tailwind CSS 4
- Open-Meteo APIs (forecast, geocoding, reverse geocoding, air quality)
src/
App.jsx
main.jsx
index.css
assets/
weather-logo.svg
components/
ActivityPlanner.jsx
AirQualityPanel.jsx
AlertCenter.jsx
CurrentWeather.jsx
ErrorMessage.jsx
Forecast.jsx
HourlyForecast.jsx
SearchBar.jsx
TrendChart.jsx
WeatherInsights.jsx
utils/
weather.js
- Node.js 18+
- npm 9+
npm installnpm run devApp runs by default at http://localhost:5173.
npm run dev- Start local dev servernpm run build- Create production buildnpm run preview- Preview production build locallynpm run lint- Run ESLint checks
- Geocoding API:
https://geocoding-api.open-meteo.com/v1/search - Reverse Geocoding API:
https://geocoding-api.open-meteo.com/v1/reverse - Forecast API:
https://api.open-meteo.com/v1/forecast - Air Quality API:
https://air-quality-api.open-meteo.com/v1/air-quality
- Geolocation API for "Use My Location"
- Notifications API for active weather alerts
- Clipboard API for copyable weather reports
- Local Storage for favorites, recents, and alert rules
npm run buildThe production output is generated in dist/ and can be deployed to any static hosting provider.
- If location fails, allow location permission in browser settings.
- If notifications do not appear, enable notification permission for the site.
- If city results fail, verify internet access and try another Indian city spelling.
This project is for educational and portfolio use.