EthSilesia hackathon stack: onchain coworking (bookings, passes, events) plus the Nox confidential token demo on Arbitrum Sepolia — wrap, privately pay the hub in cUSDC/cRLC, selective disclosure, delegated view.
Copy .env.local.example to .env.local and set values. On Vercel, define the same keys in Project → Settings → Environment Variables.
| Variable | Required | Description |
|---|---|---|
NEXT_PUBLIC_APP_URL |
Recommended | Canonical site URL (metadata, sitemap, Open Graph). Use your production URL on Vercel; locally often http://localhost:3000. |
NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID |
Yes (wallet UI) | Reown / WalletConnect project ID from cloud.reown.com. Without it, wallet connection is degraded. |
NEXT_PUBLIC_SPACE_TREASURY |
Yes for /space pay |
Arbitrum Sepolia 0x… treasury for bookings and membership. |
NEXT_PUBLIC_SPACE_TREASURY_EVENTS |
No | Optional separate treasury for event deposits; falls back to main treasury if unset. |
NEXT_PUBLIC_SPACE_TREASURY_GRANTS |
No | Optional grants pool; falls back to main treasury if unset. |
NEXT_PUBLIC_SUPABASE_URL |
For admin + ingest DB | Supabase project URL. Create a project and run supabase/schema.sql in the SQL editor. |
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY |
Optional | Only if you add a client-side Supabase client; this app uses Next.js API routes with the service role for server access. |
SUPABASE_SERVICE_ROLE_KEY |
For admin + ingest | Server-only. sb_secret_… or legacy service_role JWT. Never prefix with NEXT_PUBLIC_ or commit to git. |
COWORKING_INGEST_SECRET |
Recommended in production | Server-side secret checked by POST /api/coworking/ingest. |
NEXT_PUBLIC_COWORKING_INGEST_SECRET |
Same as above | Must match COWORKING_INGEST_SECRET so the browser can send the same header when syncing coworking state. If both are empty, ingest is open (local dev only). |
ADMIN_PASSWORD |
For /admin login |
Password for the admin dashboard at /admin. |
ADMIN_SESSION_SECRET |
For /admin |
Long random string used to sign the httpOnly admin session cookie (e.g. openssl rand -hex 32). |
Quick reference (grouped)
# Public app
NEXT_PUBLIC_APP_URL=http://localhost:3000
NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID=
# Coworking treasuries (Arbitrum Sepolia)
NEXT_PUBLIC_SPACE_TREASURY=
NEXT_PUBLIC_SPACE_TREASURY_EVENTS=
NEXT_PUBLIC_SPACE_TREASURY_GRANTS=
# Supabase
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=
SUPABASE_SERVICE_ROLE_KEY=
# Coworking ingest (match server + client values in production)
COWORKING_INGEST_SECRET=
NEXT_PUBLIC_COWORKING_INGEST_SECRET=
# Admin (/admin)
ADMIN_PASSWORD=
ADMIN_SESSION_SECRET=| Layer | Technology |
|---|---|
| Framework | Next.js 16 (App Router, Turbopack) |
| Styling | Tailwind CSS v4 + shadcn/ui (New York) |
| Web3 | wagmi v2 + viem + Reown AppKit |
| Confidential | Nox SDK (@iexec-nox/handle) |
| Chain | Arbitrum Sepolia (421614) |
| Prices | CoinGecko API (via Next.js API route) |
- Wallet connection — MetaMask, Rabby, Coinbase Wallet, WalletConnect
- Dashboard — Portfolio overview with public & confidential balances
- Faucet — Quick access to testnet token faucets
- Wrap / Unwrap — Convert public tokens (USDC, RLC) into confidential tokens (cUSDC, cRLC) at 1:1 ratio
- Confidential Transfer — Send cTokens with encrypted amounts
- Selective Disclosure — Grant auditors read access to your confidential balance
- Delegated View — View balances shared with you by other users
- Coworking hub (
/space) — Hourly desks/rooms, subscriptions, token-gated events, treasury pay via pre-filled confidential transfer - Activity Explorer — Transaction history with filtering
- Developer Mode — Inspect smart contract calls and Nox SDK methods
- Light / Dark theme — Full theme support
| Contract | Address |
|---|---|
| USDC (ERC-20) | 0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d |
| cUSDC (ERC-7984) | 0x1ccec6bc60db15e4055d43dc2531bb7d4e5b808e |
| RLC (ERC-20) | 0x9923eD3cbd90CD78b910c475f9A731A6e0b8C963 |
| cRLC (ERC-7984) | 0x92b23f4a59175415ced5cb37e64a1fc6a9d79af4 |
| NoxCompute | 0xd464B198f06756a1d00be223634b85E0a731c229 |
- Node.js 18+
- A WalletConnect project ID (cloud.reown.com)
git clone <your-repository-url>
cd CypherSpace
npm install
cp .env.local.example .env.local
# Edit .env.local — see [Environment variables](#environment-variables) above.npm run dev # http://localhost:3000
npm run build # Production build
npm run lint # ESLintapp/
(landing)/ # Landing page + Terms (Header + Footer layout)
(app)/ # Dashboard, Activity, Delegated View (Topbar + DashboardHeader layout)
api/prices/ # CoinGecko proxy
components/
layout/ # Topbar, Header, Footer, DashboardHeader, MobileMenu
landing/ # HeroSection, FeatureCard, FeaturesSection
dashboard/ # DashboardContent, Assets, ActionCenter, TokenRow
modals/ # Faucet, Wrap, Transfer, SelectiveDisclosure
shared/ # Logo, CodeSection, InfoCard, ErrorMessage, TxStatus…
explorer/ # ExplorerContent, ActivityTable
delegated-view/ # DelegatedViewContent, DelegatedViewTable
ui/ # shadcn primitives
hooks/ # Transaction hooks, balance hooks, UI hooks
lib/ # Contracts, tokens, config, wagmi, gas, ABIs
Convert public tokens (USDC, RLC) into confidential tokens (cUSDC, cRLC) at 1:1 ratio. Unwrap burns cTokens to recover the underlying ERC-20.
Transfer cTokens to another address. The amount is encrypted — no on-chain observer can determine it.
Grant a viewer (auditor, regulator) read access to your confidential balance. Access is per-handle and must be re-granted after each transaction.
View confidential balances that other users have shared with you. Displays the list of tokens you have been granted access to, with decrypted amounts.
This project is licensed under the GNU General Public License v3.0 — see LICENSE. (GPLv3-compatible licenses are acceptable for combined works; this repository is GPLv3.)
See SOURCE.md for the required ETHSilesia hackathon sentence.