{"id":39872891,"url":"https://github.com/ceilf6/daymate","last_synced_at":"2026-01-23T19:02:02.946Z","repository":{"id":317799042,"uuid":"1065078147","full_name":"ceilf6/DayMate","owner":"ceilf6","description":"Cross-platform calendar app (Android + React Native) with lunar calendar, ICS import/export, calendar subscription,  i18n support and so on. | 跨平台日历应用（Android + React Native），支持农历、ICS 导入导出、日历订阅、国际化等等","archived":false,"fork":false,"pushed_at":"2026-01-13T10:52:28.000Z","size":21120,"stargazers_count":29,"open_issues_count":0,"forks_count":5,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-01-13T10:59:19.641Z","etag":null,"topics":["android","calendar","ios","monorepo","react-native"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ceilf6.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-27T02:58:37.000Z","updated_at":"2026-01-13T10:52:32.000Z","dependencies_parsed_at":"2025-12-31T23:03:21.589Z","dependency_job_id":null,"html_url":"https://github.com/ceilf6/DayMate","commit_stats":null,"previous_names":["ceilf6/android_daymate"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/ceilf6/DayMate","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceilf6%2FDayMate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceilf6%2FDayMate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceilf6%2FDayMate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceilf6%2FDayMate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ceilf6","download_url":"https://codeload.github.com/ceilf6/DayMate/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceilf6%2FDayMate/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28698343,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-23T17:25:48.045Z","status":"ssl_error","status_checked_at":"2026-01-23T17:25:47.153Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","calendar","ios","monorepo","react-native"],"created_at":"2026-01-18T14:19:05.666Z","updated_at":"2026-01-23T19:02:02.932Z","avatar_url":"https://github.com/ceilf6.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DayMate\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"./assets/DayMate.png\" alt=\"DayMate Logo\" width=\"200\"/\u003e\n\u003c/div\u003e\n\n**Your Personal Calendar Companion**\n\n[中文文档](./docs/README-CN.md)\n\nA cross-platform calendar application for everyday and professional use. DayMate uses a Monorepo architecture, supporting both Android native and React Native cross-platform apps, with intuitive calendar views and flexible event management at its core.\n\n\u003e **Note**: Current development focus is on the React Native side. The Android native app shares core modules (event models, lunar calendar, etc.) but has limited UI feature parity for now.\n\n## Architecture Overview\n\nDayMate adopts a Monorepo architecture with the following modules:\n\n```\nDayMate/\n├── apps/\n│   ├── android-calendar/    # Android native app\n│   └── rn-calendar/         # React Native cross-platform app\n├── shared/\n│   ├── core/                # Shared core business logic\n│   └── ui-android/          # Android UI components\n├── packages/                # Shared packages (lunar calendar, etc.)\n└── docs/                    # Documentation\n```\n\n## Screenshots\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"./assets/紫色-背景图片.PNG\" alt=\"Theme Background\" width=\"250\"/\u003e\n  \u003cimg src=\"./assets/灰色-设置页面.PNG\" alt=\"Settings\" width=\"250\"/\u003e\n  \u003cimg src=\"./assets/橙色-主页面.PNG\" alt=\"Home Screen\" width=\"250\"/\u003e\n  \u003cimg src=\"./assets/粉色-日程区域和待完成事项双区域.PNG\" alt=\"Schedule and Todo\" width=\"250\"/\u003e\n  \u003cimg src=\"./assets/蓝色-订阅功能.PNG\" alt=\"Subscription Feature\" width=\"250\"/\u003e\n  \u003cimg src=\"./assets/绿色-导入导出功能.PNG\" alt=\"Import Export\" width=\"250\"/\u003e\n\u003c/div\u003e\n\n## Core Features\n\n### Multi-Platform Support\n- **Android Native**: Full Material Design experience\n- **React Native**: iOS \u0026 Android cross-platform support\n- **Shared Core**: Unified business logic and data models\n\n### Rich Calendar Views\n- Month View: Overview of monthly schedules\n- Week View: Focus on weekly plans\n- Day View: Detailed single-day timeline\n- Quick switching between views\n\n### Smart Reminders\n- Local notification reminders\n- Multiple advance reminder options\n- Auto-rebuild reminders after device reboot\n\n### Trash Bin\n- Deleted events go to trash instead of permanent deletion\n- Auto-cleanup after 30 days\n- Restore or permanently delete at any time\n\n### Calendar Subscription\n- Subscribe to external calendars via webcal:// or https://\n- Supports ICS format calendar feeds\n- Configurable sync frequency\n- Auto-add events after subscription\n\n### Dark \u0026 Light Mode\n- System-following mode\n- Manual light mode\n- Manual dark mode\n- Theme color customization\n\n### Standards Compliance\n- RFC5545/ICS import \u0026 export support\n- Compatible with Google Calendar, Outlook, etc.\n- Network subscription support (webcal/https)\n\n### Lunar Calendar Support\n- Built-in Chinese lunar date display\n- Solar terms and traditional festivals\n- Optimized for Chinese users\n\n### Internationalization\n- Full i18n support\n- English and Chinese interfaces\n- Easily extensible for other languages\n\n## Quick Start\n\n### Requirements\n\n- **Android Development**: JDK 17+, Android Studio Hedgehog+, Android SDK 34\n- **React Native**: Node.js 16+, npm/yarn/pnpm\n- **iOS Development**: Xcode 14+, CocoaPods\n\n### Build Android App\n\n```bash\n# Clone repository\ngit clone https://github.com/ceilf6/DayMate.git\ncd DayMate\n\n# Build and install\n./gradlew :apps:android-calendar:installDebug\n```\n\n### Run React Native App\n\n```bash\n# Enter RN directory\ncd apps/rn-calendar\n\n# Install dependencies\nnpm install\n\n# Run Android\nnpm run android\n\n# Run iOS\nnpm run ios\n```\n\n## Documentation\n\n- [Architecture](./docs/ARCHITECTURE.md) - Monorepo architecture design\n- [Development Guide](./docs/DEVELOPMENT.md) - Development environment setup\n- [Migration Guide](./docs/MIGRATION.md) - Migration to Monorepo\n- [I18n Guide](./docs/I18N_GUIDE.md) - Internationalization guide\n- [Usage Guide](./docs/USAGE_GUIDE.md) - User guide\n\n## Use Cases\n\n- Personal time management: Schedule meetings, tasks, and todos\n- Family shared calendar: Export/subscribe calendars to share\n- Cross-platform usage: Seamless switching between Android and iOS\n- Import historical events: Batch import from ICS files\n- Subscribe to external calendars: Public holidays, team schedules, etc.\n\n## Tech Stack\n\n### Android Native\n- Kotlin\n- Jetpack (Room, ViewModel, LiveData, Navigation, WorkManager)\n- Material Design 3\n- Coroutines \u0026 Flow\n\n### React Native\n- TypeScript\n- React Navigation\n- AsyncStorage / SQLite\n- React Native Calendars\n\n### Shared Layer\n- Kotlin (shared core logic)\n- Gradle Multi-Project\n- Room Database\n\n## Testing\n\n```bash\n# Android unit tests\n./gradlew :shared:core:test\n./gradlew :apps:android-calendar:test\n\n# React Native tests\ncd apps/rn-calendar\nnpm test\n```\n\n## Feature Overview\n\n### Calendar Views\n- Month / Week / Day view switching\n- Event preview, multi-day events, and all-day events display\n\n### Event Management\n- Create / Edit / Delete events\n- Recurrence rules with end conditions\n- Multiple reminder rules (e.g., 30 min before, 10 min before)\n- Swipe to complete or delete events\n- Trash bin for deleted events recovery\n\n### Import \u0026 Export\n- ICS file import (RFC5545 parsing)\n- ICS export for backup or sharing\n\n### Calendar Subscription\n- Support webcal:// and https:// subscription URLs\n- Background periodic sync (configurable)\n- Auto-add subscribed events to calendar\n\n### Localization\n- Chinese lunar dates and solar terms\n- Localized date/time formats\n- Multi-language UI support\n\n## Architecture \u0026 Implementation\n\n- **Platform**: Android (Kotlin + AndroidX) / React Native (TypeScript)\n- **Data Storage**: Local database (Room / AsyncStorage) for events and subscription metadata\n- **Background Tasks**: WorkManager for subscription sync and reminder rebuilding\n- **Notifications**: System notifications with permission handling for Android 13+\n\n## Permissions \u0026 Privacy\n\n### Required Permissions\n- **INTERNET**: For calendar subscription and network import\n- **POST_NOTIFICATIONS** (Android 13+): Local reminder notifications\n- **RECEIVE_BOOT_COMPLETED**: Rebuild reminders after device restart\n- **Storage Access**: SAF (Storage Access Framework) for import/export\n\n### Privacy\n- Data is stored locally by default, not sent to third-party servers\n- Subscription feature connects to provided URLs only\n- Credentials for private subscriptions are stored locally\n\n## Import/Export \u0026 Subscription Guide\n\n### Import ICS File\n1. Go to Settings \u003e Import\n2. Select an ICS file\n3. App parses RFC5545 events with conflict handling\n\n### Export to ICS\nSelect events or calendar to export as standard ICS file for backup or sharing.\n\n### Subscribe to Calendar\n1. Go to Subscription settings\n2. Enter webcal:// or https:// URL\n3. Configure sync frequency\n4. Events auto-sync to your calendar\n\n## FAQ\n\n**Q: Time offset after import?**\nA: Check the VTIMEZONE declaration in the imported file and device timezone settings.\n\n**Q: Subscription not updating?**\nA: Verify the subscription URL is valid, check sync frequency settings, and network connectivity.\n\n**Q: How to recover deleted events?**\nA: Open the Trash bin from settings, find the event, and tap Restore.\n\n## Contributing\n\nIssues, PRs, and feature suggestions are welcome!\n\n1. Fork the repository\n2. Create a branch for your feature or fix\n3. Submit a PR with description and test steps\n\n## License\n\nSee the `LICENSE` file in the repository root.\n\n## Roadmap\n\n- Enhanced recurrence rule editing UI\n- Improved ICS import compatibility\n- Cloud sync options (optional)\n- Shared calendar editing permissions\n- Smart schedule recommendations\n\n---\n\nThank you for using DayMate! For demos or custom features, please open an issue.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fceilf6%2Fdaymate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fceilf6%2Fdaymate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fceilf6%2Fdaymate/lists"}