Privacy Policy
Last updated: April 29, 2026
Introduction
MeshVote is operated by Magnalia ("we", "us", or "our"). This Privacy Policy explains how we collect, use, store, and protect your information when you use the MeshVote mobile application (iOS, Android, macOS) and the MeshVote web dashboard.
By using MeshVote, you agree to the collection and use of information as described in this policy. If you do not agree, please do not use the application.
Information We Collect
Account Information
When you create an account, we collect:
- Email address — provided during sign-up or via your Google or Apple account
- Display name — chosen by you during registration
- Authentication provider — whether you signed in with email/password, Google, or Apple
- Profile avatar — an optional image you upload
Device Information
- Ed25519 public keys — a unique cryptographic key is generated on each device you use. The public key is linked to your account to verify vote authenticity. Your private key never leaves your device.
Location Data
With your permission, we collect your approximate location (reduced to ~100 meter precision) to associate your account with a geographic area. Location is requested with medium accuracy and is optional — the app functions without it. You can revoke location permission at any time in your device settings.
Analytics and Crash Reports
- Firebase Analytics — on iOS and Android we collect anonymous usage events such as group creation, poll creation, vote casting, and sign-in events. On the MeshVote web dashboard we collect anonymous usage statistics such as page views and sessions. Analytics are disabled on macOS.
- Firebase Crashlytics (iOS and Android only) — crash reports are collected to help us identify and fix bugs. These include device type, OS version, and stack traces.
Local Data (On-Device)
MeshVote stores data locally on your device in an SQLite database, including your identity keys, groups you have joined, polls, votes, and chat messages. This local copy lives on your device and is shared peer-to-peer via Bluetooth. For groups created with Network Sync enabled (the default), the same data is also synced through encrypted cloud storage as a parallel transport — see the Network Sync section below.
Bluetooth Low Energy (BLE) Data
MeshVote uses Bluetooth Low Energy mesh networking for peer-to-peer communication. Votes and poll data are exchanged directly between nearby devices via BLE. BLE-layer traffic is not routed through our servers — it travels only between phones in physical Bluetooth range. BLE communication includes cryptographically signed events that propagate through the mesh network.
Network Sync (Cloud Sync)
For groups created with Network Sync enabled (the default), MeshVote runs encrypted cloud sync alongside the Bluetooth mesh as a parallel transport. This allows late-joining members to catch up instantly and keeps votes in sync across devices that cannot reach each other over Bluetooth. Data synced through Network Sync includes polls, votes, and chat messages for that group, stored in Google Firestore.
Network Sync data is end-to-end encrypted with the group's invite key before it is uploaded; the invite key is held only by group members and admins and is never sent to our servers. Voter identifiers in cloud storage are hashed (HMAC-SHA256, keyed with the group key) before storage so that voter identities cannot be enumerated from server logs. Our servers see only ciphertext and pseudonymous identifiers.
Network Sync is set per-group at the time of group creation and is immutable once chosen. Administrators who prefer fully offline operation can create groups with Network Sync off; in that case, no group data is synced to our cloud — the group runs purely over Bluetooth.
How We Use Your Information
- To provide and operate the MeshVote service
- To authenticate your identity and secure your account
- To verify the authenticity of votes using cryptographic signatures
- To improve app performance and fix bugs (via analytics and crash reports)
- To associate groups with geographic locations (with your permission)
Data Storage and Security
Account data (email, display name, avatar, device keys) is stored in Google Firebase (Firestore) infrastructure. All data is encrypted in transit via TLS. Firestore security rules restrict access so that users can only read and modify their own profile data.
Every vote and poll event is cryptographically signed with Ed25519, providing tamper-proof verification of data integrity across the mesh network.
Data Sharing
We do not sell your personal data to third parties. We share data only with the following service providers, which process data on our behalf:
- Google Firebase — authentication, cloud database (Firestore), analytics, crash reporting, and remote configuration
- Google Cloud Platform — server infrastructure for Cloud Functions
These providers are bound by their own privacy policies and data processing agreements.
Your Rights
Depending on your jurisdiction, you may have the following rights regarding your personal data:
- Access — request a copy of the personal data we hold about you
- Correction — request that we correct inaccurate data
- Deletion — request that we delete your account and associated data (see Account Deletion)
- Portability — request your data in a portable format
- Opt-out — you can disable analytics by revoking permissions in your device settings
To exercise any of these rights, please contact us via our Support page.
Data Retention
We retain your account data for as long as your account is active. When you delete your account, your Firestore profile (display name, email, avatar, device keys) and Firebase Authentication account are permanently deleted.
Votes that have already been cast and propagated through the BLE mesh network cannot be recalled from other devices, as they are cryptographically signed and distributed across the peer-to-peer network. For groups using Network Sync, votes are also stored in encrypted cloud storage under the group document; this data is bound to the group lifecycle (deletion of the group removes its cloud-stored polls, votes, and chat) rather than the individual user account, since voter identifiers in the cloud copy are hashed and not directly linked to your account. Local data stored on your device (SQLite database) is removed when you uninstall the app.
Account Deletion
You can delete your account at any time from within the app (Profile screen) or by visiting our Account Deletion page. When your account is deleted, our Cloud Function automatically removes your Firebase Authentication account and all associated Firestore data.
Children's Privacy
MeshVote is not directed at children under 13 years of age. We do not knowingly collect personal information from children under 13. If we become aware that we have collected data from a child under 13, we will take steps to delete it promptly.
Cookies and Web Technologies
The MeshVote web dashboard uses Firebase Authentication session cookies to maintain your login session. We do not use third-party advertising or tracking cookies. Firebase Analytics may use local storage on the web dashboard for anonymous usage statistics.
Changes to This Policy
We may update this Privacy Policy from time to time. Changes will be posted on this page with an updated "Last updated" date. Continued use of MeshVote after changes constitutes acceptance of the revised policy.
Contact Us
If you have questions about this Privacy Policy or your data, please visit our Support page.