Monthly Grant Report — May 2026
What progress was made on your grant this month?
This month the project went from initial commit to a fully functional app, completing many core features: a Rust/Flutter bridge for Sia storage operations, a local SQLite cache, full CRUD for calendar events (including recurring event support), ICS file import (single and bulk), onboarding with embedded browser auth, timezone-aware event display, and a robust sync engine. The app is now buildable and testable end-to-end.
I was able to export 1800+ events from my google calendar and import them all at once into SiCal and sync them to Sia in a matter of minutes.
Detail tasks worked on this month per milestone
| Milestone | Task | Pull Request(s) | Additional Notes |
|---|---|---|---|
| 1: Onboarding flow with indexer | Create basic Flutter app scaffold (Android/iOS targets) | #1 | |
| 1: Onboarding flow with indexer | Add Rust bridge integration; Rust crate communicates with Sia Storage API for upload/download/list of calendar data | #2 | |
| 1: Onboarding flow with indexer | Add SiaStorageService, SyncEngine, CalendarRepository, and AuthService |
#5 | |
| 1: Onboarding flow with indexer | Onboarding screen and startup auth gate | #6 | |
| 1: Onboarding flow with indexer | App icon, splash screen, and logo metadata | #9, #12, #14, #10 | |
| 1: Onboarding flow with indexer | Embedded browser auth via Flutter Custom Tabs; better handling of backgrounded network calls | #11 | Eliminates app-switching during auth flow |
| 2: Basic calendar event creation | Add domain models (CalendarEvent, Chunk, Manifest, RecurrenceRule) |
#3 | |
| 2: Basic calendar event creation | Add SQLite database layer for local event cache and offline access | #4 | |
| 2: Basic calendar event creation | Calendar main screen, event detail screen, event form (create/edit), and settings screen | #7 | |
| 2: Basic calendar event creation | Sync improvements: live sync status display, immediate sync on calendar restore, handle remotely-deleted events, pagination for large event sets | #17 | |
| 3: Recurring events and exceptions | Recurrence rule picker in event form; edit/delete dialogs with “This event”, “This and following events”, and “All events” options; full exception and virtual instance support in CalendarRepository |
#7 | |
| 4: Import events from .ics files | ICS import: Android intent handler, iOS file association, IcsImportService parser, single-event import from .ics file |
#8 | |
| 4: Import events from .ics files | Timezone handling: store timezone on events, convert to device timezone for display, parse VTIMEZONE blocks in ICS import |
#13 | |
| 4: Import events from .ics files | Bulk import: support .ics files containing multiple VEVENT blocks |
#15 | |
| 4: Import events from .ics files | Fix timezone display edge cases (wall-clock fallback, offset display) | #16 |
Were there any problems encountered this month?
- When I first started the sia_storage | Dart package package with dart bindings for Sia Storage SDK was not yet available so I created my own. Once I realized that it did exist, I attempted to switch but realized it seems to be missing some functionality such as upload packing?
- Network calls initiated during onboarding could result in errors when the app was backgrounded (like when we switch to the browser for app approval flow); this was addressed in PR #11 with proper async cancellation and error surfacing.
What will you be working on next month?
- Notifications
- Multiple calendar support
- Publish to Google Play and the App Store
- Address community feedback