diff --git a/.gitignore b/.gitignore
index a4ced65..f725c1e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,6 +4,8 @@
## Xcode Project
subscribeto/subscribeto.xcodeproj
+subscribeto/Podfile.lock
+subscribeto/Pods/
.DS_Store
subscribeto/subscribeto/.DS_Store
subscribeto/subscribeto/Assets.xcassets/.DS_Store
diff --git a/subscribeto/Podfile b/subscribeto/Podfile
new file mode 100644
index 0000000..5ddda13
--- /dev/null
+++ b/subscribeto/Podfile
@@ -0,0 +1,3 @@
+target 'subscribeto' do
+ pod 'AwaitKit', '~> 5.2.0'
+end
diff --git a/subscribeto/subscribeto.xcworkspace/contents.xcworkspacedata b/subscribeto/subscribeto.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000..271183c
--- /dev/null
+++ b/subscribeto/subscribeto.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/subscribeto/subscribeto.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/subscribeto/subscribeto.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 0000000..18d9810
--- /dev/null
+++ b/subscribeto/subscribeto.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ IDEDidComputeMac32BitWarning
+
+
+
diff --git a/subscribeto/subscribeto/API/API.swift b/subscribeto/subscribeto/API/API.swift
index 9df34f9..cf9e01b 100644
--- a/subscribeto/subscribeto/API/API.swift
+++ b/subscribeto/subscribeto/API/API.swift
@@ -1,62 +1,29 @@
//
-// API.swift
+// APIRequests.swift
// subscribeto
//
-// Created by Elijah Cobb on 9/07/19.
+// Created by Elijah Cobb on 10/07/19.
// Copyright © 2019 subscribeto. All rights reserved.
//
import Foundation
+import AwaitKit
+import PromiseKit
-struct S2NetworkError {
- let code: Int
- let msg: String
-}
-
-struct S2Request {
+struct API {
- enum Method: String {
- case get = "GET"
- case post = "POST"
- case delete = "DELETE"
- case put = "PUT"
+ struct NetworkError {
+ let code: Int
+ let message: String
}
-
- enum Token {
- case session
- case totp(String)
- case email(String)
- case sms(String)
- }
-
- static let baseUrl = "http://api.scribe.to"
- static var sessionToken: String?
-
- var method: Method
- var endpoint: String
- var token: Token
-
- func makeRequest(_ handler: @escaping (Data?, S2NetworkError?) -> Void) {
-
- let session = URLSession.init()
- guard let url = URL.init(string: S2Request.baseUrl + "/" + endpoint) else { return handler(nil, S2NetworkError(code: -1, msg: "The url created was invalid.")) }
- let urlRequest = URLRequest.init(url: url)
-
- session.dataTask(with: urlRequest) { (data: Data?, response: URLResponse?, error: Error?) in
-
- if data != nil { handler(data, nil) }
- else {
-
- guard let err = error else {
- return handler(nil, S2NetworkError(code: -1, msg: "Both "))
- }
-
- handler(nil, S2NetworkError(code: -1, msg: err.localizedDescription))
-
- }
+
+ static func signUp(email: String, password: String) -> Promise {
+ return async {
+ var req = ECHTTPRequest(method: .post, endpoint: "/user/auth/sign-up")
+ req.set(body: ["email": email, "password": password])
+ let res = try await(req.fetch())
+ print(res.status)
}
-
}
-
}
diff --git a/subscribeto/subscribeto/API/Requests.swift b/subscribeto/subscribeto/API/Requests.swift
new file mode 100644
index 0000000..29e39ce
--- /dev/null
+++ b/subscribeto/subscribeto/API/Requests.swift
@@ -0,0 +1,192 @@
+//
+// API.swift
+// subscribeto
+//
+// Created by Elijah Cobb on 9/07/19.
+// Copyright © 2019 subscribeto. All rights reserved.
+//
+
+import Foundation
+import AwaitKit
+import PromiseKit
+
+struct ECHTTPRequest {
+
+ enum HTTPMethod: String {
+ case get = "GET"
+ case post = "POST"
+ case put = "PUT"
+ case delete = "DELETE"
+ }
+
+ enum RequestError: Error {
+ case invalidUrl
+ case unknown
+ }
+
+ var method: HTTPMethod?
+ var endpoint: String?
+ var body: Data?
+ var headers: [String : String] = [String : String]()
+ static var baseUrl: String = "http://api.scribe.to"
+
+ init(method: HTTPMethod, endpoint: String) {
+ self.method = method
+ self.endpoint = endpoint
+ }
+
+ mutating func set(body value: [String: Any]?) {
+
+ guard let value = value else { return }
+ guard let data: Data = try? JSONSerialization.data(withJSONObject: value, options: .prettyPrinted) else { return }
+
+ self.body = data
+ self.set(header: "Content-Type", value: "application/json")
+
+ }
+
+ mutating func set(header: String, value: String) {
+
+ self.headers[header] = value
+
+ }
+
+ mutating func set(token: String) {
+
+ self.headers["Authorization"] = "Bearer \(token)"
+
+ }
+
+ func fetch() throws -> ECHTTPResponse {
+
+ let sephamore = DispatchSemaphore(value: 0)
+
+ var res: ECHTTPResponse?
+ var err: Error?
+
+ self.fetch { (r: ECHTTPResponse?, e: Error?) in
+
+ res = r
+ err = e
+
+ sephamore.signal()
+
+ }
+
+ sephamore.wait()
+
+ if let response = res {
+
+ return response
+
+ } else {
+
+ if let error = err {
+
+ throw error
+
+ } else {
+
+ throw RequestError.unknown
+
+ }
+
+ }
+
+ }
+
+ func fetch(_ completion: @escaping (ECHTTPResponse?, Error?) -> Void) {
+
+ guard let endpoint = self.endpoint else { return completion(nil, RequestError.invalidUrl) }
+ let urlString = ECHTTPRequest.baseUrl + endpoint
+ guard let url = URL(string: urlString) else { return completion(nil, RequestError.invalidUrl) }
+ var request = URLRequest(url: url)
+ request.allHTTPHeaderFields = headers
+ request.httpMethod = self.method?.rawValue
+ if let body = self.body { request.httpBody = body }
+
+ URLSession.shared.dataTask(with: request) { (d, u, e) in
+
+ if let err = e {
+
+ completion(nil, err)
+
+ } else {
+
+ completion(ECHTTPResponse(d, u), nil)
+
+ }
+
+ }.resume()
+
+ }
+
+ func fetch() -> Promise {
+ return Promise.init(resolver: { (resolver) in
+ fetch({ (r, e) in
+ if let response = r {
+ resolver.fulfill(response)
+ } else if let error = e {
+ resolver.reject(error)
+ }
+ })
+ })
+ }
+
+}
+
+
+struct ECHTTPResponse {
+
+ let status: Int
+ let headers: [AnyHashable : Any]
+ let body: Data?
+
+ init(_ d: Data?, _ r: URLResponse?) {
+
+ if let res = r as? HTTPURLResponse {
+
+ self.status = res.statusCode
+ self.headers = res.allHeaderFields
+
+
+ } else {
+
+ self.status = 0
+ self.headers = [AnyHashable: Any]()
+
+ }
+
+ self.body = d
+
+ }
+
+ func getDictionary() -> T? {
+
+ if let data = self.body {
+
+ return try? JSONDecoder().decode(T.self, from: data)
+
+ } else {
+
+ return nil
+
+ }
+
+ }
+
+ func getString() -> String? {
+
+ if let data = self.body {
+
+ return String.init(data: data, encoding: String.Encoding.utf8)
+
+ } else {
+
+ return nil
+
+ }
+
+ }
+
+}
diff --git a/subscribeto/subscribeto/API/S2Structures.swift b/subscribeto/subscribeto/API/S2Structures.swift
new file mode 100644
index 0000000..7b8d310
--- /dev/null
+++ b/subscribeto/subscribeto/API/S2Structures.swift
@@ -0,0 +1,123 @@
+//
+// S2Structures.swift
+// subscribeto
+//
+// Created by Elijah Cobb on 10/07/19.
+// Copyright © 2019 subscribeto. All rights reserved.
+//
+
+import Foundation
+
+struct User : Decodable {
+
+ enum Gender: Int, Decodable {
+ case male = 0
+ case female = 1
+ case other = 2
+ }
+
+ let email: String
+
+ let id: String
+ let updatedAt: Int
+ let createdAt: Int
+
+ let firstName: String?
+ let lastName: String?
+ let phone: String?
+ let gender: Gender?
+ let birthday: String?
+
+}
+
+struct Business : Decodable {
+
+ let name: String
+ let lat: Double
+ let lng: Double
+
+ let id: String
+ let updatedAt: Int
+ let createdAt: Int
+
+}
+
+struct Product : Decodable {
+
+ let name: String
+ let description: String
+ let businessId: String
+
+ let id: String
+ let updatedAt: Int
+ let createdAt: Int
+
+}
+
+struct Program : Decodable {
+
+ let productId: String
+ let businessId: String
+ let price: Int
+ let allowance: Int
+ let closed: Bool
+
+ let successorId: String?
+
+ let id: String
+ let updatedAt: Int
+ let createdAt: Int
+
+}
+
+struct Subscription: Decodable {
+
+ let userId: String
+ let businessId: String
+ let programId: String
+ let autoRenew: Bool
+
+ let id: String
+ let updatedAt: Int
+ let createdAt: Int
+
+}
+
+struct SignInResponse: Decodable {
+ let token: String
+ let type: String
+}
+
+struct GeneralErrorResponse: Decodable {
+ let error: String
+}
+
+
+struct TypeErrorResponse: Decodable {
+
+ struct TypeErrors: Decodable {
+
+ struct TypeError: Decodable {
+ let expected: String
+ let actual: String
+ }
+
+ let path: String
+ let type: TypeError
+ }
+
+ struct TypeErrorRoot: Decodable {
+ let type: [TypeErrors]
+ }
+
+ let errors: TypeErrorRoot
+
+}
+
+
+struct UserSignUp : Decodable {
+
+ let token: String
+ let type: String
+
+}
diff --git a/subscribeto/subscribeto/AppDelegate.swift b/subscribeto/subscribeto/AppDelegate.swift
index 6ab43c4..43e3a61 100644
--- a/subscribeto/subscribeto/AppDelegate.swift
+++ b/subscribeto/subscribeto/AppDelegate.swift
@@ -16,7 +16,10 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
-
+ UITabBar.appearance().backgroundColor = UIColor(red: 0.086, green: 0.098, blue: 0.145, alpha: 1.00)
+ UITabBar.appearance().tintColor = UIColor(red: 0.373, green: 0.714, blue: 0.953, alpha: 1.00)
+ UITabBar.appearance().unselectedItemTintColor = UIColor(red: 0.000, green: 0.141, blue: 0.282, alpha: 1.00)
+ UINavigationBar.appearance().backgroundColor = UIColor(red: 0.086, green: 0.098, blue: 0.145, alpha: 1.00)
return true
diff --git a/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/1024.png b/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/1024.png
new file mode 100644
index 0000000..1a77960
Binary files /dev/null and b/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/1024.png differ
diff --git a/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/120.png b/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/120.png
new file mode 100644
index 0000000..e15ad79
Binary files /dev/null and b/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/120.png differ
diff --git a/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/152.png b/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/152.png
new file mode 100644
index 0000000..6aa1bf6
Binary files /dev/null and b/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/152.png differ
diff --git a/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/167.png b/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/167.png
new file mode 100644
index 0000000..f3b5fce
Binary files /dev/null and b/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/167.png differ
diff --git a/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/180.png b/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/180.png
new file mode 100644
index 0000000..68b7c4e
Binary files /dev/null and b/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/180.png differ
diff --git a/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/20.png b/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/20.png
new file mode 100644
index 0000000..d4a7e26
Binary files /dev/null and b/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/20.png differ
diff --git a/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/29.png b/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/29.png
new file mode 100644
index 0000000..fae1a73
Binary files /dev/null and b/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/29.png differ
diff --git a/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/40.png b/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/40.png
new file mode 100644
index 0000000..45cdecf
Binary files /dev/null and b/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/40.png differ
diff --git a/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/58.png b/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/58.png
new file mode 100644
index 0000000..01097b4
Binary files /dev/null and b/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/58.png differ
diff --git a/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/60.png b/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/60.png
new file mode 100644
index 0000000..7dd18e3
Binary files /dev/null and b/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/60.png differ
diff --git a/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/76.png b/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/76.png
new file mode 100644
index 0000000..b87d565
Binary files /dev/null and b/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/76.png differ
diff --git a/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/80.png b/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/80.png
new file mode 100644
index 0000000..0b92ce3
Binary files /dev/null and b/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/80.png differ
diff --git a/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/87.png b/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/87.png
new file mode 100644
index 0000000..72fa99d
Binary files /dev/null and b/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/87.png differ
diff --git a/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/Contents.json b/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/Contents.json
index d8db8d6..79e4e3f 100644
--- a/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/Contents.json
+++ b/subscribeto/subscribeto/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -1,93 +1,111 @@
{
"images" : [
{
- "idiom" : "iphone",
"size" : "20x20",
+ "idiom" : "iphone",
+ "filename" : "40.png",
"scale" : "2x"
},
{
- "idiom" : "iphone",
"size" : "20x20",
+ "idiom" : "iphone",
+ "filename" : "60.png",
"scale" : "3x"
},
{
- "idiom" : "iphone",
"size" : "29x29",
+ "idiom" : "iphone",
+ "filename" : "58.png",
"scale" : "2x"
},
{
- "idiom" : "iphone",
"size" : "29x29",
+ "idiom" : "iphone",
+ "filename" : "87.png",
"scale" : "3x"
},
{
- "idiom" : "iphone",
"size" : "40x40",
+ "idiom" : "iphone",
+ "filename" : "80.png",
"scale" : "2x"
},
{
- "idiom" : "iphone",
"size" : "40x40",
+ "idiom" : "iphone",
+ "filename" : "120.png",
"scale" : "3x"
},
{
- "idiom" : "iphone",
"size" : "60x60",
+ "idiom" : "iphone",
+ "filename" : "120.png",
"scale" : "2x"
},
{
- "idiom" : "iphone",
"size" : "60x60",
+ "idiom" : "iphone",
+ "filename" : "180.png",
"scale" : "3x"
},
{
- "idiom" : "ipad",
"size" : "20x20",
+ "idiom" : "ipad",
+ "filename" : "20.png",
"scale" : "1x"
},
{
- "idiom" : "ipad",
"size" : "20x20",
+ "idiom" : "ipad",
+ "filename" : "40.png",
"scale" : "2x"
},
{
- "idiom" : "ipad",
"size" : "29x29",
+ "idiom" : "ipad",
+ "filename" : "29.png",
"scale" : "1x"
},
{
- "idiom" : "ipad",
"size" : "29x29",
+ "idiom" : "ipad",
+ "filename" : "58.png",
"scale" : "2x"
},
{
- "idiom" : "ipad",
"size" : "40x40",
+ "idiom" : "ipad",
+ "filename" : "40.png",
"scale" : "1x"
},
{
- "idiom" : "ipad",
"size" : "40x40",
+ "idiom" : "ipad",
+ "filename" : "80.png",
"scale" : "2x"
},
{
- "idiom" : "ipad",
"size" : "76x76",
+ "idiom" : "ipad",
+ "filename" : "76.png",
"scale" : "1x"
},
{
- "idiom" : "ipad",
"size" : "76x76",
+ "idiom" : "ipad",
+ "filename" : "152.png",
"scale" : "2x"
},
{
- "idiom" : "ipad",
"size" : "83.5x83.5",
+ "idiom" : "ipad",
+ "filename" : "167.png",
"scale" : "2x"
},
{
- "idiom" : "ios-marketing",
"size" : "1024x1024",
+ "idiom" : "ios-marketing",
+ "filename" : "1024.png",
"scale" : "1x"
}
],
diff --git a/subscribeto/subscribeto/Assets.xcassets/tabAccount.imageset/Account.1.png b/subscribeto/subscribeto/Assets.xcassets/tabAccount.imageset/Account.1.png
new file mode 100644
index 0000000..db7d7c0
Binary files /dev/null and b/subscribeto/subscribeto/Assets.xcassets/tabAccount.imageset/Account.1.png differ
diff --git a/subscribeto/subscribeto/Assets.xcassets/tabAccount.imageset/Account.2.png b/subscribeto/subscribeto/Assets.xcassets/tabAccount.imageset/Account.2.png
new file mode 100644
index 0000000..2afd99e
Binary files /dev/null and b/subscribeto/subscribeto/Assets.xcassets/tabAccount.imageset/Account.2.png differ
diff --git a/subscribeto/subscribeto/Assets.xcassets/tabAccount.imageset/Account.png b/subscribeto/subscribeto/Assets.xcassets/tabAccount.imageset/Account.png
new file mode 100644
index 0000000..80bcc36
Binary files /dev/null and b/subscribeto/subscribeto/Assets.xcassets/tabAccount.imageset/Account.png differ
diff --git a/subscribeto/subscribeto/Assets.xcassets/tabAccount.imageset/Contents.json b/subscribeto/subscribeto/Assets.xcassets/tabAccount.imageset/Contents.json
new file mode 100644
index 0000000..b98e1b3
--- /dev/null
+++ b/subscribeto/subscribeto/Assets.xcassets/tabAccount.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "Account.2.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "Account.1.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "Account.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/subscribeto/subscribeto/Assets.xcassets/tabDiscover.imageset/Contents.json b/subscribeto/subscribeto/Assets.xcassets/tabDiscover.imageset/Contents.json
new file mode 100644
index 0000000..3431f69
--- /dev/null
+++ b/subscribeto/subscribeto/Assets.xcassets/tabDiscover.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "ic_local_grocery_store_24px.2.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "ic_local_grocery_store_24px.1.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "ic_local_grocery_store_24px.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/subscribeto/subscribeto/Assets.xcassets/tabDiscover.imageset/ic_local_grocery_store_24px.1.png b/subscribeto/subscribeto/Assets.xcassets/tabDiscover.imageset/ic_local_grocery_store_24px.1.png
new file mode 100644
index 0000000..93aa16e
Binary files /dev/null and b/subscribeto/subscribeto/Assets.xcassets/tabDiscover.imageset/ic_local_grocery_store_24px.1.png differ
diff --git a/subscribeto/subscribeto/Assets.xcassets/tabDiscover.imageset/ic_local_grocery_store_24px.2.png b/subscribeto/subscribeto/Assets.xcassets/tabDiscover.imageset/ic_local_grocery_store_24px.2.png
new file mode 100644
index 0000000..6ac73c2
Binary files /dev/null and b/subscribeto/subscribeto/Assets.xcassets/tabDiscover.imageset/ic_local_grocery_store_24px.2.png differ
diff --git a/subscribeto/subscribeto/Assets.xcassets/tabDiscover.imageset/ic_local_grocery_store_24px.png b/subscribeto/subscribeto/Assets.xcassets/tabDiscover.imageset/ic_local_grocery_store_24px.png
new file mode 100644
index 0000000..58c8db0
Binary files /dev/null and b/subscribeto/subscribeto/Assets.xcassets/tabDiscover.imageset/ic_local_grocery_store_24px.png differ
diff --git a/subscribeto/subscribeto/Assets.xcassets/tabNearMe.imageset/Contents.json b/subscribeto/subscribeto/Assets.xcassets/tabNearMe.imageset/Contents.json
new file mode 100644
index 0000000..a11cc92
--- /dev/null
+++ b/subscribeto/subscribeto/Assets.xcassets/tabNearMe.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "near1.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "near2.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "near3.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/subscribeto/subscribeto/Assets.xcassets/tabNearMe.imageset/near1.png b/subscribeto/subscribeto/Assets.xcassets/tabNearMe.imageset/near1.png
new file mode 100644
index 0000000..553da39
Binary files /dev/null and b/subscribeto/subscribeto/Assets.xcassets/tabNearMe.imageset/near1.png differ
diff --git a/subscribeto/subscribeto/Assets.xcassets/tabNearMe.imageset/near2.png b/subscribeto/subscribeto/Assets.xcassets/tabNearMe.imageset/near2.png
new file mode 100644
index 0000000..0fb59ef
Binary files /dev/null and b/subscribeto/subscribeto/Assets.xcassets/tabNearMe.imageset/near2.png differ
diff --git a/subscribeto/subscribeto/Assets.xcassets/tabNearMe.imageset/near3.png b/subscribeto/subscribeto/Assets.xcassets/tabNearMe.imageset/near3.png
new file mode 100644
index 0000000..0a7193a
Binary files /dev/null and b/subscribeto/subscribeto/Assets.xcassets/tabNearMe.imageset/near3.png differ
diff --git a/subscribeto/subscribeto/Assets.xcassets/tabOrder.imageset/Contents.json b/subscribeto/subscribeto/Assets.xcassets/tabOrder.imageset/Contents.json
new file mode 100644
index 0000000..8b7d877
--- /dev/null
+++ b/subscribeto/subscribeto/Assets.xcassets/tabOrder.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "Money.2.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "Money.1.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "Money.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/subscribeto/subscribeto/Assets.xcassets/tabOrder.imageset/Money.1.png b/subscribeto/subscribeto/Assets.xcassets/tabOrder.imageset/Money.1.png
new file mode 100644
index 0000000..e38e6ab
Binary files /dev/null and b/subscribeto/subscribeto/Assets.xcassets/tabOrder.imageset/Money.1.png differ
diff --git a/subscribeto/subscribeto/Assets.xcassets/tabOrder.imageset/Money.2.png b/subscribeto/subscribeto/Assets.xcassets/tabOrder.imageset/Money.2.png
new file mode 100644
index 0000000..6722948
Binary files /dev/null and b/subscribeto/subscribeto/Assets.xcassets/tabOrder.imageset/Money.2.png differ
diff --git a/subscribeto/subscribeto/Assets.xcassets/tabOrder.imageset/Money.png b/subscribeto/subscribeto/Assets.xcassets/tabOrder.imageset/Money.png
new file mode 100644
index 0000000..8a5d84b
Binary files /dev/null and b/subscribeto/subscribeto/Assets.xcassets/tabOrder.imageset/Money.png differ
diff --git a/subscribeto/subscribeto/Assets.xcassets/tabSubscription.imageset/Contents.json b/subscribeto/subscribeto/Assets.xcassets/tabSubscription.imageset/Contents.json
new file mode 100644
index 0000000..5481deb
--- /dev/null
+++ b/subscribeto/subscribeto/Assets.xcassets/tabSubscription.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "List 2.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "List.1.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "List.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/subscribeto/subscribeto/Assets.xcassets/tabSubscription.imageset/List 2.png b/subscribeto/subscribeto/Assets.xcassets/tabSubscription.imageset/List 2.png
new file mode 100644
index 0000000..7d77f78
Binary files /dev/null and b/subscribeto/subscribeto/Assets.xcassets/tabSubscription.imageset/List 2.png differ
diff --git a/subscribeto/subscribeto/Assets.xcassets/tabSubscription.imageset/List.1.png b/subscribeto/subscribeto/Assets.xcassets/tabSubscription.imageset/List.1.png
new file mode 100644
index 0000000..c23c578
Binary files /dev/null and b/subscribeto/subscribeto/Assets.xcassets/tabSubscription.imageset/List.1.png differ
diff --git a/subscribeto/subscribeto/Assets.xcassets/tabSubscription.imageset/List.png b/subscribeto/subscribeto/Assets.xcassets/tabSubscription.imageset/List.png
new file mode 100644
index 0000000..c3e81ec
Binary files /dev/null and b/subscribeto/subscribeto/Assets.xcassets/tabSubscription.imageset/List.png differ
diff --git a/subscribeto/subscribeto/Info.plist b/subscribeto/subscribeto/Info.plist
index 16be3b6..8ff28fa 100644
--- a/subscribeto/subscribeto/Info.plist
+++ b/subscribeto/subscribeto/Info.plist
@@ -4,8 +4,14 @@
CFBundleDevelopmentRegion
$(DEVELOPMENT_LANGUAGE)
+ CFBundleDisplayName
+ subscribeto
CFBundleExecutable
$(EXECUTABLE_NAME)
+ CFBundleIcons
+
+ CFBundleIcons~ipad
+
CFBundleIdentifier
$(PRODUCT_BUNDLE_IDENTIFIER)
CFBundleInfoDictionaryVersion
@@ -20,6 +26,11 @@
1
LSRequiresIPhoneOS
+ NSAppTransportSecurity
+
+ NSAllowsArbitraryLoads
+
+
UILaunchStoryboardName
LaunchScreen
UIMainStoryboardFile
diff --git a/subscribeto/subscribeto/Main.storyboard b/subscribeto/subscribeto/Main.storyboard
index f86fd92..8437b03 100644
--- a/subscribeto/subscribeto/Main.storyboard
+++ b/subscribeto/subscribeto/Main.storyboard
@@ -1,11 +1,9 @@
-
-
-
-
+
+
-
+
@@ -15,45 +13,51 @@
-
+
-
+
-
+
-
+
-
+
@@ -101,6 +105,218 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -118,8 +334,56 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/subscribeto/subscribeto/MainVC.swift b/subscribeto/subscribeto/MainVC.swift
new file mode 100644
index 0000000..65c2d7f
--- /dev/null
+++ b/subscribeto/subscribeto/MainVC.swift
@@ -0,0 +1,49 @@
+//
+// MainVC.swift
+// subscribeto
+//
+// Created by Elijah Cobb on 9/07/19.
+// Copyright © 2019 subscribeto. All rights reserved.
+//
+
+import UIKit
+import MapKit
+import PromiseKit
+import AwaitKit
+
+class MainVC: UIViewController {
+
+ @IBOutlet var topMap: MKMapView!
+ @IBOutlet var topLeftContainer: UIView!
+ @IBOutlet var topRightContainer: UIView!
+ @IBOutlet var bottomLeftContainer: UIView!
+ @IBOutlet var bottomRightContainer: UIView!
+
+ override func viewDidLoad() {
+
+ super.viewDidLoad()
+
+ topLeftContainer.layer.cornerRadius = 10
+ topRightContainer.layer.cornerRadius = 10
+ bottomLeftContainer.layer.cornerRadius = 10
+ bottomRightContainer.layer.cornerRadius = 10
+
+ topLeftContainer.backgroundColor = UIColor.subscribeto.blue2
+ topRightContainer.backgroundColor = UIColor.subscribeto.blue2
+ bottomLeftContainer.backgroundColor = UIColor.subscribeto.blue2
+ bottomRightContainer.backgroundColor = UIColor.subscribeto.blue2
+
+ }
+
+ override func viewDidAppear(_ animated: Bool) {
+
+ super.viewDidAppear(animated)
+
+ async {
+ try await(API.signUp(email: "elijah", password: "alpine"))
+ }
+
+ }
+
+}
+
diff --git a/subscribeto/subscribeto/subscribeto.entitlements b/subscribeto/subscribeto/subscribeto.entitlements
new file mode 100644
index 0000000..0c67376
--- /dev/null
+++ b/subscribeto/subscribeto/subscribeto.entitlements
@@ -0,0 +1,5 @@
+
+
+
+
+