3.3 KiB
3.3 KiB
Ciyue Project Context
Project Overview
Ciyue is a comprehensive dictionary application built with Flutter. It is designed to support MDX/MDD dictionary formats and offers a modern user experience with Material You design.
Key Features
- Multi-Platform: Android, Windows, Linux.
- Dictionary Support: MDX/MDD formats, multi-dictionary search.
- AI Integration: AI-powered translation (OpenAI, Gemini, DeepSeek, etc.) and word explanation.
- Tools: Text-to-speech (TTS), word book (bookmarks), history.
- Theming: Dynamic colors (Material You) and dark mode support.
Architecture & Tech Stack
- Framework: Flutter (Dart).
- State Management:
provider. - Database:
drift(SQLite abstraction) with migration support. - Navigation:
go_router. - Networking:
diowithtalker_dio_loggerfor logging. - WebView:
flutter_inappwebviewfor rendering dictionary content. - Localizations:
flutter_localizationswith.arbfiles (managed via Weblate). - Build/CI: GitHub Actions,
justcommand runner.
Building and Running
Prerequisites
- Flutter SDK: Version constraint
>=3.4.0 <4.0.0(CI uses3.38.5). - Just: Command runner for simplified scripts.
- Platform Requirements:
- Linux:
libgtk-3-dev,libgstreamer1.0-dev,libayatana-appindicator3-dev, etc. - Android: Android SDK, Java 21 (for build).
- Windows: Visual Studio with C++ workload.
- Linux:
Common Commands (via just)
The project uses justfile to manage common development tasks.
| Task | Command | Description |
|---|---|---|
| Code Generation | just build_runner |
Runs dart run build_runner build (Essential for Drift, Freezed, etc.) |
| Migrations | just make-migrations |
Generates database migrations using Drift. |
| Icons | just icon |
Generates app launcher icons. |
| Count Code | just count-codes |
Counts lines of code excluding generated files. |
Standard Flutter Commands
- Run:
flutter run - Analyze:
flutter analyze - Format:
dart format .(CI enforces formatting on.dartfiles) - Test:
flutter test
Build Artifacts
- Android:
flutter build apk --flavor full-dev - Windows:
flutter build windows - Linux:
flutter build linux
Note: CI builds use
--dart-defineflags to inject build info (Hash, Timestamp, Dev mode).
Development Conventions
Code Style
- Linter: Uses
flutter_lintswithprefer_double_quotes: true. - Formatting: Enforced via
dart format. - Analysis:
analysis_options.yamlexcludes generated files and platform folders from analysis.
Database (Drift)
- Schema: Managed in
lib/database/anddrift_schemas/. - Migrations: Must be generated using
just make-migrationswhen schema changes.
Translations
- Source:
.arbfiles inlib/l10n/. - Management: Do NOT edit
.arbfiles directly. Use Weblate for translations.
Contribution Guidelines
- Commits: Use clear, descriptive commit messages.
- Testing: Ensure
flutter testpasses before submitting. - Issues: Search existing issues before creating new ones.