A modern Myanmar calendar app with calendar views, astrology, events, conversion tools, and printable calendar generation.
Features β’ Screenshots β’ Quick Start β’ Remote Config β’ Architecture β’ Contributing
Myanmar Calendar App combines Myanmar calendar data and Western dates in one app experience:
- Home month calendar with rich date details
- Year, week, and day calendar views
- Date conversion and calendar utilities
- Events with recurring support
- Calendar generation (preview/beta) for image/PDF export
- Remote-configurable holiday overrides
Core calculation runtime is powered by myanmar_calendar_dart, with app-level settings for language, timezone behavior, and display options.
- Myanmar and Western date rendering in month grid
- Day details with moon phase, sabbath, holidays, and astrological data
- Multiple calendar views:
- Month (home)
- Year view
- Week view
- Day view
- Fast runtime config updates (language, timezone source, holiday overrides)
- Myanmar month/day/year and Sasana year
- Fortnight day and moon phase information
- Astrological indicators including:
- Sabbath / Sabbath Eve
- Yatyaza
- Pyatthada / Afternoon Pyatthada
- Mahabote / Nakhat / Nagahle related outputs
- Myanmar β Western date conversion
- Date difference calculator
- Date arithmetic tools
- Moon phase finder
- Create, edit, and delete events
- Recurring event support
- Day-based event timeline and quick navigation
- Event categories and priority support
- Generate by selected month or full year
- In-app page preview and export flow
- PDF/image export and save/share actions
- Theme/background customization
- Overlay editor support for:
- Text
- Emoji
- Sticker
- User image
- Layout tools for portrait/landscape and printable formats
Calendar Generation is currently preview/beta and still under active refinement.
- Light/dark theme modes
- Multiple theme presets + custom colors
- Dynamic app icon selection (platform dependent)
- App language and calendar language controls
- Display toggles (holidays, astrology, Myanmar/Western date visibility, etc.)
- Timezone behavior:
- Use device timezone (recommended default)
- Or fixed Myanmar timezone fallback
- Firebase Remote Config driven holiday overrides
- App update prompts from remote config (optional/required update support)
- First-run consent flow for analytics/crash reporting
- Promo carousel for onboarding and new feature announcements
- Android home widgets (configurable theme/options)
- Telegram web integration hooks
- Local-first storage using SQLite (drift)
| Home Month | Day Details | Year View |
|---|---|---|
![]() |
![]() |
![]() |
| Week View | Day View | Converter |
|---|---|---|
![]() |
![]() |
![]() |
| Calculator | Arithmetic | Moon Phase |
|---|---|---|
![]() |
![]() |
![]() |
| Events List | Event Form | Settings |
|---|---|---|
![]() |
![]() |
![]() |
| Generation Preview | Generation Editor | Export Result |
|---|---|---|
![]() |
![]() |
![]() |
| Widget Settings |
|---|
![]() |
- Flutter SDK 3.x
- Dart SDK 3.11+
- Android Studio or VS Code with Flutter tooling
- iOS builds require Xcode (macOS)
# Clone
git clone https://github.com/mixin27/mmcalendar.git
cd mmcalendar
# Install workspace dependencies
flutter pub get
# Run mobile app package
cd apps/myanmar_calendar
flutter pub get
flutter runcd apps/myanmar_calendar
flutter run -d chromecd apps/myanmar_calendar
# Android
flutter build apk --release
flutter build appbundle --release
# iOS (macOS only)
flutter build ios --release
# Web
flutter build web --release- Alternate icon switching is supported in the app for iOS.
- iOS Simulator may fail with LaunchServices resource/token errors (
NSPOSIXErrorDomain code=35) even when configuration is correct. - For reliable verification, test on:
- a physical iPhone, or
- a cloud real-device testing service (for example BrowserStack App Live).
If platform folders are regenerated and native integrations are lost:
./scripts/restore_native_mobile_setup.sh --scope all
./scripts/verify_native_mobile_setup.sh --scope allReference: docs/architecture/native_mobile_setup.md
- Key:
holidays_config_v2 - Type: JSON string
Sample payload:
{
"customHolidayRules": [
{
"id": "team_founding_day",
"name": "Team Founding Day",
"type": "other",
"localizedNames": {
"my": "α‘αααΊαΈαααΊαα±α¬ααΊαα±α·",
"en": "Team Founding Day"
},
"rule": {
"kind": "westernDate",
"month": 9,
"day": 1
},
"cacheKey": "team_founding_day",
"cacheVersion": 1
},
{
"id": "thingyan_special",
"name": "Thingyan Special",
"type": "other",
"rule": {
"kind": "myanmarDate",
"month": 1,
"day": 1
}
}
],
"disabledHolidays": ["halloween"],
"disabledHolidaysByYear": {
"2027": ["valentinesDay"]
},
"disabledHolidaysByDate": {
"2026-10-31": ["halloween"]
}
}Reference:
- Holiday IDs: holiday_id.dart
If you enable remote-config update checks, these keys are used:
app_update_enabled(bool)app_update_latest_build_number(int)app_update_latest_version(string)app_update_min_supported_build_number(int)app_update_force_title(string)app_update_force_message(string)app_update_optional_title(string)app_update_optional_message(string)app_update_release_notes(string)app_update_android_url(string)app_update_ios_url(string)app_update_web_url(string)
This repository is a Flutter workspace with feature packages and shared layers.
mmcalendar/
βββ apps/
β βββ myanmar_calendar/ # Main app
βββ packages/
β βββ shared/
β β βββ core/ # Contracts, ports, constants, runtime utils
β β βββ localizations/ # i18n resources
β β βββ ui_kit/ # Shared UI building blocks
β β βββ overlay_editor/ # Overlay editing package
β βββ features/
β β βββ calendar/
β β βββ views/
β β βββ converter/
β β βββ events/
β β βββ settings/
β β βββ calendar_generation/
β β βββ promo/
β β βββ holidays/
β β βββ home_widgets/
β βββ integrations/
β βββ database/ # Drift/SQLite
β βββ firebase/ # Remote config + analytics/crash adapters
β βββ app_update/
β βββ telegram_web/
βββ scripts/
- Flutter + Dart
flutter_bloc(state management)go_router(navigation)drift(local database)get_it+injectable(dependency injection)myanmar_calendar_dart(calendar engine)
Contributions are welcome. See CONTRIBUTING.md.
# Workspace dependencies
flutter pub get
# Codegen (from workspace root)
dart run build_runner build --delete-conflicting-outputs
# Analyze
flutter analyzeThis project is licensed under the MIT License. See LICENSE.
- Myanmar calendar calculations based on Yan Naing Aye's algorithm
- Traditional Myanmar astrology sources and community feedback
- Flutter and open-source ecosystem contributors
- Email: kyawzayartun.contact@gmail.com
- Issues: GitHub Issues
Made for the Myanmar calendar community
















