Skip to content

pablocg11/Tempora

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

14 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Tempora πŸŒβ˜€οΈ

Tempora is a SwiftUI-based weather application built with Clean Architecture principles. It allows users to search for weather conditions in various cities, save cities to their favorites list, and store city data in a cache for quick access.

The app integrates with OpenWeatherAPI/2.5 (which collects and processes weather data from various sources such as global and local weather models, satellites, radars, and a vast network of weather stations) and is limited to 1000 requests per day on the free plan.

Features ✨

  • City Search: Search for cities by name to view their weather conditions. 🌍
  • Location-based Default City: The app now requests location permissions from users to automatically set their current city as the default city for weather updates. πŸŒπŸ“
  • Favorite Cities: Add cities to a favorites list and check their weather at any time. ⭐
  • Weather Information: Get detailed weather reports including temperature, description, and weather icons. 🌀️
  • Temperature Unit Toggle: Switch between Celsius and Fahrenheit for temperature displays. 🌑️

Tech Stack πŸ› οΈ

  • SwiftUI: For building the user interface using declarative syntax. πŸ–₯️
  • MVVM: Architecture pattern used for separating concerns and improving testability. 🧹
  • Clean Architecture: Ensures maintainability by following principles of separation of concerns. βš™οΈ
  • Async/Await: Handles asynchronous network requests for fetching weather data. ⏳
  • SwiftData: Used for persisting data, particularly for storing favorite cities and cached weather information. πŸ—„οΈ
  • OpenWeatherAPI: Fetches weather data from an external API to provide up-to-date information. 🌧️
  • CoreLocation: Requests location permissions from users to set their current city as the default for weather updates, leveraging the CoreLocation framework for accurate location services. πŸ“
  • Cache Layer: Data is cached using a two-layer caching system (in-memory cache and persistent storage) for faster retrieval. πŸ”„
  • Dependency Injection: Manages app components and services using Dependency Injection, ensuring flexibility and testability. βš™οΈ

About

a SwiftUI-based weather app built with Clean Architecture principles. Search for cities, view detailed weather conditions, save favorites, and cache data for quick access. Features include location-based weather, temperature unit toggling, and seamless offline support.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages