tfpdev
All workCase 02 / 04
PaymentsAutomationUnder NDA

Membership Platform, California

A community organization with nothing digital. Membership, payments, store, events and delivery had to exist in three months.

3 months
idea to production
3k+
monthly members
$50k+
monthly store turnover
Region
California, US
Role
Developer → team lead → head of all technology
Duration
Late 2024 – present · ~2 years, ongoing
Status
In production.
Team
7 engineers at peak, 9 at most. 18 people across the digital program.
StackNext.jsReactNode.jsExpressPostgreSQLSupabaseVercelPythonLightspeed POS

What they needed

Nothing existed. No member database, no events system, no store that worked. There was a store SaaS. It was bad enough that we rewrote it rather than integrate it.

The organization knew from day one this was a large program: membership tiers, payments, a store, events, a community space, and delivery for members who cannot come in person. Later a print production line with its own hardware joined the platform.

I joined as a developer at the end of 2024. By the time the first version shipped I was leading the dev team. Today I run all of the technology.

What I did

  1. Membership is a gate, not a label

    A non-member gets nothing. The funnel ends with a physical member card, issued in person after a document check. No KYC vendor.

    Why

    We looked at building KYC and at buying it. For this community a person at a desk checking a driver's license is cheaper, faster and more trusted than any API. The software's job is to make that desk the only way in.

  2. One classic stack, no experiments

    Next.js and React on Vercel, Node and Express for services, Postgres on Supabase, Python for anything that needed a script. I wanted Vue at the time. We did not pick Vue.

    Why

    I was not ready to run commercial development on a framework I was still learning, and hiring would have been harder. The hire that mattered most was a front-end engineer, because front-end is the work I do slowest.

  3. Hire DevOps early, let him leave early

    Four months of a very strong DevOps engineer set up environments, deploys and monitoring. He consults for us now.

    Why

    The platform would not have shipped in three months without that work. It also did not need a full-time DevOps engineer once it was done.

  4. Integrate the point of sale, do not replace it

    The store runs on our platform. Lightspeed POS is integrated for in-person sales and inventory. Payments go through several third-party APIs and our own crypto bridge.

    Why

    Replacing POS hardware across locations was not where the value was. Inventory and member identity were.

  5. Keep the monolithic admin

    The admin panel is large, heavy and collects a lot of operational statistics. It breaks occasionally. I am the only one who works on it.

    Why

    Rewriting it costs more than maintaining it, and it does everything it was asked to do. Members never see it. Admin downtime is an inconvenience, not an incident.

Proof

3 months
idea to production
3k+
monthly members
$50k+
monthly store turnover

Four product lines, one member identity.

Architecture
Four product lines, one member identity.Membercard issued in personPlatformtiers · events · communityAdminops · statistics · payrollStoreonline + Lightspeed POSPostgresone member recordDeliverymembers who can't come inPayments3rd-party APIs · cryptoPrint lineown hardware

What I would do differently

  • Supabase. The platform needs plain Postgres that we operate. We should have left as soon as it was possible.

  • Vercel is fine. The next step is our own infrastructure, and early decisions make that move harder than it should be.

  • Staff payroll calculation broke several times: bonuses, staff loans, staff prices, per-person rates, and automatic time logging that depended on people clocking out. It should have been a separate, boring service from the start.

Stack

  • Next.js
  • React
  • Node.js
  • Express
  • PostgreSQL
  • Supabase
  • Vercel
  • Python
  • Lightspeed POS