A multi-platform Vietnamese lunar calendar built with Flutter — Android, iOS, Web, and macOS.
| Tab | Description |
|---|---|
| Ngày | Daily view — solar & lunar date, can-chi, zodiac animal, events, and fortune quote |
| Tháng | Monthly calendar grid with lunar date overlay |
| Tử vi | AI horoscope chat powered by DeepSeek with real-time streaming |
| Thông tin | Theme switcher (glass / light) and app info |
| Tool | Version |
|---|---|
| Flutter | 3.41.6 (stable) |
| Dart SDK | ≥ 3.4.0 |
| Xcode | 15+ (iOS & macOS) |
| Android Studio / SDK | API 21+ |
git clone https://github.com/<username>/<repo-name>.git
cd <repo-name>
flutter pub getThe Tử vi tab requires a DeepSeek API key.
cp .env.example .env
# Then open .env and fill in your key:
# DEEPSEEK_API_KEY=sk-...Without the key the app still runs — the Tử vi tab will show an error when queried.
flutter run -d chrome --dart-define-from-file=.envflutter run -d <android-device-id> --dart-define-from-file=.env
# List connected devices with: flutter devicesflutter run -d <ios-device-id> --dart-define-from-file=.envflutter run -d macos --dart-define-from-file=.envflutter build web --release --base-href /<repo-name>/
# Output: build/web/flutter build apk --release --dart-define-from-file=.env
# Output: build/app/outputs/flutter-apk/app-release.apkflutter build appbundle --release --dart-define-from-file=.env
# Output: build/app/outputs/bundle/release/app-release.aabflutter build ios --release --dart-define-from-file=.env
# Requires a valid Apple Developer signing certificate.
# Open ios/Runner.xcworkspace in Xcode to archive and distribute.flutter build macos --dart-define-from-file=.env
# Output: build/macos/Build/Products/Release/lich_van_nien_flutter.appDeployment is automated via GitHub Actions on every push to main.
-
Add repository secrets — go to Settings → Secrets and variables → Actions and add:
Secret name Value DEEPSEEK_API_KEYYour DeepSeek API key DEEPSEEK_API_URLhttps://api.deepseek.com/chat/completions -
Enable GitHub Pages — go to Settings → Pages, set Source to GitHub Actions.
-
Push to
master— the workflow at.github/workflows/deploy.ymlwill:- Run
flutter analyzeandflutter test - Build the web app with
--base-href /lich-van-nien-flutter/ - Deploy to
https://thienmd.github.io/lich-van-nien-flutter/
- Run
flutter build web --release \
--base-href /lich-van-nien-flutter/ \
--dart-define=DEEPSEEK_API_KEY=<your-key> \
--dart-define=DEEPSEEK_API_URL=https://api.deepseek.com/chat/completionsSecurity note: The API key is embedded at compile time in the web build. For a fully public site, route DeepSeek calls through a backend proxy instead.
lib/
├── main.dart # App entry point, navigation, shared state
├── components/ # Reusable UI widgets
├── container/ # Tab-level screens
│ ├── single_day_container.dart
│ ├── month_container.dart
│ ├── horoscope_container.dart
│ └── info_container.dart
├── model/ # Data models
├── services/ # DataService, DeepSeekService (SSE streaming)
└── utils/ # Date helpers, lunar/solar calculation
assets/
├── events.json # Vietnamese calendar events
└── quotes.json # Fortune quotes
- Flutter 3.41.6 — UI framework
- DeepSeek API — AI horoscope (SSE streaming)
- Swift Package Manager — native dependency management (iOS & macOS, CocoaPods-free)
http·package_info_plus·flutter_markdown_plus
