Onefire1 LIVE
All projects

Multi-tenant virtual currency & community commerce platform

Built solo, end to end — schema design, business logic, payment infrastructure, file storage, and a production hosting migration.

01Overview

Neouid lets a "Bank Owner" create a branded virtual bank with its own currency, invite members, assign roles and granular permissions, mint and transfer currency, issue redeemable vouchers, and run an in-bank shop selling physical goods, digital downloads, or license keys — all backed by a tiered subscription model (Free / Pro / Enterprise) with real, enforced usage limits across every resource in the system. It is a closed-loop system by design: virtual currency has no cash value and cannot be bought, sold, or redeemed for real money through the platform. Bank Owners who want to offer real-world redemption do so entirely at their own discretion and their own risk — Neouid never sits in that flow of money.

02Metrics
3
Subscription tiers, independently enforced
8+
Distinct gated resource types
2
Payment processors integrated
2
Isolated R2 buckets (public / private)
90d
Automated security log retention
2 min
Signed URL expiry on paid downloads
75%
Usage threshold for upgrade prompts
1
Zero-gap hosting migration to Workers
03Stack

Next.js 16

Framework

TypeScript

Framework

Supabase

Database & Auth

PostgreSQL

Database & Auth

Cloudflare Workers

Infrastructure

Cloudflare R2

Infrastructure

Paddle

Payments & Comms

Resend

Payments & Comms

Zoho Mail

Payments & Comms

Google OAuth

Auth & Trust

2FA / MFA

Auth & Trust

reCAPTCHA

Auth & Trust

Tiptap

Content & Uploads

sanitize-html

Content & Uploads

AWS SDK v3

Content & Uploads

browser-image-compression

Content & Uploads

Google Analytics

Analytics

04Features

Core banking engine

  • Multi-tenant bank creation with custom currency name/symbol
  • Role-based membership — owner, admin, member, plus custom roles with granular per-permission access control (Pro/Enterprise)
  • Currency minting, peer transfers, and a full transaction ledger — balances are always computed from transaction history, never a mutable cached number
  • Voucher / redemption code system with per-bank active-voucher limits
  • QR-code based bank joining and voucher redemption

Commerce & digital goods

  • In-bank shop supporting physical and digital products, with variants each carrying independent price, stock, image, and delivery method
  • Three digital delivery modes: shared link, pooled unique keys claimed atomically on purchase, and secure uploaded files
  • Purchase-gated downloads — ownership verified server-side on every request, access granted via 2-minute signed URLs, never a permanent public link
  • Time-windowed discounts at both the product and individual-variant level, verified consistent between what's displayed and what's charged
  • Full order lifecycle — shipping capture, status tracking, cancellation with automatic refund to balance
  • Rich-text product descriptions, sanitized server-side before render

Subscriptions & billing

  • Three-tier plan structure (Free / Pro / Enterprise) with limits enforced in the database itself — banks, members, products, vouchers, storage, roles, branding, and API access all gate independently per tier
  • Full Paddle integration — inline checkout, HMAC-SHA256-verified webhooks with replay protection, and a self-service billing UI
  • A usage dashboard — homepage snapshot and full account-level breakdown — with real-time consumption tracking and automatic upgrade prompts past a 75% threshold

File storage architecture

  • Two-bucket R2 architecture — a public bucket for images, a fully private bucket for paid digital goods
  • Client-side image compression before upload, cutting typical file sizes by 10–20x
  • Presigned direct-to-bucket uploads — files never route through the app server
  • Ledger-backed storage quotas enforced server-side
  • Automatic cleanup on replace, plus an admin-triggered orphan sweep with mandatory dry-run and a 24-hour grace period

Trust & safety

  • Unified content-reporting system with a platform-admin review queue
  • Ban/lock system with required reasons, member-facing appeals, and automatic notifications
  • DMCA policy and takedown flow
  • Session/login-log retention with automated 90-day purge
  • Account deletion that scrambles and frees the associated email for reuse

Platform administration

  • A full Master Dashboard — bank/user management, unified reports queue, contact-message inbox with in-dashboard replies
  • Sidebar badge counts across every pending-action category
  • Product-level content moderation independent of the bank owner
05Engineering log
ResolvedPayment processor migration, mid-flight

The platform was originally built on PayPal; a processor-side account issue forced a full migration to Paddle as Merchant of Record mid-project. This meant redesigning the subscription schema (provider, provider_subscription_id, provider_customer_id), rewriting checkout and cancellation flows, and rebuilding webhook handling from scratch — all without disrupting the tier-enforcement logic already built on top of it.

ResolvedA multi-layer webhook delivery failure

Real Paddle webhooks were silently failing to update subscription state, while every unit-level check — signature verification, price-tier resolution, database writes — tested correctly in isolation. Root-caused through systematic elimination: ruled out a stale dev-server process, ruled out middleware interception, built a direct signed-request test script to isolate the handler from the delivery path, and ultimately traced the fault to a single missing path segment in the webhook destination URL — Paddle had been silently delivering every event to the homepage instead of the API route.

ResolvedPooled, cross-entity resource limits

Mid-project, subscription limits changed from strictly per-bank to pooled totals across every bank a single owner controls. This required re-architecting the limit-checking functions from simple per-row counts to owner-scoped aggregate queries across joined tables, while leaving the Free tier's simpler per-bank model completely untouched.

ResolvedSecure digital goods delivery

Designed a purchase-gated download system where server-side ownership verification happens independently on every request — never trusted from a prior page load — and access is granted only via signed URLs that expire in minutes and are regenerated fresh on each click, making shared or leaked links useless.

ResolvedStorage cost engineering

Rather than defaulting to the already-integrated Supabase Storage, ran the real numbers on egress-driven costs at scale and chose Cloudflare R2 specifically for its zero-egress-fee model — the correct call for a platform where the same images get viewed repeatedly. Paired with a client-side compression pipeline to keep the actual storage footprint small regardless.

ResolvedOrphaned file management, done safely

Rather than trusting client-reported state, built a genuine append-only ledger of every uploaded file, and layered an admin sweep tool on top that defaults to a dry-run preview and enforces a 24-hour grace period — directly preventing the tool from ever deleting a file a user has uploaded but not yet finished saving.

ResolvedA Turbopack persistent-cache illusion

Spent a debugging session chasing what looked like a stale browser cache — component changes not reflecting despite hard refreshes, full server restarts, and .next deletion — before correctly diagnosing that Next.js 16.3's new persistent Turbopack filesystem cache was the real cause, and explicitly disabling it via config to confirm the diagnosis.

ResolvedMigrating a live application to Cloudflare Workers

Migrated the deployment target from a standard Node.js runtime to Cloudflare Workers via the OpenNext adapter — surfacing and resolving two genuine platform incompatibilities (a jsdom-dependent HTML sanitizer with no Workers-compatible path, swapped for a pure-JS equivalent verified byte-identical against production data; a Next.js version floor required by the adapter) rather than papering over them, and requiring an explicit, itemized end-to-end verification pass — including deliberately testing both a valid and a forged webhook signature under the new runtime — before the migration was considered complete.

ResolvedSilent breakage from third-party in-app browsers

Diagnosed a React hydration-mismatch error, reported from a real user testing a shared link on Instagram, as third-party script injection from Meta's own in-app browser — not an application bug — and built a detection-and-redirect banner to address the actual underlying problem it revealed: Google OAuth silently fails inside in-app browsers, a genuine conversion risk for any social-shared link.

06Development log
Epic 1Core Platform Foundation

Bank creation, membership and roles, currency ledger, RLS-secured schema, base dashboard shell and design system.

Epic 2Commerce Layer

Shop, products and variants, digital delivery (link/keys), orders, shipping, discounts.

Epic 3Monetization Infrastructure

Subscription tiers, PayPal integration, then full migration to Paddle as Merchant of Record; tier-gated capability system across every resource.

Epic 4Trust, Safety & Compliance

Reporting and moderation tools, ban/lock system, Master Dashboard, DMCA policy, cookie consent, data retention automation, GDPR-aligned Terms and Privacy Policy.

Epic 5File Storage & Digital Goods

Cloudflare R2 integration, image compression pipeline, tiered storage quotas, purchase-gated secure file delivery, orphaned-file lifecycle management.

Epic 6Usage Transparency & Growth

Real-time usage dashboards, threshold-based upgrade prompts, responsive redesign across every surface including a dual-layout pricing page.

Epic 7Production Hosting Migration

Full migration from a Node.js-shaped deployment to Cloudflare Workers, including dependency incompatibility resolution and rigorous end-to-end verification against live services before go-live.

Built solo — product decisions, database architecture, backend business logic, frontend implementation, payment infrastructure, file storage design, and DevOps/hosting migration.