Row-level security on every farm table
Database-level policies ensure a query can only return data for farms the requesting user actually belongs to, regardless of how the request is made.
Boma enforces farm data isolation and role permissions at the database layer using row-level security, so access control is a real technical boundary, backed by an audit trail of who did what and when.
Row-level security
Farm data isolation enforced directly at the database layer.
Audited
Sensitive actions are recorded with actor, entity, and timestamp.
No PII in analytics
Platform usage analytics are built to exclude personal data by design.
Access Boundary
Row-level security means a farm’s data cannot be reached by another tenant even if a request bypasses the visible interface.
What This Feature Does
Security and Farm Data Control describes how Boma protects farm data as a foundational property of the platform, not a feature bolted on afterward. Every table that holds farm-specific data — animal records, health events, milk entries, team membership, reminders — is protected by row-level security, meaning the database itself refuses to return rows belonging to a farm the requesting user does not have access to.
On top of data isolation, role-based permissions determine what an authorized user can do within their own farm, also enforced at the database layer. A worker calling the same underlying data a manager can call still cannot perform manager-only actions, because the permission check does not live only in the app’s interface — it lives in the data access rules themselves.
Sensitive administrative actions — suspending a farm, changing a subscription, granting platform admin access — are recorded in an audit trail with who performed the action, what it affected, and when, so accountability does not depend on someone remembering what happened.
Key Capabilities
Each capability below is available today inside Boma, not a roadmap promise. Together they form the working core of this feature.
Database-level policies ensure a query can only return data for farms the requesting user actually belongs to, regardless of how the request is made.
Farm role restrictions are checked at the database, not only hidden in the interface, so access boundaries hold even for direct data requests.
Administrative actions like suspensions, subscription changes, and role changes are recorded with actor, entity, and timestamp.
Offline mobile submissions use idempotency keys, so a retried sync after a dropped connection cannot silently duplicate a record.
Suspending or removing a user or farm membership takes effect immediately, closing off access without a delay window.
Platform-level usage analytics are built to exclude personal data such as names, emails, and passwords from tracked event payloads by design.
Platform administration is a separate role from any farm’s own membership, so elevated platform access does not implicitly grant access to a specific farm’s operational data beyond what administration requires.
Why It Matters
Farm operations data is sensitive in ways that are easy to underestimate: financial signals like sales and production trends, personnel information tied to team accounts, and operational detail that a competitor or bad actor could misuse. Software that treats access control as a UI convenience rather than a real boundary is one configuration mistake away from exposing that data.
Boma’s approach is to make the database itself the enforcement point. A bug in the interface, a misconfigured screen, or a direct API call cannot bypass row-level security, because the restriction is not implemented in the interface at all — it is implemented where the data lives.
Isolation that holds even if the UI has a bug
Because enforcement is at the database, an interface mistake cannot expose another farm’s data.
Real accountability for sensitive actions
Audit logging means administrative actions are traceable, not just trusted on faith.
No duplicate records from unreliable connections
Idempotent writes mean field conditions cannot corrupt the accuracy of the farm’s record.
Analytics that respect farm privacy
Platform-level usage tracking is scoped to product analytics, not farm operational or personal data.
Use Cases By Role
Boma is built around real farm roles. Here is how this feature shows up differently depending on who is signed in.
An owner evaluating Boma against a spreadsheet or a shared drive gets a real technical guarantee that their farm’s data is isolated from every other tenant, not just a policy statement.
A manager suspending a former employee’s membership knows the access is closed immediately, not eventually, and that the action is logged.
A worker’s access is limited to what their role allows, enforced at the data layer, so there is no risk of accidentally reaching data or actions outside their responsibility.
A vet working across multiple farms only sees data for the farm they are currently a member of, with no bleed-through from other engagements.
A platform admin investigating an access question can review the audit log to see exactly which administrative actions occurred, by whom, and when.
How It Works
Security is not a separate step in the workflow — it is enforced continuously as part of every request.
Authentication establishes who the user is before any data request is evaluated.
Row-level security policies confirm the requesting user belongs to the farm the data is scoped to.
Beyond farm membership, the user’s role determines whether the specific create, update, or view action is allowed.
Administrative actions that affect access, billing, or farm status are recorded in the audit trail as they happen.
A suspension, removal, or role change is applied right away, with no delay before it becomes effective.
Boma is built on Supabase, using Postgres row-level security as the enforcement mechanism for farm data isolation and role permissions. This means the same rules apply whether a request comes from the web dashboard, the mobile app, or a direct API call — there is no separate, weaker access path.
Two classes of backend access exist deliberately: a row-level-security-scoped client used for normal user actions, and a service-role client reserved for trusted server-side operations like cross-farm admin queries or system bookkeeping. The service-role client is never exposed to end users, keeping the privileged path narrow and auditable.
Postgres row-level security
Farm isolation and role permissions are enforced by the database itself, not application code alone.
No weaker access path
Web, mobile, and API access all go through the same enforcement rules.
Narrow, audited privileged access
Service-role access is reserved for trusted server operations and never exposed to end users.
Consistent behavior across the platform
Every module relies on the same underlying security model rather than reimplementing its own rules.
Business Outcomes
These are the practical shifts farms describe once the feature is part of daily use, not a marketing estimate.
Real data isolation between farms
Enforced at the database, not just assumed based on interface behavior.
Traceable administrative actions
Sensitive changes are logged, supporting accountability and review after the fact.
Reliable data even on unreliable connections
Idempotent writes prevent duplicate records from retried offline submissions.
Privacy-respecting platform analytics
Usage tracking is designed to exclude personal and sensitive farm data from analytics payloads.
Questions
Specific answers for teams evaluating whether this part of Boma fits how the farm actually runs.
Every farm-scoped table uses Postgres row-level security, meaning the database itself will not return data for a farm the requesting user does not belong to, regardless of how the request is made.
Role permissions are enforced at the same database layer as farm isolation, not only in the interface, so a request that bypasses the visible UI is still subject to the same restrictions.
Yes. Sensitive actions like suspensions, subscription changes, and role changes are recorded in an audit trail with the acting user, the affected entity, and a timestamp.
Offline submissions use an idempotency key, so a retried sync is recognized as the same entry and will not create a duplicate record.
No. Platform usage analytics are designed to track product-level events like page views and feature usage while excluding personal data such as names, emails, and passwords from event payloads.
Related Features
Ready To Try It
Talk to us about how Boma secures farm data, or start free and see the access model in practice.