A modern, responsive Single Page Application built with Vue 3 and TypeScript that provides real-time weather forecasts.
Live Demo: https://vofronte.github.io/vue-3-weather-forecast/
- City Search: Find any city worldwide with a fast, debounced search and autocompletion.
- Current Weather: Get up-to-the-minute details on temperature, humidity, wind speed, and weather conditions.
- Hourly Forecast: A detailed 24-hour forecast with temperature, conditions, and wind.
- Weekly Forecast: A 7-day weather outlook showing max/min temperatures and weather codes.
- Responsive Design: A clean, mobile-first interface that looks great on any device.
- Robust State Handling: Seamless user experience with skeleton loaders for loading states and clear error messages.
- Framework: Vue 3 (Composition API &
<script setup>) - Language: TypeScript
- Build Tool: Vite
- Styling: UnoCSS (Utility-First CSS Framework) with the
presetWind4preset. - APIs:
- Open-Meteo Weather API for weather data.
- Open-Meteo Geocoding API for city search.
- Code Quality & Tooling:
- Linter: ESLint with
@antfu/eslint-config. - Commit Style: Conventional Commits.
- Git Hooks: Husky, lint-staged, and commitlint for enforcing code standards.
- Linter: ESLint with
- Architecture: Adapted Feature-Sliced Design (FSD).
- Testing: Vitest for fast and reliable unit tests.
- CI/CD: GitHub Actions for automated builds and deployment to GitHub Pages.
To run this project locally, follow these steps:
-
Clone the repository:
git clone https://github.com/vofronte/vue-3-weather-forecast.git cd vue-3-weather-forecast -
Install
pnpm(if you don't have it):npm install -g pnpm
-
Install dependencies:
pnpm install
-
Run the development server:
pnpm dev
The application will be available at
http://localhost:5173.
pnpm dev: Starts the development server.pnpm build: Builds the app for production.pnpm preview: Serves the production build locally.pnpm test: Runs unit tests with Vitest.pnpm commit: Launches Commitizen for guided, conventional commits.
This project is licensed under the MIT License. See the LICENSE file for details.