Circles Flow
How Mutual Aid Map uses Circles primitives in the MVP.
Pathfinding transfer, not a bolt-on checkout
Funding goes through the connected Safe injected by the Circles host. The app checks trust-path capacity and builds an advanced CRC transfer.
- Requester opens the app in the Circles host and creates a local aid request with their Safe address as recipient.
- The app encodes the request into a share link so funders can import the same need without a backend.
- A funder opens the link in the Circles playground/host, checks max transferable CRC via @aboutcircles/sdk pathfinding, then funds with sendTransactions().
- The host signs and submits the flow-matrix transaction through the funder Safe; the app records returned transaction hashes locally.
const runner = {
address,
sendTransaction: async (txs) => sendTransactions(
txs.map((tx) => ({
to: tx.to,
data: tx.data,
value: tx.value?.toString() ?? '0',
}))
),
};
const sdk = new Sdk(undefined, runner);
const avatar = await sdk.getAvatar(address);
await avatar.transfer.advanced(recipient, amountAtto, {
useWrappedBalances: true,
});Why it fits circles/garage
The app is designed around human trust, direct CRC funding, repeat use, and invite/share loops.
Circles integration
Profile view, trust stats, pathfinding max flow, and advanced CRC transfers.
Usefulness
Small urgent needs become fundable links communities can circulate quickly.
UX
A map-first aid layer with clear progress, urgency, and wallet state.
Activity/referrals
Every request produces a playground link that invites a funder to open the app.