Files
Prisma/README.md
T

118 lines
9.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Lunaris
Lunaris - локальное Flutter-приложение для просмотра booru/gelbooru/rule34-подобных источников в Pinterest-стиле.
Приложение не использует отдельный backend-сервер. Вся логика живет внутри Flutter: API-провайдеры, кэш metadata, избранное, коллекции, история просмотров, настройки, диагностика, фильтры и обновления.
## Возможности
- Masonry feed с несколькими провайдерами и перемешанной выдачей All providers.
- Поиск тегов через chip-input: ввел тег, нажал пробел или Enter, тег стал отдельным элементом.
- Подсказки тегов из API активных провайдеров.
- Избранное, коллекции и отдельная вкладка Viewed.
- Smart blacklist/whitelist по тегам, группам тегов, рейтингу, провайдеру, типу файла и score.
- Details viewer для фото, GIF, видео и SWF на Windows.
- Видео-плеер с fullscreen, repeat, mute, half-volume и сохранением выбранных настроек.
- Отдельная вкладка Artists для Kemono/Coomer: поиск авторов и просмотр их работ без смешивания с обычным booru feed.
- Управление провайдерами, health-check и provider diagnostics.
- Экспорт и импорт настроек JSON.
- Автопроверка обновлений через Gitea Releases, скачивание и открытие APK/Windows installer прямо из приложения.
## Скачать
Готовые сборки лежат в Gitea Releases:
[Lunaris v1.1.2 Experimental](https://gitea.rardogsynapse.online/RarDog/RuleGelApp/releases/tag/v1.1.2-experimental)
- `Lunaris-v1.1.2-experimental.apk` - APK для Android.
- `LunarisSetup-v1.1.2-experimental.exe` - установщик для Windows.
- `LunarisPortable-v1.1.2-experimental.zip` - portable-версия для Windows.
## Стек
- Flutter, Dart, Riverpod, go_router
- Dio, Isar, connectivity_plus
- cached_network_image, flutter_staggered_grid_view
- media_kit для видео
- webview_windows + Ruffle fallback для SWF на Windows
## Архитектура
Lunaris - Flutter-монолит. UI не дублирует backend-логику, а вызывает локальные сервисы через Riverpod.
- `lib/core` - HTTP, база, кэш, ошибки, Result и утилиты.
- `lib/backend/models` - доменные модели.
- `lib/backend/providers` - API-провайдеры и ProviderManager.
- `lib/backend/repositories` - доступ к локальному Isar-хранилищу.
- `lib/backend/services` - Feed/Search/Favorites/Collections/Settings/Diagnostics/Downloads/Updates.
- `lib/backend/di` - Riverpod providers для backend/core.
- `lib/app` - приложение, роутер, тема и responsive helpers.
- `lib/shared/widgets` - общие UI-компоненты.
- `lib/features` - экраны и контроллеры фич.
## Экраны
- `/` - главный feed.
- `/search` - РїРѕРёСЃРє Рё recent searches.
- `/post/:providerId/:postId` - details viewer.
- `/favorites` - избранное.
- `/viewed` - история просмотренных постов.
- `/collections` - коллекции.
- `/artists` - поиск авторов Kemono/Coomer.
- `/artists/:providerId/:service/:artistId` - работы автора.
- `/providers` - управление провайдерами.
- `/providers/check` - диагностика провайдеров.
- `/settings` - настройки.
## Провайдеры по умолчанию
- Gelbooru - `https://gelbooru.com`
- Rule34 - `https://api.rule34.xxx`
- Safebooru - `https://safebooru.org`
- Konachan - `https://konachan.com`
- Yande.re - `https://yande.re`
- e621 - `https://e621.net`
- e926 - `https://e926.net`
- Xbooru - `https://xbooru.com`
- CosBooru - `https://cos.lycore.co`
- Kemono - `https://kemono.su` (только Artists)
- Coomer - `https://coomer.su` (только Artists, выключен по умолчанию)
Realbooru оставлен в списке, но выключен по умолчанию, потому что его публичный API сейчас нестабилен.
Поддерживаемые `apiType`: `gelbooru`, `rule34`, `realbooru`, `danbooru`, `moebooru`, `e621`, `kemono`, `coomer`.
Один упавший провайдер не ломает общий feed: ошибка сохраняется в diagnostics, остальные источники продолжают отдавать посты.
## Как добавить провайдера
1. Добавить mapper в `lib/backend/mappers`, если формат ответа отличается.
2. Реализовать `ContentProvider` или artist-only `ArtistProvider` в `lib/backend/providers`.
3. Зарегистрировать новый `apiType` в `ProviderFactory`.
4. Добавить config через Providers UI или seed в `ProviderRepository`.
## Запуск и сборка
```bash
flutter pub get
flutter analyze
flutter test
flutter run -d windows
flutter build windows
flutter build apk
```
Windows installer собирается через Inno Setup:
```bash
ISCC installer/Lunaris.iss
```
## Безопасность
- Feed работает с preview/sample metadata и не скачивает full files автоматически.
- Скачивание фото/видео/SWF выполняется только по явному действию пользователя.
- Приложение уважает rate limits и использует retry/backoff.
- API keys/user data хранятся локально и попадают в export JSON только по действию пользователя.