Skip to content

mamadfrhi/Germany-Corona-Light

Repository files navigation

Germany Corona Light 🇩🇪🚦🦠

Swift RxSwift build

Banner

Overview

Germany Corona Light is a meticulously designed iOS app that elegantly displays the current status of COVID-19 restrictions and alerts in Germany using a traffic light metaphor. Built with cutting-edge technologies and clean architecture, it serves as a perfect example of a scalable, user-focused application.

Features 🚀

  • Real-Time Location-Based Status: Displays COVID-19 rules and restrictions based on your location.
  • Localization: Fully localized for English 🇬🇧 and German 🇩🇪.
  • Interactive UI: Intuitive design with smooth animations and visual feedback.
  • Extensibility: Easily adaptable for other states in Germany.

System Architecture

Designed with scalability and maintainability in mind, the architecture employs MVVM+C with RxSwift and incorporates multiple design patterns for an optimal codebase.

System Architecture

Installation ✅

  1. Download or Clone the project:
$ git clone https://github.com/mamadfrhi/Germany-Corona-Light.git
  1. Install dependencies using CocoaPods:
$ cd .../project_directory/Corona_Light
$ pod update
  1. Open Corona_Light.xcworkspace and run the app:
Cmd + R

Testing 🔁

Simulate Location

  1. Select the iOS simulator.
  2. Navigate to Feature > Location > Custom Location....
  3. Enter the following:
    • Lat: 49.763138
    • Long: 10.697828

Test Localization

Switch to German in the simulator:

Settings > General > Language & Region > Deutsch

Code Style 🛠

This project demonstrates expertise in clean architecture and SOLID principles, emphasizing scalability and maintainability.

Design Patterns ⚙️

  • State
  • Template
  • Coordinator
  • Singleton
  • Adapter
  • Delegate
  • Decorator
  • Facade

Principles 💎

  • Object-Oriented Programming (OOP)
  • Protocol-Oriented Programming (POP)
  • SOLID Principles
  • Clean Code

Frameworks Used ➕

Native 📱

  • UIKit
  • CoreLocation
  • NotificationCenter

Pods 🧑‍💻

Main Classes Diagrams

The core logic of the application is illustrated below:

alt text

Screenshots 📱

English 🇬🇧

German 🇩🇪

Video 🎥

Watch the app in action: Watch Video

API Documents 📄

Click here to see API docs

Extensibility 🔁🇩🇪

To use this app for other German states:

  1. Open .../Resources/Info.plist.
  2. Locate stateName = Bayern;.
  3. Replace Bayern with the desired state's name (in German).

Example:

  • ❌ English: Bavaria
  • ✅ German: Bayern

Contribution 💖

Contributions are welcome! Please feel free to discuss ideas or submit pull requests.

Resources

You can download the app design in Adobe XD here.

Releases

No releases published

Packages

No packages published