Small Grant Proposal: SiContacts

Introduction

Project Name: SiContacts

Name of the organization or individual submitting the proposal: @manojsrinivasa (discord)
Github - jonumhills (Manoj Srinivasa) · GitHub

Describe your project
SiContacts is a privacy-first, local-first mobile address book app built with Expo (React Native) that stores all contact data in the user’s own Sia bucket via the react-native-sia SDK. It replaces Google Contacts and iCloud Contacts as the sync backend giving users the same familiar address book experience they already know, with their data stored on Sia rather than on a corporate server.

The app is built with Expo SDK 54 and uses expo-sqlite for offline-first local persistence. Contact records are stored as compact JSON objects (under 500 bytes each) and uploaded to Sia via packed uploads an ideal pattern for the small, frequent writes that contact edits generate. A manifest-based sync protocol keeps the address book consistent across devices. The app supports full vCard (.vcf) import and export, making migration from Google Contacts trivial and ensuring users are never locked in to Sia or to SiContacts itself.

Core features in scope: contact creation and editing, vCard import/export, group management, search, multi-device sync via Sia, and publication to the Google Play Store and Apple App Store.

[Demo video]
(https://drive.google.com/file/d/1ZctayPCVD1pYFlfxKYvDfH9HIhKSWQHu/view?usp=sharing)

How does the projected outcome serve the Foundation’s mission of user-owned data? What problem does your project solve?

Your contacts list is the only dataset on your phone that exposes the privacy of people who never consented to being tracked. When your address book lives on Google’s servers, every app granted READ_CONTACTS permission harvests your entire social graph (names, phone numbers, and relationships of your family, colleagues, and friends) without their knowledge or consent. The FTC’s 2024 staff report confirmed that major platforms “engaged in vast surveillance of consumers” by collecting and indefinitely retaining data about both users and non-users of their platforms. The data in your address book describes people who never agreed to participate in any platform, yet their names, phone numbers, and relationships are retained indefinitely on third-party servers.

SiContacts solves this architecturally. Contact data lives exclusively in the user’s own Sia storage bucket, it never touches a third-party application server. Crucially, because the address book is not stored in the Android system ContactsContract database or synced through Google, the READ_CONTACTS attack surface is eliminated entirely. No third-party app can request access to your contacts through Google, because there is no Google copy to request.

This project also directly addresses the Foundation’s stated SDK priority: small files with constant changes. Individual contact records are under 500 bytes, edited frequently, and perfectly suited to packed uploads via the react-native-sia SDK and sia.storage.

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:
Total $8000 - 2 months of developer fees for @manojsrinivasa

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.


TechStack: Expo (React Native) UI + local SQLite database + react-native-sia SDK (official Sia Foundation React Native package, MIT licensed).

Contacts are stored locally first for instant offline access, packed into compact JSON objects, and uploaded to the user’s own Sia bucket via sia.storage — the Sia Foundation’s hosted indexer, which requires no SiaCoins. A manifest-based sync protocol keeps the address book consistent across devices, downloading only records that have changed. All reads are served from local SQLite with zero network I/O; Sia is on the write path only, running as a background sync layer that never blocks the UI.

Security Best Practices

  • Credential storage: The App Key is stored in expo-secure-store (iOS Keychain / Android Keystore). Never written to any unencrypted location.
  • No secrets in code or version control: The App Key is entered by the user at onboarding only. No keys are hardcoded anywhere. .env files are gitignored.
  • HTTPS enforcement: All calls to sia.storage are made over HTTPS.
  • No system contacts database write: SiContacts deliberately does NOT write to the Android ContactsContract database or iOS CNContactStore. Contacts remain in the user’s Sia bucket only. This eliminates the READ_CONTACTS permission attack surface that makes Google Contacts a liability.
  • Data portability: Users can export their full address book as a standard .vcf file at any time no lock-in to Sia or to SiContacts.
  • No telemetry: MIT license. No analytics SDKs, no crash reporters that exfiltrate data, no third-party data collection of any kind.

What are the goals of this small grant? Please provide a general timeline for completion.

The demo runs on mock/hardcoded data in a local dev environment, it’s not connected to a real Sia bucket or a real user flow. Here is what still needs to be built:

Month 1 (by June 20):

  • Native build setup with EAS: react-native-sia requires a custom dev build and cannot run in Expo Go
  • expo-secure-store integration to safely store the App Key in iOS Keychain and Android Keystore
  • Production onboarding flow: step-by-step sia.storage connection with error states and recovery
  • Full contact CRUD with validation and edge-case handling
  • Offline-first architecture: all reads served from SQLite with background Sia sync that never blocks the UI
  • Contact list with search
  • vCard import covering Google Contacts and Apple Contacts export dialects
  • vCard export for full portability
  • Sia sync service (retries, conflict detection, manifest integrity)

Month 2 (by July 20):

  • Multi-device sync correctness tested across Android and iOS simultaneously
  • Contact groups
  • Dark mode and full UI polish to meet App Store / Play Store guidelines
  • Purchase Apple and Google developer accounts and submit App to both stores well before the deadline
  • App review timelines vary by platform (I will work closely with testers and respond to any feedback promptly to get approved as early as possible)
  • Bug fixes, user support, and continued maintenance of the app throughout both months and beyond

Who is the target user for your project?
Privacy-conscious everyday users who currently sync their contacts through Google or Apple and want an alternative that keeps their social graph off corporate servers. No blockchain knowledge required, users connect via the Sia Storage service (app.sia.storage). The vCard import flow means migration from Google Contacts takes under two minutes.

What are your plans for this project following the grant?
Following the grant I plan to maintain the app and continue adding features based on user feedback. If there is enough interest I would apply for a follow-up grant for things like CardDAV support, shared address books, or a web companion app.

Potential risks that will affect the outcome of the project:

  1. react-native-sia API changes. The SDK is pre-1.0 and under active development. The project will pin to a specific version and the sync layer is isolated behind a single module to contain any breaking changes.

  2. vCard parsing edge cases. Google and Apple export slightly different .vcf dialects. Non-critical parse failures will be skipped rather than blocking the full import.

  3. App store approval timelines. I have published apps before and am not too concerned about this. Submission will be initiated at least one week before the grant end date.

  4. User onboarding friction. Connecting to sia.storage requires more steps than Google sync. A step-by-step in-app guide and a Demo Mode for users who want to explore before connecting will mitigate this.

Development Information

Will all of your project’s code be open-source?
Yes, MIT License.

Third-party dependencies (all MIT):

  • expo / expo-router / expo-sqlite / expo-secure-store / expo-document-picker / expo-sharing / expo-network
  • react-native-sia — MIT (Sia Foundation)
  • react-native-paper — MIT
  • expo-dev-client — MIT

Leave a link where code will be accessible for review.

Do you agree to submit monthly progress reports?
Yes.

Contact info

Email: [email protected]
Any other preferred contact methods: @manojsrinivasa on Discord

Hi @manojsrinivasa - welcome to the Sia community and thank you for your proposal.

A couple of items:

  • Projects with ‘Sia’ included in their name are not accepted, according to our brand guidelines.
  • What’s detailed in the project milestones appears to have already been achieved through the great demo video shared. Since the Committee hasn’t historically funded many projects retroactively, can you clarify what you’re seeking to have funded through this Small Grant?

Please note all revisions will need to be completed by Wednesday, May 20 by 5pm ET at the latest in order for this project to be put before the Committee at next week’s meeting. We also have a cap for how many proposals can be reviewed at once that we are close to hitting, so keep this mind.

Hi @mecsbecs,

Thanks for the feedback,

I have renamed the project to SiContacts to address the brand guidelines.

The demo runs on mock/hardcoded data in a local dev environment, it’s not connected to a real Sia bucket or a real user flow. Here is what still needs to be built:

Month 1 (by June 20):

  • Native build setup with EAS: react-native-sia requires a custom dev build and cannot run in Expo Go
  • expo-secure-store integration to safely store the App Key in iOS Keychain and Android Keystore
  • Production onboarding flow: step-by-step sia.storage connection with error states and recovery
  • Full contact CRUD with validation and edge-case handling
  • Offline-first architecture: all reads served from SQLite with background Sia sync that never blocks the UI
  • Contact list with search
  • vCard import covering Google Contacts and Apple Contacts export dialects
  • vCard export for full portability
  • Sia sync service (retries, conflict detection, manifest integrity)

Month 2 (by July 20):

  • Multi-device sync correctness tested across Android and iOS simultaneously
  • Contact groups
  • Dark mode and full UI polish to meet App Store / Play Store guidelines
  • Purchase Apple and Google developer accounts and submit App to both stores well before the deadline
  • App review timelines vary by platform (I will work closely with testers and respond to any feedback promptly to get approved as early as possible)
  • Bug fixes, user support, and continued maintenance of the app throughout both months and beyond

Thanks for these edits @manojsrinivasa. I’ll make sure the post title reflects the new project name.

Please update the original post with the revised milestones as well. This proposal will be reviewed at next week’s Committee meeting.

Hi @mecsbecs,
I have updated the original post with the revised milestones. Thanks for moving it forward!

Thanks for your proposal to The Sia Foundation Grants Program.

After review, the Committee has decided to reject your proposal citing the following reasons:

  • They have doubts users will find this a comparable alternative to the standard contacts apps available, and do not agree the current proposal fully addresses your stated problem. The Committee would be more interested in seeing an infrastructure-focused project where other apps that usually depend on Nextcloud or WebSync would surface an app backed by indexd instead to allow other apps on the phone to use and access the contact information as well.

We’ll be moving this to the Rejected section of the Forum. Thanks again for your proposal, and you’re always welcome to submit new requests if you feel you can address the Committee’s concerns.

Hi @mecsbecs,

Thanks for the feedback. I wanted to share some context before resubmitting.

I came across Sia at Consensus 2026 where I won the EasyA hackathon, specifically the Solana Mobile track, building Snakr App which I am shipping into their dApp Store in June. I have also shipped projects at ETHDenver, ETHGlobal and Hedera hackathons so building real apps under deadlines is something I already do.

On the infrastructure concern, I am thinking about targeting Solana Mobile (Saga and Seeker) as the primary distribution channel. These are crypto native Android devices with their own dApp Store and users already understand wallets and recovery phrases. Solana has no storage layer and SiContacts would be the first contacts app on their dApp Store backed entirely by decentralized storage.

Would love to know if this direction is worth a full resubmission.

Hi @manojsrinivasa thank you for this context and glad to hear you found out about Sia at this year’s Consensus. Your proposed concept unfortunately would require integrating with a non-Sia blockchain, which our Committee has indicated they do not wish to fund. Feel free to brainstorm other directions in our#grants-program channel on Discord and see how community members respond!

Hi @mecsbecs,

Thanks for the quick response and for the clarification. Really appreciate it!

1 Like