This is a solution to the Weather app challenge on Frontend Mentor. Frontend Mentor challenges help you improve your coding skills by building realistic projects.
- Search for weather information by entering a location in the search bar
- View current weather conditions including temperature, weather icon, and location details
- See additional weather metrics like "feels like" temperature, humidity percentage, wind speed, and precipitation amounts
- Browse a 7-day weather forecast with daily high/low temperatures and weather icons
- View an hourly forecast showing temperature changes throughout the day
- Switch between different days of the week using the day selector in the hourly forecast section
- Toggle between Imperial and Metric measurement units via the units dropdown
- Switch between specific temperature units (Celsius and Fahrenheit) and measurement units for wind speed (km/h and mph) and precipitation (millimeters) via the units dropdown
- View the optimal layout for the interface depending on their device's screen size
- See hover and focus states for all interactive elements on the page
Features
- Search for locations with real-time suggestions
- Change unit systems (imperial, metric)
Accessibility
- Responsive accross different screen sizes
- Added custom indicator when interactive elements focused
- OpenMeteoAPI - Public API for weather forecast data
- HTML5 – Semantic structure
- Vue – Fine-grained reactivity
- PrimeVue – Matured component UI with accessibility in mind
- TailwindCSS – Utility-first CSS for fast development
- TypeScript - Interactivity and application logic
- Vite - Fast development server, production build and easy configuration.
- Mobile-first workflow for better performance on smaller devices
- Accessibility guided by ARIA Authoring Practices Guide (APG).
Install the following:
- Git (latest version)
- Node.js (latest LTS recommended)
- pnpm (latest version)
git clone https://github.com/haquanq-frontendmentor/weather-app.git
cd weather-app
pnpm install
pnpm dev
Deployed to Github Pages via Github Action.
