Giter Site home page Giter Site logo

lui5fl / hax Goto Github PK

View Code? Open in Web Editor NEW
7.0 1.0 1.0 2.86 MB

Lightweight Hacker News client for iPhone.

Home Page: https://apple.co/3C72WVo

License: GNU General Public License v3.0

Swift 99.17% JavaScript 0.47% CSS 0.19% HTML 0.17%
app hackernews hackernews-api hackernews-client ios ios-app swift swiftui async-await networking

hax's Introduction

Hax

Hax is a Hacker News client for iPhone, planned for all Apple devices. It aims to provide a browsing experience that is both native and akin to the website's. The app is built from the ground up using SwiftUI, so it's got many features out of the box such as Dark Mode and Dynamic Type.

Download on the App Store

Screenshots

Screenshots

Motivation

I've been reading Hacker News for a few years now. It's a great way to keep up with the latest news from the tech world and I always learn something new every time I go on there.

Back in 2018 I created what could be considered the predecessor to Hax, with the purpose of learning iOS development, though I never got around to publishing it on the App Store. Four years later it still works, barring a few bugs, though its codebase has become quite stale...

I've wanted to publish an app on the App Store for a long time, but not just any app. I wanted the scope of the app to be large enough so that:

  • it can eventually become a full-fledged app, and
  • it allows me to try out many of the latest technologies from Apple that launch every year.

Therefore, after not much consideration, I decided to remake my old Hacker News app on SwiftUI!

Technologies

  • SafariServices
  • Swift Concurrency
  • SwiftUI
  • UIKit

Architecture

I'll start off by saying the initial version of this app could be considered a MVP, since waiting until the app was perfect to release it didn't make sense. Instead, I wanted to launch a functional app and then build on it over the coming years. Consequently there are some things than can be improved upon but they'll be worked out eventually.

The app is written using the MVVM pattern with the main purpose of separating model code from view code. I don't feel content with the approach though, so once I get to writing tests for the entire app I'll see whether I need a whole new architecture or just refine the current one. Now's the best time to do it since there's not much code yet!

Currently the structure of the app is simple. There are three main views, MenuView, FeedView and ItemView, which form the main navigation stack. The data displayed on the last two is retrieved through the HackerNewsService class, which uses a local Swift package, Networking, that encapsulates the networking logic. Both fully take advantage of the Swift Concurrency APIs.

Roadmap

Instead of outlining any upcoming features here, I'll create issues for any feature or fix that I plan on implementing. You can check out the latest issues here. You're more than welcome to create an issue to propose a feature or report a bug.

I also invite you to take a look at the Projects tab, since I'll definitely use this feature for prioritizing issues.

License

Released under GPL-3.0 license. See LICENSE for details.

hax's People

Contributors

lui5fl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

dawnsaju

hax's Issues

Add "Recommended" feed

Special feed with the latest items recommended to the user by a machine learning model.

Use NavigationSplitView

The current navigation logic is deprecated, so it must be changed. It will set the foundation for the iPad and macOS versions.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.