diff --git a/TraccarClient.xcodeproj/project.pbxproj b/TraccarClient.xcodeproj/project.pbxproj
index ea4f213af996a5fb4f3083317de4aa46ffe94fa0..c8befd0ec26b972734b9db0dad227d94032ffef8 100644
--- a/TraccarClient.xcodeproj/project.pbxproj
+++ b/TraccarClient.xcodeproj/project.pbxproj
@@ -100,6 +100,10 @@
 		53F10AEC2AF06556004D0529 /* UIImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53F10AEB2AF06556004D0529 /* UIImage.swift */; };
 		53F10AEE2AF06785004D0529 /* UITextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53F10AED2AF06785004D0529 /* UITextField.swift */; };
 		53F10AF02AF06906004D0529 /* UIImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53F10AEF2AF06906004D0529 /* UIImageView.swift */; };
+		53F10AF42AF0F306004D0529 /* ConnectViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53F10AF22AF0F306004D0529 /* ConnectViewController.swift */; };
+		53F10AF52AF0F306004D0529 /* ConnectViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 53F10AF32AF0F306004D0529 /* ConnectViewController.xib */; };
+		53F10AF72AF101DB004D0529 /* UIColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53F10AF62AF101DB004D0529 /* UIColor.swift */; };
+		53F10AF92AF101EC004D0529 /* Color.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53F10AF82AF101EC004D0529 /* Color.swift */; };
 		5E394EBE28A9CC7600396F33 /* BatteryStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E394EBD28A9CC7600396F33 /* BatteryStatus.swift */; };
 		5E716A271F63A0B100A2DBC3 /* DistanceCalculator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E716A261F63A0B100A2DBC3 /* DistanceCalculator.swift */; };
 		5E716A291F63A45A00A2DBC3 /* RequestManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E716A281F63A45A00A2DBC3 /* RequestManager.swift */; };
@@ -247,6 +251,10 @@
 		53F10AEB2AF06556004D0529 /* UIImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIImage.swift; sourceTree = "<group>"; };
 		53F10AED2AF06785004D0529 /* UITextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UITextField.swift; sourceTree = "<group>"; };
 		53F10AEF2AF06906004D0529 /* UIImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIImageView.swift; sourceTree = "<group>"; };
+		53F10AF22AF0F306004D0529 /* ConnectViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConnectViewController.swift; sourceTree = "<group>"; };
+		53F10AF32AF0F306004D0529 /* ConnectViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ConnectViewController.xib; sourceTree = "<group>"; };
+		53F10AF62AF101DB004D0529 /* UIColor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIColor.swift; sourceTree = "<group>"; };
+		53F10AF82AF101EC004D0529 /* Color.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Color.swift; sourceTree = "<group>"; };
 		5E394EBD28A9CC7600396F33 /* BatteryStatus.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BatteryStatus.swift; sourceTree = "<group>"; };
 		5E716A261F63A0B100A2DBC3 /* DistanceCalculator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DistanceCalculator.swift; sourceTree = "<group>"; };
 		5E716A281F63A45A00A2DBC3 /* RequestManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RequestManager.swift; sourceTree = "<group>"; };
@@ -430,6 +438,8 @@
 				53F10AEB2AF06556004D0529 /* UIImage.swift */,
 				53F10AED2AF06785004D0529 /* UITextField.swift */,
 				53F10AEF2AF06906004D0529 /* UIImageView.swift */,
+				53F10AF62AF101DB004D0529 /* UIColor.swift */,
+				53F10AF82AF101EC004D0529 /* Color.swift */,
 			);
 			name = helpers;
 			sourceTree = "<group>";
@@ -527,6 +537,7 @@
 		532683C42AEA5DB000A364C0 /* Controllers */ = {
 			isa = PBXGroup;
 			children = (
+				53F10AF12AF0F267004D0529 /* MainViewController */,
 				53D62E3C2AEFA2F800C80BAC /* InitialViewController */,
 				532683B62AEA505C00A364C0 /* LoginViewController */,
 				53157ECB2AEE55AB003C9B6A /* KNViewController.swift */,
@@ -576,6 +587,16 @@
 			path = InitialViewController;
 			sourceTree = "<group>";
 		};
+		53F10AF12AF0F267004D0529 /* MainViewController */ = {
+			isa = PBXGroup;
+			children = (
+				CBAA0F7E1F68E807008BBBBE /* MainViewController.swift */,
+				53F10AF22AF0F306004D0529 /* ConnectViewController.swift */,
+				53F10AF32AF0F306004D0529 /* ConnectViewController.xib */,
+			);
+			path = MainViewController;
+			sourceTree = "<group>";
+		};
 		CED4870F17DB1BF6007FCF57 = {
 			isa = PBXGroup;
 			children = (
@@ -623,7 +644,6 @@
 				5326838E2AE947D900A364C0 /* Network */,
 				CB4197921F674A3E008F301C /* DatabaseHelper.swift */,
 				5E716A261F63A0B100A2DBC3 /* DistanceCalculator.swift */,
-				CBAA0F7E1F68E807008BBBBE /* MainViewController.swift */,
 				CB4197981F67724F008F301C /* NetworkManager.swift */,
 				CB7ED07F1F6602CD00A33FCF /* Position.swift */,
 				5E394EBD28A9CC7600396F33 /* BatteryStatus.swift */,
@@ -805,6 +825,7 @@
 				5326835D2AE91A6F00A364C0 /* Montserrat-Bold.ttf in Resources */,
 				53554AE32AED1B480018BAEE /* KNButtonView.xib in Resources */,
 				532683542AE91A6F00A364C0 /* Montserrat-LightItalic.ttf in Resources */,
+				53F10AF52AF0F306004D0529 /* ConnectViewController.xib in Resources */,
 				5326835C2AE91A6F00A364C0 /* Montserrat-ThinItalic.ttf in Resources */,
 				53157ED12AEE563C003C9B6A /* KNSpinnerView.xib in Resources */,
 				532683562AE91A6F00A364C0 /* Montserrat-MediumItalic.ttf in Resources */,
@@ -865,6 +886,7 @@
 				53554AE02AED1B480018BAEE /* KNButtonViewHelper.swift in Sources */,
 				53157EDC2AEE5841003C9B6A /* UIWindow.swift in Sources */,
 				53554AE22AED1B480018BAEE /* ButtonTableViewCell.swift in Sources */,
+				53F10AF92AF101EC004D0529 /* Color.swift in Sources */,
 				532683832AE928F900A364C0 /* KNTableViewCell.swift in Sources */,
 				5326837C2AE923A500A364C0 /* KNField.swift in Sources */,
 				53157ECA2AEE4DFE003C9B6A /* DeviceModel.swift in Sources */,
@@ -877,6 +899,7 @@
 				53F10AE82AF05EB5004D0529 /* Coordinatable.swift in Sources */,
 				53D62E3F2AEFA31200C80BAC /* InitialViewController.swift in Sources */,
 				532683AD2AE94BFC00A364C0 /* Logs.swift in Sources */,
+				53F10AF72AF101DB004D0529 /* UIColor.swift in Sources */,
 				5E394EBE28A9CC7600396F33 /* BatteryStatus.swift in Sources */,
 				53157ED32AEE56FE003C9B6A /* Globals.swift in Sources */,
 				53F10AF02AF06906004D0529 /* UIImageView.swift in Sources */,
@@ -923,6 +946,7 @@
 				532683C32AEA537F00A364C0 /* UITableView.swift in Sources */,
 				5326839B2AE9482300A364C0 /* NetworkRequest.swift in Sources */,
 				CB4197931F674A3E008F301C /* DatabaseHelper.swift in Sources */,
+				53F10AF42AF0F306004D0529 /* ConnectViewController.swift in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
diff --git a/TraccarClient.xcodeproj/project.xcworkspace/xcuserdata/g.makhoul.xcuserdatad/UserInterfaceState.xcuserstate b/TraccarClient.xcodeproj/project.xcworkspace/xcuserdata/g.makhoul.xcuserdatad/UserInterfaceState.xcuserstate
index ed8e56072da3416147a9f55a7d4db96802839e7f..8a1f03e5d991331a6485087c84605cabedc4218c 100644
Binary files a/TraccarClient.xcodeproj/project.xcworkspace/xcuserdata/g.makhoul.xcuserdatad/UserInterfaceState.xcuserstate and b/TraccarClient.xcodeproj/project.xcworkspace/xcuserdata/g.makhoul.xcuserdatad/UserInterfaceState.xcuserstate differ
diff --git a/TraccarClient/.DS_Store b/TraccarClient/.DS_Store
index 686a648a6a50c5bbc9ee4436a0b2d1044d78c75b..135acbc6c8039c0b8e0c571828429ae70828cb24 100644
Binary files a/TraccarClient/.DS_Store and b/TraccarClient/.DS_Store differ
diff --git a/TraccarClient/AppDelegate.swift b/TraccarClient/AppDelegate.swift
index 2e6c6848aa29ab1cff2a37b3745bb8e3061d9c43..dff0a86fe4de5950d08e5a08b2f5fad2c93d7148 100644
--- a/TraccarClient/AppDelegate.swift
+++ b/TraccarClient/AppDelegate.swift
@@ -42,7 +42,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate, PositionProviderDelegate
         IQKeyboardManager.shared.enable = true
         IQKeyboardManager.shared.shouldResignOnTouchOutside = true
         IQKeyboardManager.shared.previousNextDisplayMode = .alwaysShow
-        IQKeyboardManager.shared.toolbarTintColor = .purple
+        IQKeyboardManager.shared.toolbarTintColor = .main
         
         UIDevice.current.isBatteryMonitoringEnabled = true
         
diff --git a/TraccarClient/Base.lproj/MainStoryboard.storyboard b/TraccarClient/Base.lproj/MainStoryboard.storyboard
index c0daa302d746771589d9d60df0011bc2df702feb..d599670c497818a8170b15871071c18eea3ed2d9 100644
--- a/TraccarClient/Base.lproj/MainStoryboard.storyboard
+++ b/TraccarClient/Base.lproj/MainStoryboard.storyboard
@@ -33,7 +33,7 @@
         <!--Status View Controller-->
         <scene sceneID="El5-px-WCe">
             <objects>
-                <tableViewController id="LmD-5n-dPz" customClass="StatusViewController" customModule="TraccarClient" customModuleProvider="target" sceneMemberID="viewController">
+                <tableViewController storyboardIdentifier="StatusViewController" id="LmD-5n-dPz" customClass="StatusViewController" customModule="TraccarClient" customModuleProvider="target" sceneMemberID="viewController">
                     <tableView key="view" opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="18" sectionFooterHeight="18" id="fdn-aT-LfP">
                         <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
diff --git a/TraccarClient/Color.swift b/TraccarClient/Color.swift
new file mode 100644
index 0000000000000000000000000000000000000000..3b32b625b3b261096db8856a7e6a12595a5f3102
--- /dev/null
+++ b/TraccarClient/Color.swift
@@ -0,0 +1,15 @@
+//
+//  Color.swift
+//  TraccarClient
+//
+//  Created by George Makhoul on 31/10/2023.
+//  Copyright © 2023 Traccar. All rights reserved.
+//
+
+
+import UIKit
+
+extension UIColor {
+    
+    static let main = hex("#62389F")
+}
diff --git a/TraccarClient/Custom/BMTextFieldView/KNTextFieldView.swift b/TraccarClient/Custom/BMTextFieldView/KNTextFieldView.swift
index b721959add6d70ed192eb124b640c6b4b8f3d6a8..ba133fbee37e20eb92f8198582cc3035f19034db 100644
--- a/TraccarClient/Custom/BMTextFieldView/KNTextFieldView.swift
+++ b/TraccarClient/Custom/BMTextFieldView/KNTextFieldView.swift
@@ -114,7 +114,7 @@ final class KNTextFieldView: KNComponentView {
         userNameLabel_leading.set(0)
         textField_leading.set(12)
         
-        borderView.addBorder(radius: 13, width: 1, color: .purple)
+        borderView.addBorder(radius: 13, width: 1, color: .main)
         
         titleLabel.set(text: "", color: .black, font: .semibold(12))
         titleLabel.numberOfLines = 1
@@ -122,7 +122,7 @@ final class KNTextFieldView: KNComponentView {
         infoLabel.set(text: "", color: .black, font: .regular(12))
         infoLabel.numberOfLines = 0
         
-        countLabel.set(text: "", color: .purple, font: .medium(12))
+        countLabel.set(text: "", color: .main, font: .medium(12))
         countLabel.numberOfLines = 1
         countLabel.align(to: .left)
         
@@ -132,7 +132,7 @@ final class KNTextFieldView: KNComponentView {
         textField.placeholder = ""
         textField.delegate = self
         textField.isUserInteractionEnabled = true
-        textField.tintColor = .purple
+        textField.tintColor = .main
         textField.textAlignment = .left
         
         accessoryViewLabel.set(text: "", color: .gray, font: .medium(16))
@@ -176,7 +176,7 @@ final class KNTextFieldView: KNComponentView {
         guard let helper = helper else { return }
         
         //
-        borderView.addBorder(radius: 13, width: 1, color: .purple)
+        borderView.addBorder(radius: 13, width: 1, color: .main)
         
         textField.textAlignment = .left
         textField.semanticContentAttribute = .forceLeftToRight
@@ -218,7 +218,7 @@ final class KNTextFieldView: KNComponentView {
                 if text.count > 0 {
                     strongSelf.borderView.addBorder(radius: 13,
                                                     width: 2,
-                                                    color: .purple)
+                                                    color: .main)
                     
                     if strongSelf.field?.field != .email || strongSelf.field?.field != .shipping_address_email || strongSelf.field?.field != .billing_address_email {
                         strongSelf.field?.error.value = ""
@@ -238,7 +238,7 @@ final class KNTextFieldView: KNComponentView {
                 field.value.value = text
                 
                 if text.count > 0 {
-                    strongSelf.borderView.addBorder(radius: 13, width: 2, color: .purple)
+                    strongSelf.borderView.addBorder(radius: 13, width: 2, color: .main)
                 }
                 
                 //strongSelf.validate()
@@ -287,7 +287,7 @@ final class KNTextFieldView: KNComponentView {
             if strongSelf.isUnitMeasurement.dropdown { return }
             
             if text.count > 0 {
-                strongSelf.borderView.addBorder(radius: 13, width: 2, color: .purple)
+                strongSelf.borderView.addBorder(radius: 13, width: 2, color: .main)
                 strongSelf.set(error: text)
                 strongSelf.delegate?.updateUI(for: field)
             }
@@ -318,7 +318,7 @@ final class KNTextFieldView: KNComponentView {
             if isUnitMeasurement.dropdown { return }
             
             if text.count > 0 {
-                borderView.addBorder(radius: 13, width: 2, color: .purple)
+                borderView.addBorder(radius: 13, width: 2, color: .main)
             }
         }
         textField.textAlignment = .left
diff --git a/TraccarClient/Custom/KNButtonView/KNButtonView.swift b/TraccarClient/Custom/KNButtonView/KNButtonView.swift
index abd50edb31759c0b3da10a4bf34a988212dfe810..884c6d6309f700e06f9c907d03700c75599cae44 100644
--- a/TraccarClient/Custom/KNButtonView/KNButtonView.swift
+++ b/TraccarClient/Custom/KNButtonView/KNButtonView.swift
@@ -16,7 +16,7 @@ final class KNButtonView: KNComponentView {
     @IBOutlet private weak var button: UIButton!
     
     // MARK: - Properties
-    private var color: UIColor = .purple
+    private var color: UIColor = .main
     private var title: String = ""
     private var cornerRadius: CGFloat = 10.0
     private var titleColor: UIColor = .white
@@ -186,10 +186,10 @@ final class KNButtonView: KNComponentView {
         boxView.addCorners(10)
         
         if action == .retryPayment || action == .trackOrder {
-            boxView.backgroundColor = .purple
+            boxView.backgroundColor = .main
             
         } else {
-            boxView.backgroundColor = .purple
+            boxView.backgroundColor = .main
         }
         
         
@@ -197,12 +197,12 @@ final class KNButtonView: KNComponentView {
         var font: UIFont = .semibold(17)
         
         if style == .transparent {
-            boxView.backgroundColor = .purple
+            boxView.backgroundColor = .main
             
-            color = .purple
+            color = .main
             font = .semibold(14)
         }else if style == .transperantExtraBlue {
-            boxView.backgroundColor = .purple
+            boxView.backgroundColor = .main
             
             titleColor = .white
             titleFont = .semibold(14)
@@ -216,7 +216,7 @@ final class KNButtonView: KNComponentView {
     
     private func updateTertiary() {
         boxView.addCorners(10)
-        boxView.backgroundColor = .purple
+        boxView.backgroundColor = .main
         
         adjustSpaceBetweenTitleAndIcon()
         adjustIconPlacement()
@@ -241,7 +241,7 @@ final class KNButtonView: KNComponentView {
         self.delegate = delegate
         
         boxView.addCorners(cornerRadius)
-        boxView.backgroundColor = .purple
+        boxView.backgroundColor = .main
         
         titleColor = .white
         titleFont = .semibold(17)
diff --git a/TraccarClient/Images.xcassets/.DS_Store b/TraccarClient/Images.xcassets/.DS_Store
index cf59f693fc5726c57280ef274cc28e817a562ed0..e473d4f10f5fd7d90e926cfa5d4813cb9f5d28e8 100644
Binary files a/TraccarClient/Images.xcassets/.DS_Store and b/TraccarClient/Images.xcassets/.DS_Store differ
diff --git a/TraccarClient/Images.xcassets/connectedButton.imageset/ConnectedButton.png b/TraccarClient/Images.xcassets/connectedButton.imageset/ConnectedButton.png
new file mode 100644
index 0000000000000000000000000000000000000000..fb45de7959ffc21216331fcf742fb36b1991a06a
Binary files /dev/null and b/TraccarClient/Images.xcassets/connectedButton.imageset/ConnectedButton.png differ
diff --git a/TraccarClient/Images.xcassets/connectedButton.imageset/Contents.json b/TraccarClient/Images.xcassets/connectedButton.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..b8ac21dbfa2f847f0371b7294694ed67eb920b49
--- /dev/null
+++ b/TraccarClient/Images.xcassets/connectedButton.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "filename" : "ConnectedButton.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "connectedButtonx2.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "connectedButtonx3.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/TraccarClient/Images.xcassets/connectedButton.imageset/connectedButtonx2.png b/TraccarClient/Images.xcassets/connectedButton.imageset/connectedButtonx2.png
new file mode 100644
index 0000000000000000000000000000000000000000..7582e23da7f50e3be9dac5e9c13c40df17f5f742
Binary files /dev/null and b/TraccarClient/Images.xcassets/connectedButton.imageset/connectedButtonx2.png differ
diff --git a/TraccarClient/Images.xcassets/connectedButton.imageset/connectedButtonx3.png b/TraccarClient/Images.xcassets/connectedButton.imageset/connectedButtonx3.png
new file mode 100644
index 0000000000000000000000000000000000000000..d678af4f4971377ed5dcc9a8016c51b876dc1672
Binary files /dev/null and b/TraccarClient/Images.xcassets/connectedButton.imageset/connectedButtonx3.png differ
diff --git a/TraccarClient/Images.xcassets/connectedLogo.imageset/Contents.json b/TraccarClient/Images.xcassets/connectedLogo.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..2d2351f3da08d6bbba5d69d32303b5756112bc8e
--- /dev/null
+++ b/TraccarClient/Images.xcassets/connectedLogo.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "filename" : "connectedLogo1x.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "connectedLogo2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "connectedLogo3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/TraccarClient/Images.xcassets/connectedLogo.imageset/connectedLogo1x.png b/TraccarClient/Images.xcassets/connectedLogo.imageset/connectedLogo1x.png
new file mode 100644
index 0000000000000000000000000000000000000000..aac01020a4090267a71ebf96e714d5586d4c9583
Binary files /dev/null and b/TraccarClient/Images.xcassets/connectedLogo.imageset/connectedLogo1x.png differ
diff --git a/TraccarClient/Images.xcassets/connectedLogo.imageset/connectedLogo2x.png b/TraccarClient/Images.xcassets/connectedLogo.imageset/connectedLogo2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..c41b1493f6c2d34b5297a2e212d0eaa8f5650685
Binary files /dev/null and b/TraccarClient/Images.xcassets/connectedLogo.imageset/connectedLogo2x.png differ
diff --git a/TraccarClient/Images.xcassets/connectedLogo.imageset/connectedLogo3x.png b/TraccarClient/Images.xcassets/connectedLogo.imageset/connectedLogo3x.png
new file mode 100644
index 0000000000000000000000000000000000000000..37089390e148c15d84cf4ef2bd5a4c52fe0e64f1
Binary files /dev/null and b/TraccarClient/Images.xcassets/connectedLogo.imageset/connectedLogo3x.png differ
diff --git a/TraccarClient/Images.xcassets/disconnectedButton.imageset/Contents.json b/TraccarClient/Images.xcassets/disconnectedButton.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..593fb721e98f3b5e76d8f5426035d46461cf9f91
--- /dev/null
+++ b/TraccarClient/Images.xcassets/disconnectedButton.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "filename" : "disconnectedButton.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "disconnectedButton2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "disconnectedButton3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/TraccarClient/Images.xcassets/disconnectedButton.imageset/disconnectedButton.png b/TraccarClient/Images.xcassets/disconnectedButton.imageset/disconnectedButton.png
new file mode 100644
index 0000000000000000000000000000000000000000..5141671fccc9c3296f6f8b491b556459ffeb6d69
Binary files /dev/null and b/TraccarClient/Images.xcassets/disconnectedButton.imageset/disconnectedButton.png differ
diff --git a/TraccarClient/Images.xcassets/disconnectedButton.imageset/disconnectedButton2x.png b/TraccarClient/Images.xcassets/disconnectedButton.imageset/disconnectedButton2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..460221fd74aadbdcac0847395e91b97ed0d5dbb4
Binary files /dev/null and b/TraccarClient/Images.xcassets/disconnectedButton.imageset/disconnectedButton2x.png differ
diff --git a/TraccarClient/Images.xcassets/disconnectedButton.imageset/disconnectedButton3x.png b/TraccarClient/Images.xcassets/disconnectedButton.imageset/disconnectedButton3x.png
new file mode 100644
index 0000000000000000000000000000000000000000..2a4e2b913aa23c584092c3bfb542f9d9b8afb40b
Binary files /dev/null and b/TraccarClient/Images.xcassets/disconnectedButton.imageset/disconnectedButton3x.png differ
diff --git a/TraccarClient/Images.xcassets/disconnectedLogo.imageset/Contents.json b/TraccarClient/Images.xcassets/disconnectedLogo.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..2b680612832bdc675b0923951c13fee31347c0e4
--- /dev/null
+++ b/TraccarClient/Images.xcassets/disconnectedLogo.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "filename" : "disconnectedLogo1x.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "disconnectedLogo2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "disconnectedLogo3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/TraccarClient/Images.xcassets/disconnectedLogo.imageset/disconnectedLogo1x.png b/TraccarClient/Images.xcassets/disconnectedLogo.imageset/disconnectedLogo1x.png
new file mode 100644
index 0000000000000000000000000000000000000000..436b50313e1546904ccbecc4d5f04b06289a929d
Binary files /dev/null and b/TraccarClient/Images.xcassets/disconnectedLogo.imageset/disconnectedLogo1x.png differ
diff --git a/TraccarClient/Images.xcassets/disconnectedLogo.imageset/disconnectedLogo2x.png b/TraccarClient/Images.xcassets/disconnectedLogo.imageset/disconnectedLogo2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..aad4df9985fd62b391e194846f9b491917bd28a6
Binary files /dev/null and b/TraccarClient/Images.xcassets/disconnectedLogo.imageset/disconnectedLogo2x.png differ
diff --git a/TraccarClient/Images.xcassets/disconnectedLogo.imageset/disconnectedLogo3x.png b/TraccarClient/Images.xcassets/disconnectedLogo.imageset/disconnectedLogo3x.png
new file mode 100644
index 0000000000000000000000000000000000000000..00d66394b77225e19b11a2035f6c05c74a6132b2
Binary files /dev/null and b/TraccarClient/Images.xcassets/disconnectedLogo.imageset/disconnectedLogo3x.png differ
diff --git a/TraccarClient/Images.xcassets/nmoLogo.imageset/Contents.json b/TraccarClient/Images.xcassets/nmoLogo.imageset/Contents.json
new file mode 100644
index 0000000000000000000000000000000000000000..834da7f296a4b0144ffb253c19d5fefc98ebf452
--- /dev/null
+++ b/TraccarClient/Images.xcassets/nmoLogo.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "nmoAiLogo.pdf",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/TraccarClient/Images.xcassets/nmoLogo.imageset/nmoAiLogo.pdf b/TraccarClient/Images.xcassets/nmoLogo.imageset/nmoAiLogo.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..1c7ffdd4a7b407b6f4358e5703c2924554c169fc
--- /dev/null
+++ b/TraccarClient/Images.xcassets/nmoLogo.imageset/nmoAiLogo.pdf
@@ -0,0 +1,523 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 9.889221 65.726501 cm
+0.000000 0.000000 0.000000 scn
+28.289259 25.178450 m
+28.333239 25.102062 28.377218 25.102062 28.421198 25.178450 c
+31.783325 30.969532 35.126415 36.742985 38.450470 42.498810 c
+39.057648 43.550606 39.849937 44.861923 40.827332 46.432762 c
+41.772560 47.951698 42.872372 48.911438 44.759876 48.911438 c
+52.226532 48.911438 59.693180 48.911438 67.159836 48.911438 c
+68.332512 48.911438 69.437248 48.471722 69.793678 47.295551 c
+70.186539 45.999901 68.999100 44.384014 68.374847 43.317528 c
+60.715542 30.226877 53.157646 17.078444 45.492432 3.990730 c
+43.154957 -0.000023 37.709057 0.079304 35.381432 4.009338 c
+33.043304 7.956020 30.733068 11.924580 28.450735 15.915005 c
+28.443670 15.927208 28.433701 15.937508 28.421715 15.944988 c
+28.409727 15.952465 28.396099 15.956890 28.382051 15.957859 c
+28.368004 15.958832 28.353973 15.956318 28.341215 15.950550 c
+28.328459 15.944778 28.317375 15.935932 28.308952 15.924801 c
+28.223619 15.811852 28.135004 15.675396 28.043106 15.515438 c
+26.025305 12.033607 24.002907 8.554714 21.975916 5.078758 c
+20.766809 3.005527 19.525211 1.366138 16.919924 1.095844 c
+16.405956 1.042305 15.536214 1.008678 14.310698 0.994968 c
+10.806129 0.954491 7.301562 0.961674 3.796993 1.016518 c
+2.711949 1.033165 1.482167 0.856888 0.673799 1.707920 c
+-0.319676 2.756779 -0.091247 3.807598 0.565491 4.942638 c
+5.747841 13.887802 10.942991 22.825129 16.150942 31.754623 c
+17.270447 33.675083 18.117214 35.270405 20.661455 35.102940 c
+22.000530 35.014801 22.995975 34.176498 23.681267 33.033623 c
+25.254025 30.410988 26.790022 27.792599 28.289259 25.178450 c
+h
+44.840614 44.499573 m
+40.212933 36.557240 35.629555 28.616865 31.025501 20.630461 c
+31.011417 20.606022 31.004000 20.578402 31.004000 20.550381 c
+31.004000 20.522360 31.011417 20.494925 31.025501 20.470829 c
+34.021355 15.316311 37.003090 10.176811 39.970715 5.052322 c
+40.094776 4.838177 40.221138 4.614559 40.349796 4.381481 c
+40.355457 4.370941 40.363827 4.362091 40.374054 4.355820 c
+40.384281 4.349548 40.396000 4.346081 40.408009 4.345783 c
+40.420021 4.345486 40.431896 4.348362 40.442425 4.354115 c
+40.452957 4.359871 40.461758 4.368301 40.467945 4.378544 c
+42.037418 6.933609 43.508434 9.531757 45.011936 12.123055 c
+51.276707 22.919146 57.548367 33.726986 63.826920 44.546581 c
+63.831612 44.554817 63.834076 44.564137 63.834072 44.573601 c
+63.834068 44.583065 63.831596 44.592339 63.826900 44.600483 c
+63.822208 44.608627 63.815456 44.615360 63.807335 44.619995 c
+63.799213 44.624634 63.790005 44.627007 63.780640 44.626884 c
+45.062153 44.626884 l
+45.017246 44.626858 44.973133 44.615078 44.934246 44.592731 c
+44.895359 44.570385 44.863071 44.538258 44.840614 44.499573 c
+h
+6.095081 5.276585 m
+9.683014 5.243290 13.257819 5.245247 16.819494 5.282463 c
+16.844648 5.282742 16.869314 5.289570 16.891069 5.302277 c
+16.912823 5.314983 16.930912 5.333130 16.943554 5.354931 c
+19.766769 10.254173 22.604101 15.144928 25.455542 20.027195 c
+25.635725 20.336662 25.710558 20.557009 25.514620 20.895857 c
+23.794827 23.878883 22.068140 26.858322 20.334564 29.834167 c
+20.329636 29.842804 20.322498 29.849966 20.313860 29.854944 c
+20.305222 29.859922 20.295387 29.862541 20.285330 29.862541 c
+20.275272 29.862541 20.265345 29.859922 20.256535 29.854944 c
+20.247726 29.849966 20.240343 29.842804 20.235119 29.834167 c
+6.051758 5.351017 l
+6.047479 5.343449 6.045257 5.334904 6.045311 5.326221 c
+6.045366 5.317539 6.047694 5.309021 6.052068 5.301506 c
+6.056441 5.293991 6.062710 5.287739 6.070253 5.283371 c
+6.077796 5.278999 6.086353 5.276661 6.095081 5.276585 c
+h
+f
+n
+Q
+q
+1.000000 0.000000 -0.000000 1.000000 121.956116 61.554810 cm
+0.000000 0.000000 0.000000 scn
+11.015539 4.624681 m
+5.515640 2.890245 -0.343581 7.152311 0.015734 12.890951 c
+0.532869 21.130749 11.795703 23.457382 15.897054 16.300995 c
+18.518463 11.728124 15.934778 6.176752 11.015539 4.624681 c
+h
+8.470775 7.588645 m
+9.745420 7.593040 10.966049 8.106825 11.864154 9.016968 c
+12.762259 9.927112 13.264263 11.159060 13.259730 12.441803 c
+13.257486 13.076952 13.130956 13.705456 12.887355 14.291424 c
+12.643754 14.877394 12.287865 15.409353 11.839993 15.856934 c
+11.392123 16.304514 10.861045 16.658945 10.277088 16.899996 c
+9.693131 17.141047 9.067735 17.263996 8.436594 17.261820 c
+7.161949 17.257423 5.941308 16.743643 5.043203 15.833500 c
+4.145098 14.923356 3.643093 13.691404 3.647626 12.408662 c
+3.649870 11.773512 3.776402 11.145010 4.020002 10.559040 c
+4.263602 9.973071 4.619504 9.441113 5.067375 8.993534 c
+5.515246 8.545954 6.046312 8.191522 6.630268 7.950471 c
+7.214225 7.709420 7.839634 7.586469 8.470775 7.588645 c
+h
+f
+n
+Q
+q
+1.000000 0.000000 -0.000000 1.000000 79.760864 66.237793 cm
+0.000000 0.000000 0.000000 scn
+3.679535 13.451571 m
+3.686775 13.338743 3.720997 13.330264 3.782205 13.426135 c
+4.775366 14.988432 6.538576 15.728984 8.345220 15.732897 c
+10.539847 15.736810 12.434350 14.880824 13.467000 12.887110 c
+14.102781 11.658403 14.206442 10.347521 14.208416 8.981855 c
+14.213681 6.055525 14.216316 3.112890 14.216316 0.153950 c
+14.216316 0.129302 14.206433 0.105663 14.188845 0.088235 c
+14.171256 0.070806 14.147401 0.061013 14.122527 0.061013 c
+10.584272 0.055144 l
+10.570658 0.055144 10.557596 0.060398 10.547969 0.069755 c
+10.538342 0.079111 10.532934 0.091805 10.532934 0.105037 c
+10.511215 3.024846 10.504963 5.934872 10.514176 8.835115 c
+10.518126 10.126431 10.232815 11.283725 9.076759 11.984166 c
+8.187259 12.522215 7.024292 12.578953 6.034093 12.242428 c
+4.413050 11.690683 3.737779 10.370022 3.720009 8.725550 c
+3.689075 5.849437 3.674926 2.958974 3.677558 0.054165 c
+3.677560 0.047658 3.676250 0.041218 3.673708 0.035219 c
+3.671166 0.029220 3.667442 0.023784 3.662754 0.019229 c
+3.658065 0.014674 3.652503 0.011090 3.646400 0.008691 c
+3.640297 0.006290 3.633773 0.005121 3.627208 0.005251 c
+2.468192 0.042425 1.297657 0.042098 0.115605 0.004272 c
+0.104598 0.003878 0.093624 0.005689 0.083338 0.009592 c
+0.073052 0.013495 0.063666 0.019412 0.055740 0.026991 c
+0.047815 0.034571 0.041514 0.043657 0.037212 0.053705 c
+0.032910 0.063752 0.030697 0.074555 0.030704 0.085470 c
+0.026755 3.573980 0.017868 7.069339 0.004047 10.571545 c
+-0.000889 11.900035 0.027744 13.525919 0.001088 15.004085 c
+-0.004835 15.331805 0.000103 15.455068 0.379202 15.426698 c
+0.581256 15.411046 0.783966 15.408112 0.987337 15.417893 c
+1.860055 15.460938 2.702495 15.453437 3.514662 15.395392 c
+3.635763 15.386914 3.693028 15.322675 3.686446 15.202673 c
+3.650248 14.545928 3.647943 13.962228 3.679535 13.451571 c
+h
+f
+n
+Q
+q
+1.000000 0.000000 -0.000000 1.000000 97.001953 66.072205 cm
+0.000000 0.000000 0.000000 scn
+12.106738 13.399842 m
+12.118659 13.392098 12.132051 13.386855 12.146087 13.384436 c
+12.160121 13.382016 12.174508 13.382473 12.188359 13.385775 c
+12.202211 13.389075 12.215237 13.395153 12.226637 13.403634 c
+12.238037 13.412115 12.247563 13.422820 12.254646 13.435093 c
+12.927791 14.589161 13.908911 15.326119 15.198009 15.645968 c
+16.895004 16.067974 18.653139 16.016081 20.120386 15.066324 c
+22.199970 13.719041 22.542128 11.381855 22.534239 9.104397 c
+22.524378 6.157213 22.507284 3.210030 22.482962 0.262847 c
+22.482719 0.249168 22.477354 0.236117 22.467978 0.226439 c
+22.458599 0.216763 22.445950 0.211210 22.432684 0.210950 c
+19.007130 0.169828 l
+18.989923 0.169518 18.972853 0.172787 18.956959 0.179432 c
+18.941067 0.186077 18.926706 0.195957 18.914770 0.208451 c
+18.902836 0.220946 18.893572 0.235788 18.887579 0.252053 c
+18.881586 0.268319 18.878990 0.285658 18.879936 0.302988 c
+18.892756 0.510564 18.851339 0.743599 18.854298 0.941383 c
+18.897684 3.825902 18.940083 6.671257 18.778370 9.618441 c
+18.728081 10.530991 18.475655 11.395563 17.783447 11.996749 c
+16.656389 12.975880 15.042212 12.798656 14.014747 11.729445 c
+13.047429 10.722898 13.029683 9.409885 13.031655 7.880483 c
+13.033628 6.350101 13.033627 4.821679 13.055320 3.292277 c
+13.070439 2.267454 13.022126 1.244913 12.910373 0.224659 c
+12.908912 0.211174 12.902563 0.198705 12.892547 0.189663 c
+12.882530 0.180621 12.869552 0.175647 12.856135 0.175702 c
+9.439475 0.212910 l
+9.425694 0.213161 9.412545 0.218710 9.402799 0.228388 c
+9.393052 0.238067 9.387464 0.251116 9.387211 0.264801 c
+9.341195 2.975035 9.347764 5.660467 9.406927 8.321093 c
+9.445383 10.034571 9.142669 12.469668 6.921094 12.580310 c
+5.649744 12.643627 4.723189 12.152103 4.141419 11.105740 c
+3.646420 10.213751 3.670076 9.428488 3.663174 8.191846 c
+3.650027 5.556679 3.636889 2.921512 3.623741 0.286345 c
+3.623741 0.279787 3.622486 0.273292 3.620058 0.267233 c
+3.617630 0.261174 3.614073 0.255669 3.609586 0.251032 c
+3.605099 0.246395 3.599776 0.242719 3.593914 0.240209 c
+3.588052 0.237700 3.581759 0.236408 3.575414 0.236408 c
+0.130154 0.194306 l
+0.118806 0.194177 0.107550 0.196309 0.097028 0.200582 c
+0.086507 0.204853 0.076933 0.211177 0.068862 0.219191 c
+0.060792 0.227205 0.054374 0.236749 0.050001 0.247267 c
+0.045627 0.257785 0.043381 0.269073 0.043381 0.280470 c
+0.000000 15.412934 l
+0.000000 15.436337 0.004631 15.459511 0.013650 15.481132 c
+0.022668 15.502752 0.035888 15.522397 0.052553 15.538944 c
+0.069217 15.555492 0.089001 15.568616 0.110774 15.577572 c
+0.132548 15.586527 0.155889 15.591137 0.179456 15.591137 c
+3.434415 15.591137 l
+3.481692 15.591162 3.527107 15.572961 3.560994 15.540409 c
+3.594881 15.507856 3.614561 15.463525 3.615845 15.416852 c
+3.667122 13.657354 l
+3.671066 13.532025 3.705912 13.530067 3.771649 13.651480 c
+4.651207 15.260191 6.185499 15.882918 7.981100 15.894669 c
+9.686970 15.906418 11.098007 14.999743 11.958831 13.572170 c
+12.008790 13.489270 12.058093 13.431828 12.106738 13.399842 c
+h
+f
+n
+Q
+q
+1.000000 0.000000 -0.000000 1.000000 152.959839 75.769958 cm
+0.000000 0.000000 0.000000 scn
+1.209899 -0.000006 m
+1.878109 -0.000006 2.419798 0.507829 2.419798 1.134276 c
+2.419798 1.760722 1.878109 2.268555 1.209899 2.268555 c
+0.541689 2.268555 0.000000 1.760722 0.000000 1.134276 c
+0.000000 0.507829 0.541689 -0.000006 1.209899 -0.000006 c
+h
+f
+n
+Q
+q
+1.000000 0.000000 -0.000000 1.000000 142.524414 65.460449 cm
+0.000000 0.000000 0.000000 scn
+6.958498 1.760666 m
+6.961141 1.827145 6.939000 1.836272 6.892084 1.788043 c
+5.934606 0.797387 4.758741 0.442510 3.364484 0.723413 c
+-0.280079 1.458583 -1.030404 5.952703 1.440603 8.318544 c
+2.884750 9.700900 5.528224 9.844612 6.868297 8.259890 c
+6.967414 8.142575 7.008051 8.159516 6.990210 8.310722 c
+6.909918 8.995056 l
+6.892738 9.138440 6.955515 9.210461 7.098245 9.211112 c
+8.808027 9.216000 l
+8.823079 9.216128 8.838004 9.213293 8.851948 9.207651 c
+8.865891 9.202010 8.878585 9.193677 8.889275 9.183133 c
+8.899964 9.172590 8.908444 9.160045 8.914235 9.146222 c
+8.920026 9.132399 8.923007 9.117573 8.923007 9.102598 c
+8.892275 0.865169 l
+8.892267 0.858409 8.891006 0.851717 8.888548 0.845484 c
+8.886091 0.839252 8.882496 0.833600 8.877974 0.828866 c
+8.873451 0.824133 8.868091 0.820413 8.862208 0.817917 c
+8.856325 0.815421 8.850033 0.814199 8.843708 0.814331 c
+6.972363 0.836821 l
+6.965765 0.836934 6.959267 0.838399 6.953234 0.841128 c
+6.947201 0.843858 6.941763 0.847793 6.937239 0.852710 c
+6.932715 0.857627 6.929189 0.863427 6.926882 0.869763 c
+6.924574 0.876100 6.923526 0.882846 6.923797 0.889609 c
+6.958498 1.760666 l
+h
+4.651721 2.463910 m
+4.984127 2.482813 5.309412 2.567626 5.609009 2.713500 c
+5.908606 2.859375 6.176650 3.063452 6.397826 3.314088 c
+6.619002 3.564725 6.788990 3.857008 6.898073 4.174250 c
+7.007157 4.491492 7.053202 4.827478 7.033586 5.163028 c
+6.993969 5.840700 6.689293 6.475453 6.186583 6.927643 c
+5.683873 7.379833 5.024300 7.612421 4.352976 7.574243 c
+4.020569 7.555339 3.695285 7.470527 3.395688 7.324653 c
+3.096091 7.178778 2.828060 6.974701 2.606883 6.724064 c
+2.385707 6.473427 2.215719 6.181145 2.106636 5.863903 c
+1.997553 5.546660 1.951507 5.210674 1.971123 4.875124 c
+2.010740 4.197452 2.315415 3.562699 2.818126 3.110509 c
+3.320836 2.658319 3.980397 2.425731 4.651721 2.463910 c
+h
+f
+n
+Q
+q
+1.000000 0.000000 -0.000000 1.000000 153.111023 66.224426 cm
+0.000000 0.000000 0.000000 scn
+1.188121 0.089630 m
+0.845249 0.077963 0.477835 0.053984 0.085885 0.017688 c
+0.079239 0.017148 0.072550 0.017925 0.066239 0.019979 c
+0.059928 0.022032 0.054132 0.025317 0.049227 0.029615 c
+0.044322 0.033914 0.040411 0.039135 0.037744 0.044949 c
+0.035077 0.050761 0.033713 0.057036 0.033737 0.063378 c
+0.000000 8.334813 l
+0.000092 8.357801 0.009012 8.379938 0.025050 8.396981 c
+0.041088 8.414025 0.063114 8.424778 0.086908 8.427173 c
+0.758337 8.491986 1.388524 8.503976 1.977472 8.463143 c
+1.995065 8.461782 2.011554 8.454456 2.023941 8.442500 c
+2.036328 8.430544 2.043792 8.414748 2.044959 8.398003 c
+2.100855 7.628672 2.124366 6.882029 2.115505 6.158068 c
+2.090965 4.203956 2.094034 2.247899 2.078697 0.292815 c
+2.077333 0.155412 2.004737 0.082822 1.860908 0.075045 c
+1.635962 0.063378 1.387504 0.096435 1.188121 0.089630 c
+h
+f
+n
+Q
+q
+1.000000 0.000000 -0.000000 1.000000 135.113770 50.239502 cm
+0.000000 0.000000 0.000000 scn
+4.332519 1.357412 m
+1.696231 1.333972 l
+1.672828 1.333706 1.649673 1.325538 1.629807 1.310544 c
+1.609941 1.295551 1.594296 1.274432 1.584937 1.249972 c
+1.257012 0.404159 l
+1.211302 0.285002 1.119216 0.221189 0.980760 0.212725 c
+0.153013 0.164867 l
+0.009920 0.156403 -0.032813 0.221842 0.024822 0.361184 c
+2.443495 6.207669 l
+2.459521 6.246005 2.483502 6.280954 2.514044 6.310471 c
+2.544586 6.339987 2.581068 6.363479 2.621359 6.379568 c
+3.136095 6.584673 3.490190 6.457380 3.683630 5.997683 c
+4.456066 4.163453 5.241084 2.284618 6.038693 0.361184 c
+6.046862 0.341335 6.050473 0.319957 6.049270 0.298579 c
+6.048068 0.277200 6.042087 0.256349 6.031743 0.237505 c
+6.021398 0.218662 6.006953 0.202295 5.989432 0.189571 c
+5.971912 0.176847 5.951747 0.168076 5.930383 0.163890 c
+5.685270 0.117660 5.402726 0.110174 5.082755 0.141428 c
+4.927737 0.157055 4.829032 0.238446 4.786634 0.385601 c
+4.693889 0.708561 4.567363 1.017521 4.407046 1.312482 c
+4.399570 1.326048 4.388698 1.337386 4.375581 1.345293 c
+4.362463 1.353200 4.347588 1.357388 4.332519 1.357412 c
+h
+2.028123 2.347781 m
+2.023411 2.336388 2.021609 2.324027 2.022883 2.311792 c
+2.024158 2.299558 2.028474 2.287817 2.035438 2.277599 c
+2.042402 2.267380 2.051802 2.258996 2.062828 2.253181 c
+2.073854 2.247366 2.086159 2.244304 2.098672 2.244251 c
+3.933050 2.237414 l
+3.945646 2.237306 3.958076 2.240257 3.969234 2.246004 c
+3.980392 2.251751 3.989933 2.260113 3.997012 2.270356 c
+4.004090 2.280598 4.008486 2.292403 4.009809 2.304717 c
+4.011132 2.317029 4.009338 2.329473 4.004593 2.340943 c
+3.095356 4.572685 l
+3.089679 4.586645 3.079878 4.598610 3.067214 4.607039 c
+3.054549 4.615469 3.039605 4.619976 3.024310 4.619976 c
+3.009014 4.619976 2.994070 4.615469 2.981405 4.607039 c
+2.968741 4.598610 2.958941 4.586645 2.953264 4.572685 c
+2.028123 2.347781 l
+h
+f
+n
+Q
+q
+1.000000 0.000000 -0.000000 1.000000 150.237549 49.961853 cm
+0.000000 0.000000 0.000000 scn
+1.316243 3.443716 m
+0.366053 3.767904 0.027942 5.038213 0.484578 5.829585 c
+1.184105 7.041130 2.853247 6.931436 3.903509 6.235067 c
+3.921693 6.223088 3.937257 6.207486 3.949241 6.189222 c
+3.961226 6.170959 3.969388 6.150419 3.973210 6.128863 c
+3.977032 6.107307 3.976434 6.085195 3.971467 6.063878 c
+3.966500 6.042560 3.957261 6.022492 3.944319 6.004905 c
+3.810243 5.822080 3.656087 5.678429 3.481853 5.573957 c
+3.452133 5.556102 3.418246 5.546590 3.383724 5.546417 c
+3.349203 5.546245 3.315312 5.555418 3.285595 5.572977 c
+2.818273 5.851133 1.858367 6.110683 1.452253 5.588651 c
+0.877086 4.848208 2.659913 4.153800 3.108776 4.003948 c
+4.933375 3.394748 4.769183 0.769897 2.831882 0.451584 c
+1.840238 0.289001 0.955460 0.511984 0.177560 1.120531 c
+-0.241185 1.448637 0.174650 1.812978 0.462234 1.973603 c
+0.588537 2.044122 0.703186 2.028453 0.806171 1.926593 c
+1.368708 1.370282 2.480167 0.825721 3.090310 1.679777 c
+3.762633 2.621001 1.906955 3.242934 1.316243 3.443716 c
+h
+f
+n
+Q
+q
+1.000000 0.000000 -0.000000 1.000000 142.524414 50.296021 cm
+0.000000 0.000000 0.000000 scn
+5.219440 4.179065 m
+4.652850 3.148113 4.011464 2.140057 3.295284 1.154896 c
+3.284713 1.140182 3.270642 1.128266 3.254307 1.120202 c
+3.237972 1.112138 3.219887 1.108176 3.201634 1.108661 c
+3.183381 1.109146 3.165525 1.114061 3.149652 1.122981 c
+3.133779 1.131901 3.120369 1.144547 3.110614 1.159801 c
+1.222212 4.112341 l
+1.152050 4.221585 1.116631 4.212102 1.115969 4.083888 c
+1.093136 0.227628 l
+1.092883 0.203517 1.084746 0.180226 1.070011 0.161401 c
+1.055276 0.142577 1.034771 0.129285 1.011715 0.123617 c
+0.733053 0.057547 0.423615 0.074885 0.083397 0.175625 c
+0.059284 0.182796 0.038159 0.197451 0.023137 0.217422 c
+0.008115 0.237394 -0.000001 0.261620 0.000000 0.286505 c
+0.005963 6.233772 l
+0.006014 6.248657 0.010255 6.263146 0.018180 6.275503 c
+0.026104 6.287860 0.037370 6.297561 0.050637 6.303442 c
+0.311427 6.419228 0.599350 6.443758 0.914417 6.377034 c
+0.947663 6.370236 0.979254 6.356631 1.007254 6.337058 c
+1.035255 6.317484 1.059075 6.292353 1.077247 6.263207 c
+3.111608 3.051626 l
+3.188389 2.931261 3.265508 2.931917 3.342951 3.053591 c
+5.378306 6.254380 l
+5.395798 6.281249 5.420642 6.302394 5.449789 6.315216 c
+5.786036 6.458477 6.122287 6.451933 6.458534 6.295590 c
+6.471844 6.289442 6.483105 6.279627 6.491015 6.267292 c
+6.498926 6.254957 6.503155 6.240608 6.503208 6.225920 c
+6.503208 0.239402 l
+6.503141 0.219820 6.496643 0.200759 6.484664 0.185034 c
+6.472686 0.169309 6.455858 0.157756 6.436682 0.152077 c
+6.111025 0.056570 5.770816 0.040537 5.416035 0.103991 c
+5.402335 0.106518 5.389958 0.113794 5.381070 0.124551 c
+5.372181 0.135308 5.367343 0.148869 5.367386 0.162869 c
+5.365401 1.299139 5.378307 4.230086 5.291928 4.232049 c
+5.279098 4.232037 5.265542 4.227088 5.252757 4.217741 c
+5.239972 4.208395 5.228442 4.195014 5.219440 4.179065 c
+h
+f
+n
+Q
+q
+1.000000 0.000000 -0.000000 1.000000 124.073425 50.326477 cm
+0.000000 0.000000 0.000000 scn
+0.359116 5.695424 m
+0.042952 5.737637 -0.043367 5.901578 0.018862 6.192157 c
+0.042951 6.305379 0.114213 6.362316 0.232649 6.362970 c
+4.565596 6.387512 l
+4.580573 6.387451 4.595070 6.382706 4.606861 6.374013 c
+4.618652 6.365319 4.627083 6.353161 4.630839 6.339410 c
+4.698421 6.094643 4.706449 5.884886 4.654926 5.710146 c
+4.643048 5.670670 4.617739 5.635938 4.582700 5.611031 c
+4.547662 5.586123 4.504729 5.572350 4.460204 5.571731 c
+3.106223 5.556026 l
+3.059875 5.555486 3.015588 5.535829 2.982918 5.501304 c
+2.950247 5.466779 2.931812 5.420151 2.931581 5.371469 c
+2.882401 0.129258 l
+2.882441 0.115131 2.877455 0.101429 2.868299 0.090503 c
+2.859143 0.079578 2.846387 0.072111 2.832217 0.069376 c
+2.483600 0.000004 2.147023 0.037310 1.822495 0.181290 c
+1.809014 0.187479 1.797608 0.197499 1.789611 0.210188 c
+1.781613 0.222878 1.777359 0.237711 1.777334 0.252952 c
+1.783356 1.856374 1.801762 3.459467 1.832542 5.062235 c
+1.835219 5.216687 1.826855 5.348235 1.807450 5.456875 c
+1.801808 5.489129 1.785117 5.518548 1.760132 5.540310 c
+1.735147 5.562072 1.703352 5.574881 1.669944 5.576638 c
+1.226312 5.598889 0.789365 5.638486 0.359116 5.695424 c
+h
+f
+n
+Q
+q
+1.000000 0.000000 -0.000000 1.000000 130.122925 50.322998 cm
+0.000000 0.000000 0.000000 scn
+3.920699 0.821025 m
+3.939731 0.820701 3.958411 0.814934 3.974696 0.804343 c
+3.990980 0.793753 4.004254 0.778745 4.013083 0.760948 c
+4.103840 0.576445 4.106754 0.377168 4.021832 0.163118 c
+4.012613 0.139789 3.996883 0.119755 3.976630 0.105554 c
+3.956378 0.091353 3.932510 0.083623 3.908057 0.083343 c
+0.076829 0.039021 l
+0.066659 0.039022 0.056585 0.041043 0.047201 0.044966 c
+0.037817 0.048889 0.029302 0.054638 0.022156 0.061876 c
+0.015010 0.069114 0.009376 0.077696 0.005573 0.087130 c
+0.001770 0.096563 -0.000122 0.106656 0.000006 0.116826 c
+0.024316 6.311791 l
+0.024319 6.324683 0.029410 6.337059 0.038501 6.346266 c
+0.047591 6.355474 0.059956 6.360778 0.072936 6.361036 c
+1.208694 6.388613 2.344780 6.397150 3.481186 6.386644 c
+3.740816 6.383689 3.983910 6.429978 4.035447 6.090191 c
+4.056839 5.949023 4.023451 5.808839 3.935287 5.669641 c
+3.927226 5.656926 3.916007 5.646411 3.902609 5.639025 c
+3.889211 5.631639 3.874055 5.627609 3.858476 5.627291 c
+1.377894 5.573123 l
+1.199622 5.569184 1.111449 5.483500 1.113394 5.316069 c
+1.132849 3.962829 l
+1.133120 3.940956 1.142429 3.920048 1.158785 3.904586 c
+1.175141 3.889124 1.197247 3.880335 1.220367 3.880096 c
+3.594949 3.846607 l
+3.625578 3.846123 3.655161 3.835048 3.678834 3.815186 c
+3.702508 3.795324 3.718877 3.767854 3.725258 3.737285 c
+3.768044 3.535711 3.766743 3.344318 3.721365 3.163098 c
+3.710557 3.119444 3.685295 3.080657 3.649563 3.052845 c
+3.613831 3.025033 3.569652 3.009767 3.523966 3.009449 c
+1.204805 2.988771 l
+1.188207 2.988511 1.172376 2.981443 1.160732 2.969096 c
+1.149087 2.956748 1.142562 2.940116 1.142570 2.922785 c
+1.148411 1.048534 l
+1.148422 1.001764 1.166975 0.956865 1.200081 0.923517 c
+1.233187 0.890170 1.278190 0.871046 1.325381 0.870269 c
+3.920699 0.821025 l
+h
+f
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  20776
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 165.000000 165.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000020866 00000 n
+0000020890 00000 n
+0000021065 00000 n
+0000021139 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+21198
+%%EOF
\ No newline at end of file
diff --git a/TraccarClient/InitialViewController/InitialViewController.swift b/TraccarClient/InitialViewController/InitialViewController.swift
index 6f21ce423b7c62c3c89a009a0f6ea006b3cff9c2..4f3a5baae3be06d4bd0956b6863eeac63537fa64 100644
--- a/TraccarClient/InitialViewController/InitialViewController.swift
+++ b/TraccarClient/InitialViewController/InitialViewController.swift
@@ -52,14 +52,21 @@ extension InitialViewController {
             window?.makeKeyAndVisible()
 
         } else {
-            let storyboard = UIStoryboard(name: "MainStoryboard", bundle: nil)
-            if let mainViewController = storyboard.instantiateViewController(withIdentifier: "MainViewController") as? MainViewController {
-                let navigation = KNNavigationController(rootViewController: mainViewController)
-                navigation.modalPresentationStyle = .overFullScreen
-                window?.rootViewController = navigation
-                window?.makeKeyAndVisible()
+//            let storyboard = UIStoryboard(name: "MainStoryboard", bundle: nil)
+//            if let mainViewController = storyboard.instantiateViewController(withIdentifier: "MainViewController") as? MainViewController {
+//                let navigation = KNNavigationController(rootViewController: mainViewController)
+//                navigation.modalPresentationStyle = .overFullScreen
+//                window?.rootViewController = navigation
+//                window?.makeKeyAndVisible()
+//
+//            }
+            let connect = ConnectViewController()
+            let navigation = KNNavigationController(rootViewController: connect)
+            navigation.modalPresentationStyle = .overFullScreen
+
+            window?.rootViewController = navigation
+            window?.makeKeyAndVisible()
 
-            }
         }
     }
 }
diff --git a/TraccarClient/KNAlert/KNAlertViewController.swift b/TraccarClient/KNAlert/KNAlertViewController.swift
index 7fb23562c59c89ddab15e0971e44dea1eaf6732c..15383940bbd9fb567525446337fdbb1d2f08f380 100644
--- a/TraccarClient/KNAlert/KNAlertViewController.swift
+++ b/TraccarClient/KNAlert/KNAlertViewController.swift
@@ -35,7 +35,7 @@ final class KNAlertViewController: KNViewController {
     
     // MARK: - Properties
 
-    private let dimViewColor: UIColor = UIColor.purple.withAlphaComponent(0.6)
+    private let dimViewColor: UIColor = UIColor.main.withAlphaComponent(0.6)
     private var type: KNAlertViewType = .none
     private var content_height: CGFloat = 150
     
@@ -110,7 +110,7 @@ extension KNAlertViewController {
         
         // text
         messageTextView.textAlignment = .center
-        messageTextView.textColor = .purple
+        messageTextView.textColor = .main
         messageTextView.font = .medium(16)
         messageTextView.text = ""
         messageTextView.isEditable = false
@@ -125,11 +125,11 @@ extension KNAlertViewController {
         // buttons
         confirmationButton.set(localized: confirmButtonTitle, color: .white, font: .semibold(17))
         confirmationButton.addCorners(20)
-        confirmationButton.backgroundColor = .purple
+        confirmationButton.backgroundColor = .main
         
         confirmationButton.addTarget(self, action: #selector(confirmationButtonTapped), for: .touchUpInside)
         
-        destructiveButton.set(localized: destructiveButtonTitle, color: .purple, font: .semibold(17))
+        destructiveButton.set(localized: destructiveButtonTitle, color: .main, font: .semibold(17))
         destructiveButton.addCorners(20)
         destructiveButton.backgroundColor = .white
 
@@ -210,9 +210,9 @@ extension KNAlertViewController {
                 confirmationButton.set(localized: confirmButtonTitle, color: .white, font: .semibold(17))
                 confirmationButton.addCorners(20)
 
-                confirmationButton.backgroundColor = .purple
+                confirmationButton.backgroundColor = .main
                 
-                destructiveButton.set(title: destructiveButtonTitle, color: .purple, font: .semibold(17))
+                destructiveButton.set(title: destructiveButtonTitle, color: .main, font: .semibold(17))
                 destructiveButton.addCorners(20)
                 destructiveButton.backgroundColor = .white
             }
diff --git a/TraccarClient/KNTextField.swift b/TraccarClient/KNTextField.swift
index b2eae200ea88a12c07d4ca3ad6135441514eeb9a..988fcb579fa2d8f6384028d32eba5793ab30cbe3 100644
--- a/TraccarClient/KNTextField.swift
+++ b/TraccarClient/KNTextField.swift
@@ -35,7 +35,7 @@ public class KNTextField: UITextField {
     func setupUI() {
         borderStyle = .none
         backgroundColor = .clear
-        tintColor = .purple
+        tintColor = .main
         
         padding = .zero
         
@@ -102,7 +102,7 @@ final class MATextFieldCode: KNTextField {
     override func setupUI() {
         autocorrectionType = .no
         textAlignment = .center
-        tintColor = .purple
+        tintColor = .main
     }
     
     override func deleteBackward() {
diff --git a/TraccarClient/LoginViewController/Model/LoginModelController.swift b/TraccarClient/LoginViewController/Model/LoginModelController.swift
index e63bc8226dbaa75e64ca5d3d2c12fcd70b5a24ff..682e181bfcc8ec79c53f2dbc44e556f3b5b21d89 100644
--- a/TraccarClient/LoginViewController/Model/LoginModelController.swift
+++ b/TraccarClient/LoginViewController/Model/LoginModelController.swift
@@ -81,13 +81,15 @@ extension LoginModelController {
             guard let strongSelf = self else {return}
             
             if result.success {
-//                strongSelf.setupTracking()
-                let storyboard = UIStoryboard(name: "MainStoryboard", bundle: nil)
-                if let mainViewController = storyboard.instantiateViewController(withIdentifier: "MainViewController") as? MainViewController {
-                    strongSelf.viewController.navigationController?.pushViewController(mainViewController, animated: true)
-                }
-
+                //                let storyboard = UIStoryboard(name: "MainStoryboard", bundle: nil)
+                //                if let mainViewController = storyboard.instantiateViewController(withIdentifier: "MainViewController") as? MainViewController {
+                //                    strongSelf.viewController.navigationController?.pushViewController(mainViewController, animated: true)
+                //                }
                 
+                
+                let connect = ConnectViewController()
+                strongSelf.viewController.navigationController?.pushViewController(connect, animated: true)
+
             } else {
                 if result.statusCode == 401 {
                     do {
diff --git a/TraccarClient/MainViewController/ConnectViewController.swift b/TraccarClient/MainViewController/ConnectViewController.swift
new file mode 100644
index 0000000000000000000000000000000000000000..f14745e4da5779efcbaa55ea0fc3e27138cf202c
--- /dev/null
+++ b/TraccarClient/MainViewController/ConnectViewController.swift
@@ -0,0 +1,73 @@
+//
+//  ConnectViewController.swift
+//  TraccarClient
+//
+//  Created by George Makhoul on 31/10/2023.
+//  Copyright © 2023 Traccar. All rights reserved.
+//
+
+import UIKit
+import InAppSettingsKit
+
+final class ConnectViewController: KNViewController {
+    // MARK: - Outlets
+    @IBOutlet weak var connectButton: UIButton!
+    @IBOutlet private weak var connectionStatusLogo: UIImageView!
+    @IBOutlet private weak var discLabel: UILabel!
+    @IBOutlet private weak var statusLabel: UILabel!
+    @IBOutlet private weak var statusButton: UIButton!
+    
+    // MARK: - Properties
+    let userDefaults = UserDefaults.standard
+    var trackingController: TrackingController?
+    
+    // MARK: - LifeCycle
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        setupUI()
+    }
+    
+    private func setupUI() {
+        isBackButtonHidden = true
+        statusButton.set(title: "Status", color: .main, font: .medium(16))
+        connectButton.set(title: "")
+        discLabel.set(text: "We're currently tracking your journey. Drive safely!", color: .black, font: .medium(12))
+        discLabel.textAlignment = .center
+        let status = userDefaults.bool(forKey: "service_status_preference")
+        statusChanged(to: status)
+    }
+    
+    private func statusChanged(to: Bool) {
+        connectionStatusLogo.set(icon: to ? .connectedLogo : .disconnectedLogo)
+        connectButton.set(icon: to ? .connectedButton : .disconnectedButton)
+        statusLabel.set(text: to ? "You're on the map!" : "Tracking stopped.", color: .black, font: .bold(20))
+
+    }
+    
+    // MARK: - Actions
+    @IBAction func connectTapped(_ sender: UIButton) {
+        let status = userDefaults.bool(forKey: "service_status_preference")
+        if status {
+            userDefaults.set(false, forKey: "service_status_preference")
+            statusChanged(to: false)
+            StatusViewController.addMessage(NSLocalizedString("Service destroyed", comment: ""))
+            AppDelegate.instance.trackingController?.stop()
+            AppDelegate.instance.trackingController = nil
+            
+        } else {
+            userDefaults.set(true, forKey: "service_status_preference")
+            statusChanged(to: true)
+            StatusViewController.addMessage(NSLocalizedString("Service created", comment: ""))
+            trackingController = TrackingController()
+            trackingController?.start()
+        }
+        
+    }
+    
+    @IBAction func statusTapped(_ sender: UIButton) {
+        let storyboard = UIStoryboard(name: "MainStoryboard", bundle: nil)
+        if let statusViewController = storyboard.instantiateViewController(withIdentifier: "StatusViewController") as? StatusViewController {
+            self.navigationController?.pushViewController(statusViewController, animated: true)
+        }
+    }
+}
diff --git a/TraccarClient/MainViewController/ConnectViewController.xib b/TraccarClient/MainViewController/ConnectViewController.xib
new file mode 100644
index 0000000000000000000000000000000000000000..9d75ac6fb69ef70d10777fb8b7065d73a2113ad6
--- /dev/null
+++ b/TraccarClient/MainViewController/ConnectViewController.xib
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="22155" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+    <device id="retina6_12" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22131"/>
+        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
+        <capability name="System colors in document resources" minToolsVersion="11.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="ConnectViewController" customModule="TraccarClient" customModuleProvider="target">
+            <connections>
+                <outlet property="connectButton" destination="CkC-Ms-GkO" id="b3W-8l-sFQ"/>
+                <outlet property="connectionStatusLogo" destination="zub-LG-NJa" id="WSa-Cl-2dv"/>
+                <outlet property="discLabel" destination="GMM-3p-jRe" id="4fG-9o-848"/>
+                <outlet property="statusButton" destination="HS8-B5-jBo" id="vWq-SO-K1o"/>
+                <outlet property="statusLabel" destination="3f0-IX-LtZ" id="2fh-ed-xJp"/>
+                <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
+            </connections>
+        </placeholder>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT">
+            <rect key="frame" x="0.0" y="0.0" width="393" height="873"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <subviews>
+                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="nmoLogo" translatesAutoresizingMaskIntoConstraints="NO" id="nK6-XO-h2t">
+                    <rect key="frame" x="114" y="0.0" width="165" height="165"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="165" id="nip-ho-zT0"/>
+                        <constraint firstAttribute="width" constant="165" id="pbW-5n-K0u"/>
+                    </constraints>
+                </imageView>
+                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="disconnectedLogo" translatesAutoresizingMaskIntoConstraints="NO" id="zub-LG-NJa">
+                    <rect key="frame" x="73" y="175" width="247" height="253"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="253" id="B4E-Zl-biZ"/>
+                        <constraint firstAttribute="width" constant="247" id="k8d-KL-54m"/>
+                    </constraints>
+                </imageView>
+                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="GMM-3p-jRe">
+                    <rect key="frame" x="73" y="448" width="247" height="20.333333333333314"/>
+                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                    <nil key="textColor"/>
+                    <nil key="highlightedColor"/>
+                </label>
+                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="CkC-Ms-GkO">
+                    <rect key="frame" x="114" y="518.33333333333337" width="165" height="165"/>
+                    <constraints>
+                        <constraint firstAttribute="width" constant="165" id="9th-Vo-PUR"/>
+                        <constraint firstAttribute="height" constant="165" id="BmZ-pN-ikQ"/>
+                    </constraints>
+                    <state key="normal" title="Button"/>
+                    <buttonConfiguration key="configuration" style="plain" image="disconnectedButton"/>
+                    <connections>
+                        <action selector="connectTapped:" destination="-1" eventType="touchUpInside" id="dfA-BM-yu6"/>
+                    </connections>
+                </button>
+                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3f0-IX-LtZ">
+                    <rect key="frame" x="170.33333333333334" y="723.33333333333337" width="52.333333333333343" height="24"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="24" id="htr-pN-8Wx"/>
+                    </constraints>
+                    <fontDescription key="fontDescription" name="HelveticaNeue-Bold" family="Helvetica Neue" pointSize="20"/>
+                    <nil key="textColor"/>
+                    <nil key="highlightedColor"/>
+                </label>
+                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="HS8-B5-jBo">
+                    <rect key="frame" x="302" y="0.0" width="75" height="39"/>
+                    <state key="normal" title="Button"/>
+                    <buttonConfiguration key="configuration" style="plain" title="Button"/>
+                    <connections>
+                        <action selector="statusTapped:" destination="-1" eventType="touchUpInside" id="uDg-3P-81p"/>
+                    </connections>
+                </button>
+            </subviews>
+            <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/>
+            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+            <constraints>
+                <constraint firstItem="3f0-IX-LtZ" firstAttribute="centerX" secondItem="i5M-Pr-FkT" secondAttribute="centerX" id="2ff-id-KKY"/>
+                <constraint firstItem="zub-LG-NJa" firstAttribute="centerX" secondItem="i5M-Pr-FkT" secondAttribute="centerX" id="4fj-2R-IeS"/>
+                <constraint firstItem="nK6-XO-h2t" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" id="6o2-bx-S2k"/>
+                <constraint firstItem="GMM-3p-jRe" firstAttribute="centerX" secondItem="i5M-Pr-FkT" secondAttribute="centerX" id="ClB-52-WWZ"/>
+                <constraint firstItem="nK6-XO-h2t" firstAttribute="centerX" secondItem="i5M-Pr-FkT" secondAttribute="centerX" id="LZN-ga-CaE"/>
+                <constraint firstItem="GMM-3p-jRe" firstAttribute="trailing" secondItem="zub-LG-NJa" secondAttribute="trailing" id="MmD-WW-7cj"/>
+                <constraint firstItem="GMM-3p-jRe" firstAttribute="top" secondItem="zub-LG-NJa" secondAttribute="bottom" constant="20" id="QJn-Ap-lcV"/>
+                <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="HS8-B5-jBo" secondAttribute="trailing" constant="16" id="RSv-Bk-T1j"/>
+                <constraint firstItem="CkC-Ms-GkO" firstAttribute="top" secondItem="GMM-3p-jRe" secondAttribute="bottom" constant="50" id="S7D-8h-M4g"/>
+                <constraint firstItem="GMM-3p-jRe" firstAttribute="leading" secondItem="zub-LG-NJa" secondAttribute="leading" id="XEg-qX-IP0"/>
+                <constraint firstItem="CkC-Ms-GkO" firstAttribute="centerX" secondItem="i5M-Pr-FkT" secondAttribute="centerX" id="Yfb-ej-e93"/>
+                <constraint firstItem="zub-LG-NJa" firstAttribute="top" secondItem="nK6-XO-h2t" secondAttribute="bottom" constant="10" id="fQE-Oi-c8X"/>
+                <constraint firstItem="HS8-B5-jBo" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" id="lQQ-Kk-H7l"/>
+                <constraint firstItem="3f0-IX-LtZ" firstAttribute="top" secondItem="CkC-Ms-GkO" secondAttribute="bottom" constant="40" id="spU-lY-vSm"/>
+            </constraints>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <point key="canvasLocation" x="-31.297709923664122" y="27.112676056338028"/>
+        </view>
+    </objects>
+    <resources>
+        <image name="disconnectedButton" width="160" height="160"/>
+        <image name="disconnectedLogo" width="247" height="247"/>
+        <image name="nmoLogo" width="165" height="165"/>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+    </resources>
+</document>
diff --git a/TraccarClient/MainViewController.swift b/TraccarClient/MainViewController/MainViewController.swift
similarity index 100%
rename from TraccarClient/MainViewController.swift
rename to TraccarClient/MainViewController/MainViewController.swift
diff --git a/TraccarClient/UIColor.swift b/TraccarClient/UIColor.swift
new file mode 100644
index 0000000000000000000000000000000000000000..92110861b662bced5ffd7bd4cb0139bedcb8fec3
--- /dev/null
+++ b/TraccarClient/UIColor.swift
@@ -0,0 +1,65 @@
+//
+//  UIColor.swift
+//  TraccarClient
+//
+//  Created by George Makhoul on 31/10/2023.
+//  Copyright © 2023 Traccar. All rights reserved.
+//
+
+import UIKit
+
+extension UIColor {
+    /**
+     Creates an UIColor from HEX String in "#363636" format
+     - parameter hexString: HEX String in "#363636" format
+     - returns: UIColor from HexString
+     */
+    convenience init(hexString: String, alpha: CGFloat = 1.0) {
+        
+        var hexString: String = hexString.trimmingCharacters(in: .whitespacesAndNewlines)
+        
+        if hexString.hasPrefix("#") {
+            hexString.remove(at: hexString.startIndex)
+        }
+        
+        var color: UInt64 = 0
+        Scanner(string: hexString).scanHexInt64(&color)
+        
+        let red   = CGFloat((color & 0xFF0000) >> 16) / 255.0
+        let green = CGFloat((color & 0x00FF00) >> 8) / 255.0
+        let blue  = CGFloat(color & 0x0000FF) / 255.0
+        
+        self.init(red: red, green: green, blue: blue, alpha: alpha)
+    }
+    
+    /**
+     Creates an UIColor Object based on provided RGB value in integer
+     - parameter red:   Red Value in integer (0-255)
+     - parameter green: Green Value in integer (0-255)
+     - parameter blue:  Blue Value in integer (0-255)
+     - returns: UIColor with specified RGB values
+     */
+    convenience init(red: Int, green: Int, blue: Int) {
+        self.init(red: CGFloat(red) / 255.0, green: CGFloat(green) / 255.0, blue: CGFloat(blue) / 255.0, alpha: 1.0)
+    }
+    
+    convenience init(red: Int, green: Int, blue: Int, alpha: CGFloat) {
+        self.init(red: CGFloat(red) / 255.0, green: CGFloat(green) / 255.0, blue: CGFloat(blue) / 255.0, alpha: alpha)
+    }
+    
+    class func hex(_ hexCode: String) -> UIColor {
+        return UIColor(hexString: hexCode)
+    }
+    
+    class func hex(code: String, alpha: CGFloat) -> UIColor {
+        return UIColor(hexString: code, alpha: alpha)
+    }
+    
+    class func rgb(_ red: Int, _ green: Int, _ blue: Int) -> UIColor {
+        return UIColor(red: red, green: green, blue: blue)
+    }
+    
+    class func rgba(_ red: Int, _ green: Int, _ blue: Int, alpha: CGFloat) -> UIColor {
+        return UIColor(red: red, green: green, blue: blue, alpha: alpha)
+    }
+}
diff --git a/TraccarClient/UIImage.swift b/TraccarClient/UIImage.swift
index d1b809fb08ff2816e38eeffe26bd726be90037d7..46cc3eafae1257c3847773bdab8393d8eda64c97 100644
--- a/TraccarClient/UIImage.swift
+++ b/TraccarClient/UIImage.swift
@@ -13,6 +13,10 @@ extension UIImage {
     // MARK: - Field Icons
     static let field_show_password = img("field_show_password")
     static let field_hide_password = img("field_hide_password")
+    static let connectedLogo = img("connectedLogo")
+    static let disconnectedLogo = img("disconnectedLogo")
+    static let connectedButton = img("connectedButton")
+    static let disconnectedButton = img("disconnectedButton")
     
 }
 func img(_ name: String) -> UIImage {
diff --git a/TraccarClient/UITableView.swift b/TraccarClient/UITableView.swift
index b3ccd8a9454fabbdc17a138aa07bcecfa3cb003e..3a7a557b32fc13105ffe3f081b79407e33f78fc5 100644
--- a/TraccarClient/UITableView.swift
+++ b/TraccarClient/UITableView.swift
@@ -89,7 +89,7 @@ extension UITableView {
     
     func prefetchSpinner() {
         let spinner = UIActivityIndicatorView(style: .medium)
-        spinner.color = .purple
+        spinner.color = .main
         spinner.startAnimating()
         spinner.frame = CGRect(x: CGFloat(0), y: CGFloat(0), width: bounds.width, height: CGFloat(44))
         tableFooterView = spinner