A decentralized creator-subscription platform built on the Sui blockchain.
Creators publish gated content, subscribers pay in SUI, and everything runs fully on-chain — no intermediary, no censorship.
Features • Tech Stack • Getting Started • Project Structure • Documentation • Team • License
🔐 Subscription-gated content — Creators define tiered subscriptions. Subscribers pay in SUI and get access to exclusive posts, enforced on-chain by the smart contract.
🔑 ZkLogin (Sign in with Google) — Users sign in with their Google account via Enoki zkLogin — a Sui address is derived automatically, no seed phrase needed.
⛽ Zero-gas experience — All transactions are sponsored via Enoki. Users never pay gas; the platform covers it.
🔒 End-to-end encryption (Seal) — Gated post content is encrypted client-side with Seal threshold encryption. Only subscribers with the right tier can decrypt. Key servers verify access by dry-running a Move function — no backend involved.
🗄️ Decentralized storage (Walrus) — All content (text, images, avatars, banners) is stored on Walrus, a decentralized blob-storage protocol on Sui.
🏷️ SuiNS names — Every creator automatically receives a human-readable subname (alice.patreon.sui) via SuiNS, making profiles easy to find and share.
📝 Rich posts — Creators can publish posts with text and multiple images, update them, change visibility, or delete them.
💬 Comments & reactions — Subscribers can comment on posts and react with emojis, all stored on-chain.
💸 Creator withdrawals — Accumulated subscription revenue is withdrawable at any time by the creator.
| Layer | Technology |
|---|---|
| Blockchain | Sui (Move smart contracts) |
| Frontend | Next.js 16 · React 19 · TypeScript |
| Styling | Tailwind CSS 4 · Radix UI · Framer Motion |
| Auth | Enoki zkLogin (Google OAuth) |
| Gas sponsoring | Enoki Sponsored Transactions |
| Encryption | Seal (threshold encryption) |
| Storage | Walrus (decentralized blobs) |
| Naming | SuiNS (Sui Name Service) |
| State management | Zustand · TanStack Query |
- Node.js ≥ 18
- pnpm (or npm)
- Sui CLI — installation guide
- A Google OAuth Client ID (for zkLogin)
- An Enoki API key (private + public) — Enoki portal
git clone https://github.com/your-org/SUI_patreon.git
cd SUI_patreoncd contract
sui client publishNote the Package ID and Platform object ID from the output — you'll need them for the .env file.
cd ../app
cp .env.example .envEdit .env with your values:
| Variable | Description |
|---|---|
NEXT_PUBLIC_PACKAGE_ID |
Deployed Move package ID |
NEXT_PUBLIC_PLATFORM_ID |
Shared Platform object ID |
NEXT_PUBLIC_SUI_NETWORK |
testnet, mainnet, or devnet |
NEXT_PUBLIC_ENOKI_API_KEY |
Enoki public API key (zkLogin) |
ENOKI_PRIVATE_API_KEY |
Enoki private API key (sponsored tx) |
NEXT_PUBLIC_GOOGLE_CLIENT_ID |
Google OAuth client ID |
SUINS_ADMIN_SECRET_KEY |
Private key of the wallet owning patreon.sui |
pnpm install
pnpm devThe app will be available at http://localhost:3000.
SUI_patreon/
├── app/ ← Next.js frontend application
│ ├── app/ ← Pages & API routes
│ ├── components/ ← React components
│ ├── hooks/ ← Custom React hooks
│ ├── lib/ ← Core logic (contract, walrus, seal, etc.)
│ ├── enoki/ ← Enoki client & sponsored tx helpers
│ ├── constants/ ← Configuration & mock data
│ ├── stores/ ← Zustand stores
│ └── types/ ← TypeScript types
├── contract/ ← Move smart contract
│ ├── sources/ ← Move modules (service, subscription, platform, types)
│ └── tests/ ← Move unit tests
└── docs/ ← Technical documentation
Detailed technical documentation for each integration is available in the docs/ folder:
| Document | Description |
|---|---|
| ENOKI.md | Sponsored transactions & zkLogin authentication |
| SEAL.md | Threshold encryption for gated content |
| WALRUS.md | Decentralized blob storage (posts, images) |
| SUINS.md | Human-readable creator subnames |
💙 Built with passion during the Sui Paris Bootcamp Hackathon
![]() Lucas Leclerc |
![]() Jules Lordet |
![]() Grégoire Caseaux |
![]() Aurelien Demeusy |
|---|



