A demo project with VIPER architecture

Overview

AQIDemo

What is it?

A demo project with VIPER architecture. All views, Interactors Presenter and routers are in place with their respective folder. Application connects to a web socket for latest AQI data.

App provides live AQI data values for cities on listing and detail page. On detail page we can see historical data of last 30 minutes and last 1 hour (if data is available in local sqllite db ). We need to allow app to run for some time so that app can store data to show historical data.

App Flow

on launch in Scenedelegate router object is created and app flow starts. Interactor connects to websocket using a library Starscream.

on receiving data from socket presenter update values based upon cities in a array.with this array presenteralways provides latest data to views. on every 30 seconds presenter stores latest data to a local sqllite db.

Screenshots

Simulator Screen Shot - iPhone 11 - 2021-11-23 at 10 06 06

Simulator Screen Shot - iPhone 11 - 2021-11-23 at 10 06 29

Simulator Screen Shot - iPhone 11 - 2021-11-23 at 10 06 34

Libraries used :

pod 'Charts'
pod 'Starscream', '~> 4.0.0'

Use of Charts :

Used Chart library to show data in bar charts.

Use of Starscream :

Used Starscream to connect websocket, library simplifies connection to a websocket.

Improved performance :

Performance improvement is done in write operation of sqllite where inserted a bunch of records in one go, instead of individual insert operation.

Gradient view For AQI :

Designed a AQIGradientView with colors of AQI and values , similar to we see in default weather app in ios 15.

Dark Mode support :

App support both light and dark modes.

How to run

git checkout and open project in xcode.

You might also like...
A compiler, assembler and emulator for the QCPU 2 architecture

QCPU CLI A CLI for compiling Q-code, assembling extended QCPU 2 assembly and emulating machine code. Tags @PAGE upper lower @HEADER label argum

Wiggles-iOS - Beautiful Puppy adoption app built to Demonstrate the SwiftUI and MVVM Architecture
Wiggles-iOS - Beautiful Puppy adoption app built to Demonstrate the SwiftUI and MVVM Architecture

Wiggles 🐶 Beautiful Puppy adoption app built to Demonstrate the use of SwiftUI

Rosetta Enforcer is a macOS utility designed to help developers convert Universal Binary application to Single Architecture, vice versa.
Rosetta Enforcer is a macOS utility designed to help developers convert Universal Binary application to Single Architecture, vice versa.

Rosetta Enforcer Rosetta Enforcer is a macOS utility designed to help developers convert Universal Binary application to Single Architecture, vice ver

Arm64 architecture handler - It uses unicorn and libffi to run iOS arm64 binaries on x86_64 macOS

aah arm64 architecture handler. It uses unicorn and libffi to run iOS arm64 binaries on x86_64 macOS, with varying degrees of success. Most things wil

A Swift command line tool for generating your Xcode project
A Swift command line tool for generating your Xcode project

XcodeGen XcodeGen is a command line tool written in Swift that generates your Xcode project using your folder structure and a project spec. The projec

Turbo-iOS base project that's entirely driven from your backend Rails app.

Turbo-iOS base project that's entirely driven from your backend Rails app.

PlayCover is a project that allows you to sideload iOS apps on macOS( currently arm, Intel support will be tested.

PlayCover is a project that allows you to sideload iOS apps on macOS( currently arm, Intel support will be tested.

This project is a minimalistic Pomodoro timer for OS X written in Swift
This project is a minimalistic Pomodoro timer for OS X written in Swift

Minimalistic Pomodoro for OSX This project is a minimalistic Pomodoro timer for OS X written in Swift started by @bengsfort, and substantially enhance

XCode Preview template for UIkit based project.
XCode Preview template for UIkit based project.

SwiftPreview XCode Preview template for UIkit based project. Support custom file template class inherit from UIView and UIViewController. How to use?

Owner
Vivek Agar
Vivek Agar
Create an app using VIPER architecture

How not to get confused with VIPER Implementation This is a demo app to share in swift study group using VIPER Architechture When using VIPER Architec

null 1 Dec 4, 2021
IOS Swift Application using VIPER Architecture

IOS Swift Application using VIPER Architecture. This is a simple design application for E-Commerce using VIPER architecture and CoreData, I prefer using Delegate Protocols rather than Third Party Library such as Rx but at this project I make it as an example on how to using VIPER.The application also support localization.

Mahmoud Salah 0 Dec 1, 2021
A proof of concept of the VIPER architecture

This project contains a proof of concept of the VIPER architecture. For this we are going to make use of the public API tmdb, with which we will implement a search engine, a list and a view detail.

Luis Martínez Zarza 2 Feb 18, 2022
Demo project to sync color changes to an Raspberry Pi Mood Light via iOS/Android

Raspberry Pi Mood Light Demo project to remotely control an Raspberry Pi Mood Light over Bluetooth via iOS and Android. ?? Watch the video Overview In

Ditto 10 Oct 17, 2022
A starter project for Sample Project in Objective C.

A starter project for Sample Project in Objective C.

Zeeshan Haider 31 Jul 31, 2021
Demo of using Metal to render EDR / HDR content on iOS platform

MetalEDR-iOS Demo of using Metal to render EDR/HDR content on iOS platform. How it works This demo uses a hack to activate EDR display on iOS platform

Wutian 38 Oct 24, 2022
iOS's Stocks App clone written in React Native for demo purpose (available both iOS and Android).

FinanceReactNative iOS's Stocks App clone written in React Native for demo purpose (available both iOS and Android). Data is pulled from Yahoo Finance

kf 2k Dec 29, 2022
Demo app to demonstrate native blur capabilities

Blurrable Demo app to demonstrate native blur capabilities. You can customize th

Mariya Pankova 0 Dec 18, 2021
Strucure: I used MVVM with Colusre binging modular architecture : Also I used openweathermap to get all information for current weather as it's easy t

Strucure: I used MVVM with Colusre binging modular architecture : Also I used openweathermap to get all information for current weather as it's easy t

Alaa Azab 0 Oct 7, 2021
A sample app that implements MVVM architecture using Swift, ViewModel, Alamofire

MVVM Architecture Android: Template This repository contains a sample app that implements MVVM architecture using Swift, ViewModel, Alamofire, and etc

null 0 Oct 19, 2021