Building Hashnode Lite
3 min read
When Hashnode announced its GraphQL API my first reaction was "it's time to build an app." Seemingly minutes later, there was an iOS application available available to test and an Android application in the queue. My competitive juices started flowing, and 3 days later Hashnode Lite was available for beta!
Hashnode Lite isn't meant to compete with the Hashnode Android application. Hashnode Lite's focus is purely on stories. It will always be a minimal application. Similar to the popular Hackernews app, it has pages for Top, Featured, and New stories.
I am a big fan of simplicity, so I decided to keep Hashnode Lite's UI as stupid and simple as possible.
Compact / comfortable modes
Hashnode Lite has two display density modes: comfortable and compact. The default is comfortable, which offers a detailed view of the story feed.
Compared to comfortable, compact mode trims the detailed fat to allow users to quickly skim articles.
Dark / light modes
Hashnode Lite ships with only two themes: Light and Dark. Doesn't get much simpler. Light is enabled by default and dark can be toggled using either the app logo or the settings option.
I made a conscious decision to publish Hashnode Lite as read-only. This is the MVP of a minimal app after all.
I am not done. There are still a few features that I think are worth adding to the application before the Beta tag is removed.
This one is missing purely because the feature is absent from Hashnode's GraphQL API. Unfortunately, only the first 30 stories are returned in each query. Once paging has been implemented, this feature will be a quick win.
Even in read-only mode, this is a necessity. I wouldn't consider the application complete without the ability to view the comments for a story.
Better comfortable mode
I used the flutter_markdown plugin's default styles to display story content. To my eye, the text comes out pretty small on a mobile device, so I would like to look at creating a large theme that is enabled by default and falling back to the default in compact mode.
Internationalization & rollout
Currently Hashnode Lite is only available in the U.S., Canada, the UK, and a few other countries where early adopters confirmed English as a primary or secondary language. I would like to roll out to many more countries but English is the only language that I speak fluidly. PR's are welcome to all.
Again, this is an MVP so some things missing that generally should be included once the beta tag is removed: logging errors and displaying proper error messages, breaking up widgets, etc.
Reactions summary page
More of a nice to have than a necessity, but being able to see a summary of all of a story's reactions would be nice.
I am planning to publish a series of short articles explaining how I built the application, but feel free to peruse the source. If there's something missing or a bug that you find, don't hesitate to open an issue. I look forward to any feedback & collaboration from the community and hope this application will outgrow me :).
You can find the code used in this article here.
Sup?! I’m Ryan Edge. I am a Software Engineer at Diligent Corporation and a semi-pro open source contributor. If you liked this article, be sure to follow and spread the love! Happy trails