Official smart-contract repository
|
v
Official deployment manifests + ABI arrays
|
| npm run contracts:sync (external official checkout in CI)
v
DApp deployment snapshot and generated ABIs
|
v
Central address/ABI layer -> wagmi/viem -> connected Celo wallet/RPC
|
v
Static Next.js frontend on GitHub Pages
The single contract configuration layer is addresses.ts, index.ts, deployments/dapp-config.json, and abis/. The active Celo Sepolia contracts are CeloHTAgentRegistry, CeloHTServicePayments, CeloHTEducation, CeloHTReforestation, and CeloHTGovernance.
Course content, profile metadata, evidence, indexed events, persistent progress, and authentication are not blockchain state. Supabase support is optional and browser-only through the public anonymous key; no service-role credential or admin API exists in this static repository. Without an indexed backend, pages show Unavailable rather than inventing records.
Contract roles and treasury authority remain on-chain. The frontend does not administer roles and does not contain private keys. A future admin workflow must use server nonce/signature authentication and server-side authorization before touching any privileged operation.
The backend-dependent capabilities are unavailable unless a deployed celoht-backend URL is configured. Authentication, KYC/application workflows, indexed education progress, reforestation evidence, governance feeds, and user-specific application data must come from that backend; the UI must not infer them from local storage or transaction submission.
When NEXT_PUBLIC_BACKEND_URL is configured, the header exposes the backend's nonce/signature wallet sign-in flow. Authenticated backend requests use the HttpOnly session cookie issued by /api/v1/auth/verify; no service-role secret is sent to the browser. Backend-dependent features remain unavailable when the URL is unset or the backend health check is failing.