-
Notifications
You must be signed in to change notification settings - Fork 2
Home
Welcome to the Enjoy Player wiki — a cross-platform language-learning media player built with Flutter.
Enjoy Player is a language-learning companion that plays local audio/video files, YouTube videos, and provides interactive transcripts, dictionary lookup, vocabulary SRS review, and shadow-reading (echo) practice — all with optional cloud sync and AI-powered transcript/explanations. Supported platforms: Android, iOS, macOS, Windows, Linux. Flutter web is not supported.
Current version: 0.8.2+11 (pubspec.yaml).
- Getting Started — setup, prerequisites, run, verify
- Architecture — feature-first layout, data flow, routing
- Player — media_kit engine, YouTube via WebView, transport bar
- Transcripts — SRT/VTT, YouTube captions, dictionary lookup, karaoke, IPA
- Echo Mode — line-bounded shadow-reading practice
- Alignment — on-device DTW alignment (ADR-0071 / ADR-0072)
- Library — local media, cloud index, unified navigation
- AI and Lookup — AI SDKs, BYOK providers, inline dictionary
- Persistence — Drift schema, migrations, recovery
- Release and CI — build, sign, distribute per platform
-
Playback: media_kit (+
media_kit_video,media_kit_libs_video) for local files/URLs — one singlePlayerinstance owned byMediaKitPlayerEngine/PlayerController -
State: Riverpod 3 +
riverpod_annotationcodegen -
Persistence: Drift +
drift_flutter+ native SQLite -
YouTube:
flutter_inappwebview(separate from media_kit, ADR-0015) -
Navigation:
go_routerwithShellRoutefor persistent mini player -
AI SDKs:
ai_sdk_dart,ai_sdk_openai,ai_sdk_anthropic,ai_sdk_googlewith BYOK provider settings (ADR-0033) -
Auth:
google_sign_in,sign_in_with_apple, custom-scheme PKCE callback (ADR-0027, ADR-0034) -
Logging:
package:loggingvialogNamed()wrapper — noprint()
Enjoy Player is an MVP focused on local-first audio/video playback with interactive transcripts, YouTube import, shadow reading, vocabulary learning, and optional cloud metadata sync. The project follows a login-only access model (ADR-0031), a feature-first architecture (ADR-0004), and per-user SQLite isolation (ADR-0012). See AGENTS.md for contributor rules and quality gates.