Restake once. Secure everywhere.
A complete Web3 protocol, built end to end. Lumea is a fictional omnichain restaking protocol where you restake a single asset to help secure operator sets across five EVM chains and earn protocol fees. It runs live on the Sepolia testnet, with real contracts, real wallet flows, and one design language from the Solidity up to the WebGL.
Lumea is a portfolio demonstration. It runs on the Sepolia testnet only, with no mainnet deployment and no real funds. The token, the protocol, and the legal copy are all illustrative. What is real is the engineering: live contracts, real wallet flows, real on-chain reads and writes, and a design system that holds together across a dozen pages.
| Surface | What it does |
|---|---|
| Presale | Whitelist gating read from the contract, contributions in ETH, and a pull-based claim |
| Staking | Approve then stake, with Synthetix-style rewards that tick by the second |
| Mint | A dynamic NFT whose art and stats evolve as you stake |
| Dashboard | A live markets view with animated charts and a real top-100 explorer |
Every flow handles each wallet state the same way: not connected, wrong network, not enough balance, approval needed, pending, confirmed, reverted, and rejected. One transaction button and toast system carries all of it, so the whole app behaves consistently no matter which surface you are on.
- A live markets dashboard. Real top-100 market data, an animated $LMA candlestick and area chart you can drag to zoom, and a wallet's positions aggregated into one portfolio view. It is the page that makes the protocol feel alive rather than static.
- Real on-chain staking. A Synthetix-style rewards model with live per-second accrual and the approve-then-stake allowance flow handled cleanly. A calculator with two signature hue sliders models stake size and lock duration against an 80 to 180 percent yield band.
- A dynamic, evolving NFT. The Operator Pass is an ERC-721 with on-chain attributes that climbs through five tiers as you stake, its generative SVG art regenerating to match. Every pass is drawn from its own on-chain seed, so no two look alike, and minting is gated on having a stake. It is earned, not just bought.
- A presale that actually runs. It reads the whitelist straight from the contract, takes contributions in ETH with a per-wallet cap, and uses a pull-based claim so tokens are collected by the buyer rather than pushed by an admin.
- Omnichain by design. Architected for Ethereum, Polygon, BNB Chain, Base, and Arbitrum from a single codebase, each rendered in its own brand color with a hand-built chain glyph. The live demo runs on Sepolia, and the copy never pretends otherwise.
- One transaction abstraction. A shared button and toast system handles every wallet state, from wrong-network to reverted, identically across all four surfaces, with explorer links on every step.
Next.js 16 (App Router) · React 19 · TypeScript · Tailwind CSS v4 · wagmi v2 + viem v2 + RainbowKit v2 · Solidity ^0.8.20 + OpenZeppelin v5 · Drizzle ORM + Neon serverless Postgres · Recharts · pdf-lib · Vercel. The four contracts, the presale funnel, the staking math, and the dashboard all share one data model, with no backend beyond Next.js route handlers and no server-side wallet.
Four contracts in Solidity ^0.8.20 on OpenZeppelin v5, deployed and verified on Sepolia. The source lives in contracts/; each link below opens the verified code on Etherscan.
| Contract | Standard | What it does | Verified |
|---|---|---|---|
| LumeaToken · $LMA | ERC-20 | Fixed 1,000,000,000 supply; the reward, presale, and staking token | 0xc7c6…d111e |
| LumeaStaking | Synthetix StakingRewards |
Stake $LMA, earn $LMA; per-second accrual, owner-funded reward epochs | 0xbfba…18a1 |
| LumeaPresale | Custom | Whitelisted ETH contributions, pull-based claims, per-wallet cap | 0xc7c3…0b3e |
| LumeaOperatorPass | Dynamic ERC-721 | On-chain attributes; evolve() gated on staked $LMA; live tokenURI art |
0x501a…5247 |
flowchart LR
H((Holder))
T["LumeaToken ($LMA)"]
P[LumeaPresale]
S[LumeaStaking]
N[LumeaOperatorPass]
P -- "claim $LMA" --> H
H -- "stake $LMA" --> S
S -- "earn $LMA" --> H
N -- "evolve() reads stake" --> S
T -. funds .-> P
T -. rewards .-> S
Engineering notes
- Synthetix rewards, adapted for one token. Staking and rewards are the same token ($LMA);
notifyRewardAmountsubtracts staked principal from the contract balance so staked tokens are never paid out as rewards. - Pull-based presale claims. Contributors pull their proportional allocation (
contribution * rate / 1e18); there are no unbounded loops, andrecoverTokenscan only sweep surplus, never tokens still owed. - A genuinely dynamic NFT. Attributes live on-chain;
evolve()reads a real staked balance from the staking contract and scales power with stake;tokenURIserves live metadata and generative art from chain state. - ReentrancyGuard on every value-moving path, Ownable admin, deployed via an automated script and verified on Etherscan.
- Live demo: https://lumea.pixellabs.ventures
- Case study: https://pixellabs.ventures/studio/product/lumea
Built by Pixel Labs. A fictional demo on Sepolia, no real value at any point. Restake once. Secure everywhere.