{"id":13568889,"url":"https://github.com/robertodoering/harpy","last_synced_at":"2025-04-11T11:48:56.334Z","repository":{"id":37411258,"uuid":"155077431","full_name":"robertodoering/harpy","owner":"robertodoering","description":"a Twitter app built with Flutter 🦅","archived":false,"fork":false,"pushed_at":"2024-08-01T23:32:46.000Z","size":74518,"stargazers_count":2080,"open_issues_count":3,"forks_count":199,"subscribers_count":39,"default_branch":"master","last_synced_at":"2025-04-03T23:08:01.436Z","etag":null,"topics":["dart","flutter","mobile","mobile-app","twitter","twitter-api","twitter-client"],"latest_commit_sha":null,"homepage":"","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/robertodoering.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":"robertodoering","tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":["paypal.me/robertodoering"]}},"created_at":"2018-10-28T14:02:58.000Z","updated_at":"2025-04-01T09:43:01.000Z","dependencies_parsed_at":"2023-02-12T04:45:25.783Z","dependency_job_id":"7e1d5fd1-51ab-4bc4-9ff8-afbcd1b9d66f","html_url":"https://github.com/robertodoering/harpy","commit_stats":null,"previous_names":[],"tags_count":77,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robertodoering%2Fharpy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robertodoering%2Fharpy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robertodoering%2Fharpy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robertodoering%2Fharpy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/robertodoering","download_url":"https://codeload.github.com/robertodoering/harpy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248388907,"owners_count":21095479,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dart","flutter","mobile","mobile-app","twitter","twitter-api","twitter-client"],"created_at":"2024-08-01T14:00:32.960Z","updated_at":"2025-04-11T11:48:56.309Z","avatar_url":"https://github.com/robertodoering.png","language":"Dart","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg max-height=\"172\" width=\"80%\" src=\"media/title.png\"/\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\na feature rich Twitter experience built with \u003ca href=\"https://flutter.dev/\"\u003eFlutter\u003c/a\u003e\n\u003c/p\u003e\n  \n\u003cbr\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/robertodoering/harpy/stargazers\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/robertodoering/harpy?color=8B00FD\u0026logo=github\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/robertodoering/harpy/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/robertodoering/harpy?color=BC0492\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/robertodoering/harpy/commits/master\"\u003e\u003cimg src=\"https://img.shields.io/github/commits-since/robertodoering/harpy/latest?color=F2091C\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/robertodoering/harpy/commits/master\"\u003e\u003cimg src=\"https://img.shields.io/github/commit-activity/m/robertodoering/harpy?color=FD0A04\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/Solido/awesome-flutter\"\u003e\n   \u003cimg src=\"https://img.shields.io/badge/Awesome-Flutter-blue.svg?longCache=true\"/\u003e\n  \u003c/a\u003e\n  \n  \u003ca href=\"https://github.com/robertodoering/harpy/actions/workflows/flutter_push.yml\"\u003e\n   \u003cimg src=\"https://github.com/robertodoering/harpy/actions/workflows/flutter_push.yml/badge.svg\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cbr\u003e\n\n\u003cp align=\"center\"\u003e\nharpy is no longer in active development after Twitter's decision to disallow third party Twitter clients.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\nharpy was available in the Play Store as a free and paid app and was used by over 75.000 active users.\n\u003c/p\u003e\n\n\u003cbr\u003e\n\n\u003cp align=\"center\"\u003e\n  Check out a walkthrough of the app on youtube \u003ca href=\"https://www.youtube.com/watch?v=egpQsNxLwvU\" target=\"_blank\"\u003ehere\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cbr\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ckbd\u003e\u003cimg height=\"480\" src=\"media/login_screen.gif\"/\u003e\u003c/kbd\u003e\n  \u003ckbd\u003e\u003cimg height=\"480\" src=\"media/setup_screen.gif\"/\u003e\u003c/kbd\u003e\n\u003c/p\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eMore images\u003c/summary\u003e\n  \n  | **Home** | **Media timeline** | **Theme selection** |\n  | :---: | :---: | :---: |\n  | \u003ckbd\u003e\u003cimg src=\"media/timeline.jpg\"/\u003e\u003c/kbd\u003e | \u003ckbd\u003e\u003cimg src=\"media/media_timeline.jpg\"/\u003e\u003c/kbd\u003e | \u003ckbd\u003e\u003cimg src=\"media/theme_selection.jpg\"/\u003e\u003c/kbd\u003e |\n  | **Menu** | **Trends** | **Tweet search filter** |\n  | \u003ckbd\u003e\u003cimg src=\"media/drawer.jpg\"/\u003e\u003c/kbd\u003e | \u003ckbd\u003e\u003cimg src=\"media/trends.jpg\"/\u003e\u003c/kbd\u003e | \u003ckbd\u003e\u003cimg src=\"media/tweet_search_filter.jpg\"/\u003e\u003c/kbd\u003e |\n\u003c/details\u003e\n\n## About\n\n**harpy** is an alternative Twitter client that focuses on a nice user experience with unique features.\n\nThis 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.\n\nSome interesting features of the app include:\n\n* [riverpod](https://pub.dev/packages/riverpod)\n  * for state management using the included [state_notifier](https://pub.dev/packages/state_notifier)\n  * for dependency injection / service locators with easily mockable dependencies\n* [go_router](https://pub.dev/packages/go_router) for routing with support for Twitter url deeplinks\n* [sentry](https://pub.dev/packages/sentry) as an online error tracking service to report unhandled exceptions\n* Fully featured theme customization\n* Fully featured video player using the\n  [video_player](https://pub.dev/packages/video_player) package\n* My own [twitter_api](https://github.com/robertodoering/twitter_api) package to make use of the official Twitter api\n* A 'pro' and 'free' android\n  [product flavor](https://developer.android.com/studio/build/build-variants)\n* Many customized animations sprinkled around the app, including custom logo animations created with [Rive](https://flare.rive.app/a/rbyd/files/recent/all)\n\n### Development / Setup\n\nFollow the [project setup for building harpy](https://github.com/robertodoering/harpy/wiki/Project-setup-for-building-harpy) instructions to get the project running.\n","funding_links":["https://ko-fi.com/robertodoering","paypal.me/robertodoering"],"categories":["开源App","开源应用","🌐 Social \u0026 Communication","Dart","Overview","Uncategorized","Top [🔝](#readme)","Open Source Apps"],"sub_categories":["Top","热门的","👥 Social Media","Twitter","Uncategorized"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobertodoering%2Fharpy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frobertodoering%2Fharpy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobertodoering%2Fharpy/lists"}