Introduction
Project Name: SiCal
Name of the organization or individual submitting the proposal: mjmay08 (discord)
I am a previous Sia Foundation grantee and previously delivered SiaShare, a Wormhole-like sharing service built on renterd: https://github.com/mjmay08/SiaShare.
Describe your project.
SiCal is a decentralized calendar app built with Flutter and Rust, using the sia_storage sdk to save all data to Sia. The app provides core calendar functionality (event creation/editing, recurring events with exceptions, notifications, and multi-device sync) while keeping users in control of their data rather than relying on centralized calendar backends.
The architecture stores data locally in SQLite first, then syncs to Sia. Packed uploads are used as calendar events are very small.
This grant will support a two-month push to complete all basic calendar functionality, publish to the app stores, and address community feedback.
Working POC demo: https://drive.google.com/file/d/1MzB_m5EhiOhFjdIKXYJXamLjRDsL5G5Y/view?usp=sharing
How does the projected outcome serve the Foundation’s mission of user-owned data? What problem does your project solve?
Calendar data is highly personal, yet most calendar products are centralized and vendor-controlled. SiCal provides a user-owned alternative where users keep control over their schedule data while still getting a familiar modern app experience.
We cannot provide grants to residents of jurisdictions under increased FATF monitoring, those that have active OFAC sanctions, or those that fail our bank compliance tests. We also cannot provide grants if your payment bank account is located in those same locations. Please review the following list.
Are you a resident of any jurisdiction on that list? No
Will your payment bank account be located in any jurisdiction on that list? No
Grant Specifics
Amount of money requested and justification with a reasonable breakdown of expenses: $8000
- 2 months of developer fees for @mjmay08
What is the high-level architecture overview for the grant? What security best practices are you following? Please review our Development Guide for further details.
High-level architecture: Flutter app UI + local SQLite database + Rust bridge to Sia SDK. Calendar events are stored locally first, packed into chunks, uploaded as Sia objects, and synchronized via object-event cursors and manifest metadata updates.
Security best practices: AppKey is stored using FlutterSecureStorage.
What are the goals of this small grant? Please provide a general timeline for completion.
Month 1 (ending May 25th):
- Onboarding flow with indexer
- Basic calendar event creation
- Recurring events and exceptions (“just this event”, “this and following events”)
- Import events from .ics files
Month 2 (ending June 25th):
- Notifications
- Multiple calendar support
- Publish to Google Play and the App Store
- Address community feedback
Who is the target user for your project?
Users who want a privacy-focused calendar without vendor lock-in, and developers who want a practical reference for building flutter apps with indexd.
What are your plans for this project following the grant?
If there is interest I would be happy to continue maintaining the app. If there are bigger feature requests I would be happy to do a follow-up grant with more functionality (e.g. browser-based app).
Potential risks that will affect the outcome of the project:
- App store approval (not too concerned about this as I have published several apps in the past)
- Sync is quite slow. Users might not be ok with the fact that it takes more than several seconds to sync the calendar because of the decentralized nature and slab size.
- Not necessarily a risk but a limitation. I don’t see a way to implement shared calendars with other users. The existing share object functionality really only works with immutable data, not a calendar that is being constantly updated.
Development Information
Will all of your project’s code be open-source?
Yes
Leave a link where code will be accessible for review.
https://github.com/mjmay08/SiaCal
Do you agree to submit monthly progress reports?
Yes
Contact info
Any other preferred contact methods: mjmay08 (on discord)