GithubHelp home page GithubHelp logo

robertodoering / harpy Goto Github PK

View Code? Open in Web Editor NEW
2.0K 40.0 195.0 72.74 MB

a Twitter app built with Flutter ๐Ÿฆ…

License: GNU General Public License v3.0

Java 0.34% Dart 98.95% Ruby 0.67% Swift 0.04% Objective-C 0.01%
flutter twitter twitter-api twitter-client dart mobile mobile-app

harpy's Introduction

a feature rich Twitter experience built with Flutter



harpy is no longer in active development after Twitter's decision to disallow third party Twitter clients.

harpy was available in the Play Store as a free and paid app and was used by over 75.000 active users.


Check out a walkthrough of the app on youtube here


More images
Home Media timeline Theme selection
Menu Trends Tweet search filter

About

harpy is an alternative Twitter client that focuses on a nice user experience with unique features.

This project has been in development since late 2018 and aims to be a good example for a medium-large sized Flutter app with a focus on code quality and maintainability.

Some interesting features of the app include:

  • riverpod
    • for state management using the included state_notifier
    • for dependency injection / service locators with easily mockable dependencies
  • go_router for routing with support for Twitter url deeplinks
  • sentry as an online error tracking service to report unhandled exceptions
  • Fully featured theme customization
  • Fully featured video player using the video_player package
  • My own twitter_api package to make use of the official Twitter api
  • A 'pro' and 'free' android product flavor
  • Many customized animations sprinkled around the app, including custom logo animations created with Rive

Development / Setup

Follow the project setup for building harpy instructions to get the project running.

harpy's People

Contributors

adcorpo avatar altynbek132 avatar aryashakya avatar dependabot[bot] avatar dhi13man avatar dre8597 avatar eboye avatar goooler avatar ivribalko avatar m-haisham avatar mbestavros avatar nplettenberg avatar pedr0luiz avatar renovate-bot avatar renovate[bot] avatar robertodoering avatar s-ecki avatar s3basuchian avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

harpy's Issues

Add an app icon

An icon for the free and pro version of Harpy.
The icon can also be used in the EntryScreen to show when the app opens.

Initialization screen

When opening the app for the first time, the user should be greeted in a screen where they can set up their app and change the theme and ultimately log into their twitter account.
The default selected theme should be the light theme or the dark theme depending on the os setting.

Refactor cache

Using a nosql database will improve performance and be allow for migrating to a new version.

Currently duplicate tweets that exist for a user and the home timeline are cached separately.
Instead all tweets should be cached together and only the ids of the home timeline and the user timelines should be cached and used to retrieve the tweets.

Quoted tweets can cause problems when cut off

If the quoted tweet text contains a multi character emoji at the position it is cut off, it throws an "unformatted utf16" exception and causes the list to not render any subsequent tweets.

Setup auto email handler for catcher

When a user sends a report, it should automatically be sent via email.
The credentials should be loaded through a file similar to the api keys.

Update the setup screen layout to be the same as the login screen with auto scaling text

After adding the animated Harpy logo to the login screen, the layout changed to be different from the setup screen, even though they should be the same.
Additionally the package:auto_size_text can be used to make sure the user name scales according to the available space (like the Harpy logo in to login screen).
The auto size text could also be used in the UserProfileScreen and other places for the user name.

Show in-app mentions notifications & Implement mentions timeline

  • Visible as a tab in the home screen (todo: with #297)
  • Contains number of new mentions since last visit
    • Won't show any on first open
  • Notifications screen shows the mentions timeline for the authenticated user
  • Mentions timeline is fetched upon app start to get number of new mentions
  • Visiting the mentions timeline reduces the number to 0

Nice to have:

  • Also show mentions timeline when the user opens their own profile
  • Scroll to the last read mention when opening mentions timeline with new mentions

Refactor media player + image gallery

The media player and image gallery for Twitter Media needs to be refactored and improved.

New features & changes include:

  • hide media on background click
  • better image gallery gestures
    • swiping right while zoomed in should show the next image in the gallery
  • better video ui
  • video quality settings
  • tweet actions if space is available
  • fix media player aspect ratio in tweet tile

Make sure notifyListeners() is not called after a ChangeNotifier has been disposed

When an async tasks in a ChangeNotifier completes we need to make sure it hasn't been disposed before notifyListiners is called.
Example: open user profile and immediately go back.

Maybe don't use ChangeNotifier when asynchronous tasks are involved.

Calling notifyListeners doesn't break anything, it only fails an assert for debug builds but it should be best practice to avoid it.

Setting to autoplay videos and gifs + only when connected to wifi

When set to true videos and gifs will automatically start playing when scrolling through the timeline.
Additionally it should allow to only autoplay when connected to wifi.

Should be on but only when connected to wifi initially.

Media player needs to be refactored for this option to get implemented fully.

Automatically refresh home timeline tweets

While showing the home timeline, periodic requests with a filter to only request new tweets can automatically be added to the list.
Similarly to the official twitter app, when not on the top of the list an element can notify for new tweets.

Composing a tweet

You should be able to tweet and reply to existing tweets.
Also you need to be able to upload images/gifs and videos to append to your tweet.

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.