Skip to main content
Two hands passing a small bundle across a kitchen table, soft window light from the left

Mutual Mesh

Mutual-aid app connecting neighbours who want to help with those who need it. Privacy-first: a PRIVACY.md gate blocks every new feature before any code ships.

Role
Lead engineer
Year
2026

Tech

  • Expo
  • React Native
  • Supabase
  • TypeScript

Tags

  • #community
  • #mobile
  • #privacy

The problem

Mutual aid networks exist in communities everywhere, but centralized platforms create a surveillance problem. A database of "what people need" is a database of vulnerability — one that can be breached, sold, or handed over to authorities. I wanted neighbours to help each other without the platform being able to see, profit from, or report what they were sharing.

The approach

Expo and React Native for the app layer, Supabase for auth and real-time matching — but with encryption and Row Level Security configured so the platform is blind to request content. Even I can't read what users are asking for. A `PRIVACY.md` gate in the repository blocks every new feature from shipping until its privacy implications are documented. The constraint isn't a policy document; it's enforced by the codebase itself.

What shipped

A proof of concept running in 2 pilot neighbourhoods. End-to-end encrypted requests and offers, real-time matching without a central content database, and a privacy gate that's already been used to block three features that would have introduced tracking. People shared asks they wouldn't have posted anywhere else — because they knew the platform couldn't surveil them.

Reflection

Trust is earned through constraints, not promises. The most important architectural decision I made was building a platform that cannot surveil its users — not one that promises it won't. That's a different thing entirely.

Have a project like this?
Let's talk.

Get in touch