Astronomer

screenshot of Astronomer

Sample app for my talk at the CocoaHeads Conference

Overview

Astronomer is an innovative app designed for GitHub enthusiasts, enabling users to effortlessly search for GitHub users and view who has starred their repositories. Developed as an architectural showcase for the CocoaHeads Conference in 2016, this app introduces a versatile structure, blending various design patterns to create a captivating user experience. With a focus on seamless navigation and efficient data management, Astronomer serves as a robust tool for engaging with the GitHub community.

Navigating through the app is a breeze, as it employs a combination of view controllers, models, and a sophisticated data provider to ensure smooth transitions and interactions. By encapsulating the complexities of data fetching and storage, Astronomer allows users to concentrate on exploring repositories without the hassle of underlying technicalities.

Features

  • User Search: Quickly search for GitHub users and investigate their starred repositories, facilitating easy connection to the community.
  • View Controller Navigation: The app's router efficiently manages view controller presentations and navigations, enhancing the overall usability experience.
  • Model Data Management: Simple structs in the app maintain data integrity while implementing the Equatable protocol to facilitate comparisons.
  • Adapters for Data Transformation: Adapt JSON data from the GitHub API into usable models, allowing for easy integration with the app's structure.
  • Reactive Data Handling: Utilize RxSwift for reactive extensions, enabling dynamic updates to the UI as data changes occur.
  • Robust Storage Solutions: Experience reliable data storage with Realm, ensuring that user data is efficiently saved and accessible throughout the app.
  • Observer Pattern Implementation: View controllers interact with the Data Provider, subscribing to updates without direct network communication, ensuring a clean separation of concerns.
  • Dependency Management: The app leverages Carthage for seamless dependency management, making setup and maintenance straightforward for developers.