https://github.com/ryanlarge13/native-weather
Expo Router and Open Meteo join forces
https://github.com/ryanlarge13/native-weather
Last synced: 8 months ago
JSON representation
Expo Router and Open Meteo join forces
- Host: GitHub
- URL: https://github.com/ryanlarge13/native-weather
- Owner: RyanLarge13
- Created: 2025-07-17T03:03:02.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2025-07-18T03:08:42.000Z (12 months ago)
- Last Synced: 2025-08-31T12:41:44.201Z (10 months ago)
- Language: TypeScript
- Size: 25.1 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ๐ค๏ธ Expo Weather App
[](https://expo.dev/)
[](https://reactnative.dev/)
[](LICENSE)
[](https://www.typescriptlang.org/)
[](https://www.sqlite.org/)
[](#)
---
## ๐ Table of Contents
- [๐ฑ Features](#-features)
- [๐ Tech Stack](#-tech-stack)
- [๐ง Architecture Overview](#-architecture-overview)
- [๐ Project Structure Highlights](#-project-structure-highlights)
- [๐ ๏ธ Setup & Usage](#๏ธ-setup--usage)
- [๐งช Notes](#-notes)
- [๐ธ Screenshots](#-screenshots)
- [๐ Future Improvements](#-future-improvements)
- [๐ License](#-license)
---
## ๐ฑ Features
- ๐ Auto-detects device location using permissions
- ๐๏ธ Supports static city selection from `cities.json`
- ๐ฆ๏ธ Shows:
- Current weather conditions
- 24-hour hourly forecast
- 7-day forecast
- ๐จ Theme support (orange, blue, green)
- ๐พ SQLite-based settings storage (theme, temperature unit, accuracy)
- ๐ Animated transitions using Moti
---
## ๐ Tech Stack
- [Expo](https://expo.dev/)
- [React Native](https://reactnative.dev/)
- [Moti](https://moti.fyi/)
- [expo-location](https://docs.expo.dev/versions/latest/sdk/location/)
- [expo-sqlite](https://docs.expo.dev/versions/latest/sdk/sqlite/)
- TypeScript
---
## ๐ง Architecture Overview
The app revolves around the `Index` screen which:
- Initializes app state
- Loads saved settings from SQLite
- Requests and handles location permissions
- Loads weather data from local dummy data or (optionally) an API
- Renders:
- Current weather (``)
- Weather details (``)
- Hourly forecast (``)
- Weekly forecast (``)
---
## ๐ Project Structure Highlights
```
.
โโโ assets/
โ โโโ images/icons/ # Weather icons
โ โโโ cities.json # City coordinates map
โโโ components/
โ โโโ Today.tsx
โ โโโ TodaysInfo.tsx
โ โโโ Hourly.tsx
โ โโโ Day.tsx
โโโ hooks/
โ โโโ useTabAnimation.ts
โโโ utils/
โ โโโ api.ts
โ โโโ dayStringMap.ts
โ โโโ weatherCodes.ts
โ โโโ dummyData.ts
โโโ index.tsx # Main screen logic
```
---
## ๐ ๏ธ Setup & Usage
### Prerequisites
- Node.js
- Expo CLI
### Getting Started
```bash
git clone https://github.com/yourusername/weather-app.git
cd weather-app
npm install
npx expo start
```
- Ensure your emulator or mobile device has **location services enabled**
- The local SQLite database (`myApp.db`) should contain a `Settings` table
---
## ๐งช Notes
- Weather data is loaded from `utils/dummyData.ts`
> You can replace `M_FetchWeather()` logic to call a real API (like OpenWeatherMap)
- If location access is denied, the app falls back to manually selected cities
---
## ๐ธ Screenshots
> _(Add screenshots here if available)_
> For example:
>
> - 
> - 
---
## ๐ Future Improvements
- ๐ Replace dummy data with real-time API integration
- ๐งญ Fallback handling if location services fail
- ๐ Add user-facing Settings screen
- ๐ Multi-language (i18n) support
---
## ๐ License
This project is licensed under the [MIT License](LICENSE).