$ show Wolfteam/Shiori
Shiori is a Flutter mobile/desktop application that serves as a comprehensive database and toolset for the game Genshin Impact. It provides detailed information on characters, weapons, artifacts, materials, and monsters, along with interactive tools such as an ascension material calculator, wish simulator with pity tracking, banner history analytics, inventory management, custom build planner, tier list builder, and notification scheduler for in-game timers. The app also includes charts and statistics derived from game data, a game code redemption tracker, and backup/restore functionality for user data. It is distributed on Android, iOS, Windows, and macOS, and is localized into over a dozen languages. The architecture follows a clean layered pattern: domain (service interfaces and models), application (BLoC state management with freezed events/states), infrastructure (implementations for file I/O, persistence, networking, and platform services), and presentation (Flutter widgets and pages). Dependency injection is handled via GetIt, and local persistence uses Hive CE. Remote resource updates are downloaded on demand from an external API. The codebase makes heavy use of the BLoC pattern with sequential event processing, and includes extensive unit and integration tests covering blocs, services, and UI flows. Although primarily an application, Shiori is heavily data-driven: all game content is loaded from JSON resource files, and the app provides analytical charts (element distribution, banner reruns, birthdays, ascension stats) that are computed from the data. This hybrid nature means the repository contains both application code and data-processing logic. The codebase demonstrates strong software engineering practices with reusable shared widgets, service abstractions, and a consistent pattern for file-based data services. The project is actively maintained with recent commits and an active issue tracker. However, there is some technical drift: the CI workflow pins Flutter 2.10.2 while the project configuration targets 3.41.6, and some localization files contain incomplete translations. Several TODO comments and commented-out code indicate areas of ongoing work. Overall, the codebase is well-structured and suitable for reuse of its isolated components.
The LLM identified 5 files worth highlighting for reuse:
An animated floating action button menu that expands into multiple child buttons with smooth transitions. Demonstrates custom animation and state management in Flutter, reusable as a standalone widget for any app requiring a collapsible multi-action FAB.
A custom star rating widget with smooth rendering, hover effects, and tap interaction. Implements non-trivial painting and gesture handling, extractable for any rating use case in Flutter applications.
A reusable number picker widget with increment/decrement buttons and direct text input. Supports min/max bounds and step size, suitable for quantity selection in any Flutter app, such as shopping carts or material counters.
A generic two-column dialog for selecting and ordering enum values. Supports multi-select, drag-to-reorder, and search. Can be adapted for any enum-based selection UI, reducing boilerplate for filter or preference dialogs.
A reusable vertical bar chart widget built on fl_chart, with tooltips, value labels, and configurable styling. Demonstrates clean separation of chart logic from data, extractable for any Flutter charting need without coupling to the app's domain models.