A modern, full-stack weather forecast application built with Nuxt 3 and Vue 3, featuring real-time weather data, beautiful UI, and internationalization support. The application provides both current weather conditions and detailed forecasts for locations worldwide.
- 🌍 Real-time weather data display
- 📱 Responsive design for all devices
- 🌙 Dark/Light mode support
- 🌐 Multi-language support (i18n)
- 📊 Detailed weather forecasts
- 🎨 Beautiful UI with Tailwind CSS
- 🔍 Location-based weather search
- 📈 Interactive weather charts
- 🎯 Accurate weather predictions
- 🎭 Smooth animations and transitions
- 🔄 Dual backend support (TypeScript & Python)
- ⚡ Fast API responses
- 🔒 Rate limiting protection
- 💾 Response caching
- 🌐 Multi-language support (28 Languages)
- 📍 Location search by city or coordinates
- 🏥 Health check endpoint
- 🔍 Comprehensive error handling
- Framework: Nuxt 3
- UI Library: Vue 3
- Styling: Tailwind CSS
- State Management: Pinia
- Icons: Font Awesome & Heroicons
- Internationalization: Vue I18n
- 3D Graphics: Three.js
- TypeScript: For type safety and better development experience
- TypeScript API: Nuxt Server API
- Python API: Flask
- Caching: Redis
- Rate Limiting: Custom middleware
- Error Handling: Comprehensive error management
- Node.js (v16 or higher)
- Python 3.8+ (for Python backend)
- npm or yarn
- Redis (for caching)
- Clone the repository:
git clone https://github.com/89CF/weather-app.git
cd weather-forecast- Install frontend dependencies:
npm install
# or
yarn install- Set up Python environment (for Python backend):
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
pip install -r requirements.txt- Create a
.envfile in the root directory:
# Frontend
NUXT_PUBLIC_API_BASE=http://localhost:3000/api
# Backend
WEATHER_API_KEY=your_api_key_here
REDIS_URL=redis://localhost:6379- Start the development server:
# Frontend
npm run dev
# or
yarn dev
# Backend (Python)
python server/app.py- Open http://localhost:3000 in your browser.
weather-forecast/
├── assets/ # Static assets
├── components/ # Vue components
├── composables/ # Vue composables
├── layouts/ # Page layouts
├── middleware/ # Route middleware
├── pages/ # Application pages
├── plugins/ # Vue plugins
├── public/ # Public static files
├── server/ # Backend implementation
│ ├── api/ # API endpoints
│ ├── utils/ # Utility functions
│ └── middleware/ # Backend middleware
├── stores/ # Pinia stores
├── types/ # TypeScript types
└── utils/ # Utility functions
The app supports multiple languages. To add a new language:
- Add your translations in the
i18ndirectory - Update the
i18n.config.tsfile - Add the language to the language selector component
- Colors and themes can be customized in
tailwind.config.ts - Layout components can be modified in the
layoutsdirectory - Global styles can be adjusted in the
assetsdirectory - API endpoints can be configured in
nuxt.config.ts
# Development
npm run dev
# Build for production
npm run build
# Preview production build
npm run preview
# Lint code
npm run lint
# Fix linting issues
npm run lint:fixContributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Weather data provided by WeatherApi
- Icons by Font Awesome and Heroicons
- Built with Nuxt 3 and Vue 3
- Backend powered by Flask

