{"id":13597307,"url":"https://github.com/nullxception/boorusphere","last_synced_at":"2025-04-10T00:32:01.649Z","repository":{"id":43773776,"uuid":"360315858","full_name":"nullxception/boorusphere","owner":"nullxception","description":"Simple, content-focused booru viewer for Android","archived":true,"fork":false,"pushed_at":"2024-07-18T20:15:18.000Z","size":29068,"stargazers_count":402,"open_issues_count":25,"forks_count":30,"subscribers_count":6,"default_branch":"main","last_synced_at":"2024-11-06T21:44:10.677Z","etag":null,"topics":["android","booru","dart","flutter","flutter-apps"],"latest_commit_sha":null,"homepage":"","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nullxception.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","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":"nullxception"}},"created_at":"2021-04-21T21:52:51.000Z","updated_at":"2024-11-05T11:10:30.000Z","dependencies_parsed_at":"2024-11-06T21:36:02.564Z","dependency_job_id":"297456b0-95c0-4da1-831f-acd6ba527a47","html_url":"https://github.com/nullxception/boorusphere","commit_stats":null,"previous_names":["asyncmash/boorusphere","nullxception/boorusphere"],"tags_count":46,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nullxception%2Fboorusphere","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nullxception%2Fboorusphere/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nullxception%2Fboorusphere/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nullxception%2Fboorusphere/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nullxception","download_url":"https://codeload.github.com/nullxception/boorusphere/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248135436,"owners_count":21053683,"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":["android","booru","dart","flutter","flutter-apps"],"created_at":"2024-08-01T17:00:30.113Z","updated_at":"2025-04-10T00:31:58.357Z","avatar_url":"https://github.com/nullxception.png","language":"Dart","funding_links":["https://github.com/sponsors/nullxception"],"categories":["🌐 Social \u0026 Communication","Flutter Apps","社群媒體與影音串流"],"sub_categories":["👥 Social Media","Flutter Communication"],"readme":"# This repository has been archived\nBoorusphere was supposed to be a simple booru viewer, but due to lack of interest, especially in flutter, it was shut down on July 19, 2024. It remains here for history's sake, although it serves no inherent purpose.\n\n\u003cbr/\u003e\u003cbr/\u003e\n\u003cdiv align=\"center\"\u003e\n    \u003cdiv\u003e\u003cimg src=\"assets/icons/exported/legacy-circle.png\" alt=\"boorusphere icon\" height=\"92\"\u003e\u003c/div\u003e\n    \u003cdiv\u003e\u003ch1 align=\"center\"\u003eBoorusphere\u003c/h1\u003e\u003c/div\u003e\n    \u003cdiv\u003eSimple, content-focused booru viewer for Android\u003c/div\u003e\n    \u003cbr/\u003e\n    \u003cdiv\u003e\n        \u003ca href=\"https://github.com/nullxception/boorusphere/stargazers\"\u003e\n            \u003cimg alt=\"Stargazers\" src=\"https://img.shields.io/github/stars/nullxception/boorusphere?style=for-the-badge\u0026logo=apachespark\u0026logoColor=ebebf0\u0026color=ff89b5\u0026labelColor=23232F\"/\u003e\n        \u003c/a\u003e\n        \u003ca href=\"https://github.com/nullxception/boorusphere/releases/latest\"\u003e\n            \u003cimg alt=\"Latest release\" src=\"https://img.shields.io/github/v/release/nullxception/boorusphere?style=for-the-badge\u0026logo=pkgsrc\u0026logoColor=ebebf0\u0026labelColor=23232F\u0026color=95b6ff\"\u003e\n        \u003c/a\u003e\n        \u003ca href=\"https://github.com/nullxception/boorusphere/actions\"\u003e\n            \u003cimg alt=\"Workflow status\" src=\"https://img.shields.io/github/actions/workflow/status/nullxception/boorusphere/ci.yml?style=for-the-badge\u0026logo=githubactions\u0026logoColor=ebebf0\u0026labelColor=23232F\u0026label=CI\"\u003e\n        \u003c/a\u003e\n        \u003ca href=\"https://github.com/nullxception/boorusphere/blob/main/LICENSE.md\"\u003e\n            \u003cimg alt=\"License\" src=\"https://img.shields.io/github/license/nullxception/boorusphere?style=for-the-badge\u0026logo=gitbook\u0026logoColor=ebebf0\u0026color=b0a8f7\u0026labelColor=23232F\"/\u003e\n        \u003c/a\u003e\n    \u003c/div\u003e\n    \u003cbr/\u003e\n    \u003cdiv\u003e\n        \u003ca href=\"https://github.com/nullxception/boorusphere/releases\"\u003e\n            \u003cimg src=\"assets/button-GHReleases.png\" alt=\"GitHub release\" width=\"160\"\u003e\n        \u003c/a\u003e\n        \u003ca href=\"https://apt.izzysoft.de/fdroid/index/apk/io.chaldeaprjkt.boorusphere\"\u003e\n            \u003cimg src=\"assets/button-IzzyOnDroid.png\" alt=\"IzzyOnDroid release\" width=\"160\"\u003e\n        \u003c/a\u003e\n    \u003c/div\u003e\n\u003c/div\u003e\n\n# Features\n\n- Simple and intuitive UI\n- Support various booru-based imageboards\n- Support playing videos and animated images (GIF, WEBM)\n- Save favorites content\n- Search with tag suggestion\n- Download images and videos\n- Block tags from search result\n- Backup and restore data\n- and many more ...\n\n# Preview\n\n\u003cp align=\"justify\"\u003e\n    \u003cimg width=\"24%\" src=\"fastlane/metadata/android/en-US/images/phoneScreenshots/1.png\" /\u003e\n    \u003cimg width=\"24%\" src=\"fastlane/metadata/android/en-US/images/phoneScreenshots/2.png\" /\u003e\n    \u003cimg width=\"24%\" src=\"fastlane/metadata/android/en-US/images/phoneScreenshots/3.png\" /\u003e\n    \u003cimg width=\"24%\" src=\"fastlane/metadata/android/en-US/images/phoneScreenshots/4.png\" /\u003e\n\u003c/p\u003e\n\n# Building from Source\n\n- Install Flutter SDK, visit [flutter.dev](https://flutter.dev/) for more information.\n\n- Fetch latest source code\n\n```bash\ngit clone https://github.com/nullxception/boorusphere.git\ncd boorusphere\n```\n\n- Sync dependencies\n\n```bash\nflutter pub get\n```\n\n- Run code generator\n\n```bash\ndart run build_runner build --delete-conflicting-outputs\n```\n\n- Generate translation\n\n```bash\ndart run slang\n```\n\n- Run the app with your favorite IDE/PDE. or from shell:\n\n```bash\nflutter run\n```\n\n### Protip:\n\n- Run [build_runner](https://pub.dev/packages/build_runner) after editing some areas that needs a code generator such as entities and routing.\n- Run [slang](https://pub.dev/packages/slang) after editing translation files (\\*.i18n.json).\n- [build_runner](https://pub.dev/packages/build_runner) and [slang](https://pub.dev/packages/slang) has some features that will be helpful during development such as auto-rebuild and translation analysis, so it's highly recommended to check the documentations and familiarize yourself with it.\n\n# Translation\n\n### Translating untranslated strings\n\n- Run slang analyzer to check for missing translations\n\n```bash\ndart run slang analyze --outdir=i18n\n```\n\n- Open [i18n/\\_missing_translations.json](i18n/_missing_translations.json) and then translate your language of choice.\n\n- After editing the file, you can apply it to the actual json translation file by running:\n\n```bash\ndart run slang apply --outdir=i18n\n\ndart run slang analyze --outdir=i18n # update analyzation result files\n```\n\n### Note\n\nYou can leave untranslated strings on [i18n/\\_missing_translations.json](i18n/_missing_translations.json).\u003cbr/\u003e\nIt's perfectly fine and recommended to leave it unchanged rather than adding it on the actual translation json but leaving it untranslated.\n\n### Adding a new language\n\nYou can copy [i18n/strings_en.i18n.json](i18n/strings_en.i18n.json) to `i18n/strings_\u003clanguage-code\u003e.i18n.json`.\u003cbr/\u003e\nAt this point, feel free to pull request your new language here and we'll take care of adapting to the app code.\n\nOr if you want to build and test yourself, then:\n\n- Run slang to generate the strings.g.dart\n\n```bash\ndart run slang\n```\n\n- Run slang analyzer to check for missing translations\n\n```bash\ndart run slang analyze --outdir=i18n\n```\n\n- Build and run the app as usual\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnullxception%2Fboorusphere","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnullxception%2Fboorusphere","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnullxception%2Fboorusphere/lists"}