An app for browsing all kinds of tech related events. Data is fetched from a remote HTTP server and cached in device's local storage. In case of a network error, an alert is dispatched and cached data is displayed. The event list implements endless scrolling. Events can also be browsed using a map. Tapping on an event marker on the map redirects to the event view.
A custom view called CachedView
has been implemented, along with a CachedImageManager
and ImageCache
singleton. Every downloaded image is cached in Foundation's NSCache
collection. ImageCache
has a maximum count limit of 100 and maximum total size limit of 50MB.
Every event can be saved to calendar using EKEventEditViewController()
. Upon clicking Save button, a event edit view controller is presented modally, allowing users to save an event to a calendar of their choice. Created event contains related information such as description, location and website URL.
In addition to browsing through a list, users can browse using a map. In the TabView
there's a Map tab, upon clicking a MapView
is displayed, with initial MapCameraPosition
set to outzoomed center of Poland. On the map, events are represented with SwiftUI's Annotation()
, with content set to a star icon and name label. Events can be filtered, using the same modal view as in the explore tab. Tapping on an annotation navigates to the selected event screen.