Hackr/News

A simple iOS client for Y Combinator's Hacker News.

App Architecture

Core modules

The core Hackr News Feature and API's modules are platform agnostic, so they can be reused.

MVC

We started with a simple MVC approach, delegating responsabilities for refreshing, displaying cell information and managing cell controllers to its own components.

hackr-news-diagram-mvc

You can check the diff here

MVVM

In this approach we create a new platform agnostic Stories Presentation module, so they now can be reused by any platform.

hackr-news-diagram-mvvm

You can check the diff here

UX goals for the New Stories UI experience

  • [X] Load stories automatically when view is presented
  • [X] Allow customer to manually reload stories (pull to refresh)
  • [X] Show a loading indicator while loading stories

Stories loading experience

  • [X] Render all loaded stories items (Title, Author, score, created at, total comments, url)
  • [X] Load story when is near to be visible (on screen)
  • [X] Cancel load story when is out of screen
  • [X] Show a loading indicator while loading story (shimmer)
  • [X] Option to retry load story in download error
  • [X] Preload when story view is near visible

GitHub