View a 5 minute overview walkthrough here
Check out the backend app repo here
- Swift 5
- UIKit
- MapKit
- Xcode
- Made with Storyboard layout
- iOS app built on MapKit provides an elegant basemap and intuitive interface
- Top-level map view presents Filter button which presents selectable filter modal
- User can filter sites by radius (1-25 miles) as well as site industry sector, release type, and carcinogen status
- Filter selections are translated into HTTP query strings which are sent to the live backend API
- Changing search radius automatically adjusts view frame accordingly
- TRI sites and their address are identified by pins
- Map pins are color-coded and symbolized according to release type
- Tapping map pin expands site characteristics through callout presentation
- Callout for each site allows user to submit site report based on activity characteristics using preconfigured attribute selections
- User report selections are translated into HTTP query strings, which the API uses to generate report table entries
- Joined inheritance structure utilized in database allows for minimalistic implementation
TRI Nearby/
├── /Assets.xcassets
| └── ...(xcode assets)
├── /Base.lproj
| ├── LaunchScreen.storyboard
| └── Main.storyboard
├── /Models
| ├── Query.swift
| ├── Report.swift
| ├── SectorsEnum.swift
| ├── SiteAnnotations.swift
| ├── TRISite.swift
| └── releaseTypeEnum.swift
├── /Views
| └── SiteAnnotationView.swift
├── /ViewControllers
| ├── AnnotationDetailViewController.swift
| ├── FetchJsonData.swift
| ├── FilterButtonViewController.swift
| ├── SpinnerViewController.swift
| └── ViewController.swift
├── AppDelegate.swift
├── Info.plist
└── SceneDelegate.swift