Giter Site home page Giter Site logo

wsloth / index Goto Github PK

View Code? Open in Web Editor NEW
10.0 3.0 9.0 2.71 MB

The Index is a simple Hacker News reader app which is focused on making you read less, by only showing you the top stories of the last 24 hours.

Kotlin 0.24% Swift 0.80% Objective-C 0.07% Dart 96.22% Ruby 2.67%
hacktoberfest flutter hacker-news hacker-news-client help-wanted good-first-issue

index's Introduction

The Index

Index CI/CD

The Index is a simple Hacker News reader app which is focused on making you read less, by only showing you the top stories of the last 24 hours.

screenshot of app

image

Contributing

I'm always looking for contributions to make this app a bit better, and eventually launch it on the Play Store & App Store! Check out the github issues for things you can help with.

Developing

This app works on both iOS and Android. To start working on it locally, you can follow these steps:

  1. Install Flutter
  2. Clone the project
  3. Restore Flutter dependencies
  4. flutter run, select your device and go!

index's People

Contributors

agent515 avatar dannylo-gaivota avatar milansurelia avatar rex51 avatar shivammenda avatar wsloth avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

index's Issues

Add daily one-time refreshing mechanism for newsfeed

One of the features I really want for this app is a mechanism where the news-feed is only refreshed once a day. The aim is to provide a great newspaper-like Hacker News reading experience,

In short, these are the requirements:

  • Automatically refresh the newsfeed once a day when opening the app, between 7am and 10pm (device time)
  • When refreshing, store a bit of state that notes the app has already been refreshed for today
  • Until the next fresh day, no refresh will be done. So the newsfeed of that day will have to be stored (just the list of newsfeed article ID's should be enough -- the rest can be fetched from the API)
  • Timestamp of refresh becomes the edition number: Thursday, 12 September, 17:45 Edition

Nice to have:

  • A manual refresh setting somewhere for the real addicts. Maybe first with a popup informing of the time until next edition, asking the user to have patience.
  • Allow the user to view the feed in their preferred way. I usually read Hacker news using https://hckrnews.com/ , where I use the "Top 50%" filter.

Use SharedPreferences to store whether the user has already seen the app onboarding screen

The onboarding screen was introduced in PR #12, but it does not retain a boolean for whether the user has already seen the onboarding screen.

To do:

  • Install the Shared Preferences package
  • After the onboarding screen has been shown, store a boolean value
  • When re-opening the app, evaluate whether the boolean is present and skip the onboarding screen

Anybody can pick this up, no assignments necessary. Let me know if I need to provide more info!

Build an introduction onboarding screen for new app users

I've got a general vision where I want this app to be a Hacker News client which makes you read a bit less - by providing you with an updated newsfeed only once a day. The general UI has already been designed by me, but there's tons of room for new features.

If you are interested in tipping your toes in Flutter development, let me know what you want to do! I'm a beginner with Flutter as well, and would love to collaborate on this.

Improve comment section experience

Right now, the comments sometimes overlap other comments. I have the feeling this is because of the fact they are rendered in an overlay sliding panel, but I could be wrong.

An additional is that the comments take a lot of time and resources to render. I'd like to implement a lazy-loading mechanism, where comments are only fetched from the API when the user starts scrolling down to them.

There's lots more to improve, but I think these things would be a start1

Improve flutter webview performance and experience

Right now, when viewing an article the experience is not ideal:

  • Some websites seem to not recognize a smartphone is being used, rendering in a desktop view. Perhaps a maximum width needs to be set?
  • Links cannot be tapped yet -- they should open in the user browser of choice.
  • When files are accessed (some posts link directly to a PDF), nothing shows up.
  • The performance can be a bit slow
  • There's probably more to improve, let me know!

Suggest your own feature for this Hacker News reader app built with Flutter!

I've got a general vision where I want this app to be a Hacker News client which makes you read a bit less - by providing you with an updated newsfeed only once a day. The general UI has already been designed by me, but there's tons of room for new features.

If you are interested in tipping your toes in Flutter development, let me know what you want to do! I'm a beginner with Flutter as well, and would love to collaborate on this.

Fix flutter build & github actions build for existing app

For some reason, when I run the latest version locally using flutter run on the iOS simulator, it works fine. But running flutter build apk fails without a clear reason.

I hope somebody with more knowledge than me could pick this up!

> flutter build apk

๐Ÿ’ช Building with sound null safety ๐Ÿ’ช


FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:checkReleaseAarMetadata'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.CheckAarMetadataWorkAction
   > /Users/wsloth/.gradle/caches/transforms-3/077a98aa3bc24bcff6f6f40c1062628b/transformed/jetified-window-java-1.0.0-beta04/META-INF/com/android/build/gradle/aar-metadata.properties (No such file or directory)

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 5s
Running Gradle task 'assembleRelease'...                            7.0s
Gradle task assembleRelease failed with exit code 1

Clean up code

I'm an absolute dart and flutter beginner and can't really tell whether some things are good or ugly. But I have the feeling lots of code is badly written. Feel free to refactor, clean-up and improve where possible!

Add unit tests for flutter functionality

It would be nice to add some unit tests to demonstrate core functionality works.

And additionally, run the unit tests in the github actions workflow to run for every PR!

Show information message when reaching the end of the newsfeed

When you've scrolled all the way down to the bottom, it would be nice to show a message to the user indicating they did.

Perhaps a message like "Come back tomorrow for the latest news, directly from the index!" when reaching the end of the newsfeed, with a bit of snazzy styling ๐Ÿ˜‰

Fix flutter_statusbarcolor dependency issues.

When running flutter build, the following error is logged:

The plugin `flutter_statusbarcolor` uses a deprecated version of the Android embedding.
To avoid unexpected runtime failures, or future build failures, try to see if this plugin supports the Android V2 embedding.
Otherwise, consider removing it since a future release of Flutter will remove these deprecated APIs.
If you are plugin author, take a look at the docs for migrating the plugin to the V2 embedding:
https://flutter.dev/go/android-plugin-migration.

I'd like to fix this, but at the same time I really do want to color the status bar identically white or black according to the system theme.

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.