[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-9261":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":17,"compositeScore":19,"rankGlobal":10,"rankLanguage":10,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":21,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":32,"readmeContent":33,"aiSummary":34,"trendingCount":16,"starSnapshotCount":16,"syncStatus":15,"lastSyncTime":35,"discoverSource":36},9261,"harpy","robertodoering\u002Fharpy","robertodoering","a Twitter app built with Flutter 🦅","",null,"Dart",2074,202,37,2,0,1,3,28.92,"GNU General Public License v3.0",false,"master",true,[25,26,27,28,29,30,31],"dart","flutter","mobile","mobile-app","twitter","twitter-api","twitter-client","2026-06-12 02:02:05","\u003Cp align=\"center\">\n  \u003Cimg max-height=\"172\" width=\"80%\" src=\"media\u002Ftitle.png\"\u002F>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\na feature rich Twitter experience built with \u003Ca href=\"https:\u002F\u002Fflutter.dev\u002F\">Flutter\u003C\u002Fa>\n\u003C\u002Fp>\n  \n\u003Cbr>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Frobertodoering\u002Fharpy\u002Fstargazers\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Frobertodoering\u002Fharpy?color=8B00FD&logo=github\"\u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Frobertodoering\u002Fharpy\u002Freleases\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002Frobertodoering\u002Fharpy?color=BC0492\"\u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Frobertodoering\u002Fharpy\u002Fcommits\u002Fmaster\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fcommits-since\u002Frobertodoering\u002Fharpy\u002Flatest?color=F2091C\"\u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Frobertodoering\u002Fharpy\u002Fcommits\u002Fmaster\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fcommit-activity\u002Fm\u002Frobertodoering\u002Fharpy?color=FD0A04\"\u002F>\u003C\u002Fa>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FSolido\u002Fawesome-flutter\">\n   \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FAwesome-Flutter-blue.svg?longCache=true\"\u002F>\n  \u003C\u002Fa>\n  \n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Frobertodoering\u002Fharpy\u002Factions\u002Fworkflows\u002Fflutter_push.yml\">\n   \u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Frobertodoering\u002Fharpy\u002Factions\u002Fworkflows\u002Fflutter_push.yml\u002Fbadge.svg\"\u002F>\n  \u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cbr>\n\n\u003Cp align=\"center\">\nharpy is no longer in active development after Twitter's decision to disallow third party Twitter clients.\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\nharpy was available in the Play Store as a free and paid app and was used by over 75.000 active users.\n\u003C\u002Fp>\n\n\u003Cbr>\n\n\u003Cp align=\"center\">\n  Check out a walkthrough of the app on youtube \u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=egpQsNxLwvU\" target=\"_blank\">here\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cbr>\n\n\u003Cp align=\"center\">\n  \u003Ckbd>\u003Cimg height=\"480\" src=\"media\u002Flogin_screen.gif\"\u002F>\u003C\u002Fkbd>\n  \u003Ckbd>\u003Cimg height=\"480\" src=\"media\u002Fsetup_screen.gif\"\u002F>\u003C\u002Fkbd>\n\u003C\u002Fp>\n\n\u003Cdetails>\n  \u003Csummary>More images\u003C\u002Fsummary>\n  \n  | **Home** | **Media timeline** | **Theme selection** |\n  | :---: | :---: | :---: |\n  | \u003Ckbd>\u003Cimg src=\"media\u002Ftimeline.jpg\"\u002F>\u003C\u002Fkbd> | \u003Ckbd>\u003Cimg src=\"media\u002Fmedia_timeline.jpg\"\u002F>\u003C\u002Fkbd> | \u003Ckbd>\u003Cimg src=\"media\u002Ftheme_selection.jpg\"\u002F>\u003C\u002Fkbd> |\n  | **Menu** | **Trends** | **Tweet search filter** |\n  | \u003Ckbd>\u003Cimg src=\"media\u002Fdrawer.jpg\"\u002F>\u003C\u002Fkbd> | \u003Ckbd>\u003Cimg src=\"media\u002Ftrends.jpg\"\u002F>\u003C\u002Fkbd> | \u003Ckbd>\u003Cimg src=\"media\u002Ftweet_search_filter.jpg\"\u002F>\u003C\u002Fkbd> |\n\u003C\u002Fdetails>\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:\u002F\u002Fpub.dev\u002Fpackages\u002Friverpod)\n  * for state management using the included [state_notifier](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fstate_notifier)\n  * for dependency injection \u002F service locators with easily mockable dependencies\n* [go_router](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fgo_router) for routing with support for Twitter url deeplinks\n* [sentry](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fsentry) 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:\u002F\u002Fpub.dev\u002Fpackages\u002Fvideo_player) package\n* My own [twitter_api](https:\u002F\u002Fgithub.com\u002Frobertodoering\u002Ftwitter_api) package to make use of the official Twitter api\n* A 'pro' and 'free' android\n  [product flavor](https:\u002F\u002Fdeveloper.android.com\u002Fstudio\u002Fbuild\u002Fbuild-variants)\n* Many customized animations sprinkled around the app, including custom logo animations created with [Rive](https:\u002F\u002Fflare.rive.app\u002Fa\u002Frbyd\u002Ffiles\u002Frecent\u002Fall)\n\n### Development \u002F Setup\n\nFollow the [project setup for building harpy](https:\u002F\u002Fgithub.com\u002Frobertodoering\u002Fharpy\u002Fwiki\u002FProject-setup-for-building-harpy) instructions to get the project running.\n","Harpy 是一个基于 Flutter 构建的 Twitter 客户端应用，旨在提供丰富的功能和优质的用户体验。该项目采用 Dart 语言编写，利用了 Riverpod 进行状态管理和依赖注入，并使用 go_router 支持路由及 Twitter URL 深链接。它曾是 Play Store 上一款备受欢迎的应用，拥有超过 75,000 名活跃用户。尽管由于 Twitter 对第三方客户端的新政策，Harpy 已不再积极开发，但它仍然可以作为一个中大型 Flutter 应用的良好示例，适用于希望学习高质量代码编写与维护的开发者。","2026-06-11 03:21:55","top_language"]