Skip to content

FM Consulting

Volunect

A role-based volunteer coordination platform for NGOs — multi-user team accounts, QR-code attendance check-in, and map-based event discovery, delivered end-to-end on Next.js and Supabase.

Gallery

Case study

The problem

NGOs were coordinating volunteers through spreadsheets, ad-hoc email chains, and single-owner logins that broke down the moment an organization had more than one admin — there was no shared way to manage a team, publish events, or know who had actually shown up. Volunteers, meanwhile, had no single place to discover local opportunities, sign up, and prove attendance across the different organizations they supported.

The solution

Volunect gives each NGO a shared, multi-user account with tiered roles (Owner, Admin, Coordinator), invite-by-email onboarding, and an events dashboard with status filtering, search, and date-range controls. Attendance is confirmed by scanning a QR code with a phone's own camera instead of a paper sign-in sheet. On the volunteer side, a single profile can hold both a personal "Volunteer" context and membership in any number of NGOs at once, switchable from the navbar, alongside a public event-discovery experience with map-based radius search and city/category/date filtering.

How it was built

Built iteratively from a single-owner NGO model into today's multi-tenant, role-based membership system, with the authorization boundary enforced at the database layer through a sequence of forward-only Postgres Row-Level-Security migrations rather than in application code alone. Several edge cases in that RLS layer were caught and fixed only by testing directly against the live hosted database, not just by reasoning about the policies. Address search and the interactive event map were layered in afterward as an additive Google Maps Platform integration (session-token-based Places Autocomplete to keep costs predictable, PostGIS-backed radius search) without disrupting the filters already in place, and the QR check-in flow deliberately relies on each staff member's own phone camera rather than a custom in-app scanner, avoiding the permission and performance issues that come with browser-based camera access.

More projects