Sparkz

The architecture

Start with a spark,
not a token.

Every project is a Capsule - identity, backing, receipts, and Meme Engine memory that compounds. The coin is an optional output. The moat is the accumulating data. Here is how the whole thing fits together.

Next.js 16 - server-first Supabase - RLS everywhere Meme Engine loop Base - Farcaster native

The core loop

The Meme Engine

A cultural moment becomes distribution and a permanent record. Every run makes the next one smarter. Step through it:

Click a step - or wait, it advances on its own.

System map

Server-first, secret-safe, swappable

Every privileged action runs on the server with the service-role key; the browser never holds a secret. Every external system sits behind an adapter or a thin client. Click any node.

Data model

Five tables - the moat

RLS is on everywhere with no anon policies; reads and writes go through the server. Types are CHECK constraints, not enums - a new kind is a plain migration. Backing is provider-agnostic, so value settles off-chain or on-chain into the same table.

Adapter seams

Grows without a rebuild

Three registry-backed seams keep the loop swappable end to end. Adding a backend is a new file plus one import in bootstrap.ts - no UI change.