Small Grant: SiCal

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
1 Like