About Tightknit

What inspired us

We wanted to shrink the gap between neighbors who need help and neighbors who want to help without forcing every interaction through money. Paid marketplaces solve convenience for people who can pay but leave other groups out.

Time banking fit that intuition: trades are counted in hours, favors stay reciprocal, and communities can rely on mutual aid plus transparency rather than charity alone. Post a request, someone nearby responds, coordination happens through real conversation.

What we learned

Supabase bundled Auth, Postgres, and Realtime for us, so the real work was wiring JWT sessions + RLS to every query, using RPCs where the ledger needed atomic steps, and Realtime for live chat. Next.js App Router made it easier to keep server-side session/cookie handling separate from the browser client for interactive UI. Onboarding drove nearby queries and forced schema + RLS choices so profiles stay useful without over-exposing data.

How we built it

We implemented a full neighborhood time-banking loop in a Next.js app: Auth - sign up / sign in / password flows and middleware-backed session handling with Supabase. Home - browse nearby open requests and surface hour balance. Ask - create requests with a duration so the time bank has a unit of account. Request detail - “I can help” to offer and move into coordination. Messages - real-time chat between participants; both acknowledge completion before hours update. You - profile, search radius, gifting hours, and history. Stack: Next.js 16, React 19, TypeScript, Supabase (Auth + Postgres + Realtime), Tailwind CSS 4 with route-level styling. Database work lives in Supabase migrations and RPCs (profiles, gifting, completion, etc.)

Challenges we faced

Learning to work with Supabase was the greatest challenge we faced in this project. Fetching data from our database while ensuring users only ever saw or changed their own rows meant battling with Row Level Security policies, JWT claims, and the split between the browser client and server-side Supabase helpers. Miisconfigured policies or missing authentication checks and the app would either leak data or return empty results with no obvious error.

Built With

Share this project:

Updates