diff --git a/.gitignore b/.gitignore index 440c823..850de7d 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,10 @@ dist/ .next/ out/ build/ +# The generic build/ rule above also matches the real Next.js route at +# apps/web/src/app/[locale]/build/ (the "/build" page) - un-ignore it. +!apps/web/src/app/\[locale\]/build/ +!apps/web/src/app/\[locale\]/build/** # ── Hardhat / Solidity ────────────────────────────────────────── contracts/artifacts/ diff --git a/apps/web/messages/en.json b/apps/web/messages/en.json index 150aced..2497895 100644 --- a/apps/web/messages/en.json +++ b/apps/web/messages/en.json @@ -15,7 +15,9 @@ "connected": "Connected", "themeLight": "Light", "themeDark": "Dark", - "blog": "Blog" + "blog": "Blog", + "ecosystem": "Ecosystem", + "build": "Build" }, "Hero": { "badge": "Live on Mainnet C-Chain · Beta", @@ -327,6 +329,8 @@ "developers": "Developers", "l1": "Compliance L1", "docs": "Docs", + "ecosystem": "Ecosystem", + "build": "Build", "legal": "Legal", "trademark": "Trademark Notice: AVALANCHE® and AVAX® are registered trademarks of Ava Labs, Inc. KUMPLY is an independent project and is not endorsed by, sponsored by, or affiliated with Ava Labs, Inc. KUMPLY is designed to operate as software infrastructure, not as a financial institution, custodian, or money transmitter — a formal legal opinion is planned before any fee is activated on mainnet.", "rights": "© 2026 KUMPLY Protocol. Open source under the Apache License 2.0." diff --git a/apps/web/messages/es.json b/apps/web/messages/es.json index 1a4eb2a..1d730bb 100644 --- a/apps/web/messages/es.json +++ b/apps/web/messages/es.json @@ -15,7 +15,9 @@ "connected": "Conectado", "themeLight": "Claro", "themeDark": "Oscuro", - "blog": "Blog" + "blog": "Blog", + "ecosystem": "Ecosistema", + "build": "Build" }, "Hero": { "badge": "En Vivo en Mainnet C-Chain · Beta", @@ -327,6 +329,8 @@ "developers": "Desarrolladores", "l1": "Compliance L1", "docs": "Documentación", + "ecosystem": "Ecosistema", + "build": "Build", "legal": "Legal", "trademark": "Aviso de Marca: AVALANCHE® y AVAX® son marcas registradas de Ava Labs, Inc. KUMPLY es un proyecto independiente y no está respaldado, patrocinado ni afiliado con Ava Labs, Inc. KUMPLY está diseñado para operar como infraestructura de software, no como institución financiera, custodio ni transmisor de dinero — una opinión legal formal está planeada antes de activar cualquier comisión en mainnet.", "rights": "© 2026 Protocolo KUMPLY. Código abierto bajo Licencia Apache 2.0." diff --git a/apps/web/public/ecosystem/0xgasless-dark-full-logo.svg b/apps/web/public/ecosystem/0xgasless-dark-full-logo.svg new file mode 100755 index 0000000..0a0af3f --- /dev/null +++ b/apps/web/public/ecosystem/0xgasless-dark-full-logo.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/web/public/ecosystem/0xgasless-light-full-logo.svg b/apps/web/public/ecosystem/0xgasless-light-full-logo.svg new file mode 100755 index 0000000..83985c5 --- /dev/null +++ b/apps/web/public/ecosystem/0xgasless-light-full-logo.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/web/src/app/[locale]/build/page.tsx b/apps/web/src/app/[locale]/build/page.tsx new file mode 100644 index 0000000..1f2c98d --- /dev/null +++ b/apps/web/src/app/[locale]/build/page.tsx @@ -0,0 +1,200 @@ +import { Link } from "@/i18n/routing"; +import { getLocale } from "next-intl/server"; + +type Idea = { + category: string; + title: string; + desc: string; + helper: string; + ecosystemLink?: boolean; +}; + +const content = { + en: { + title: "Build", + subtitle: "Software ideas builders can put on top of KUMPLY.", + note: "The app never holds user funds or keys, and never receives personal data. It only reads whether an address is verified.", + ideas: [ + { + category: "KYC", + title: "Anti-Sybil filter for airdrops and rewards", + desc: "Limit a reward to one claim per verified person, so a single person can't split it across many wallets.", + helper: "isPersonAtLeast(address, TIER.BASIC)", + }, + { + category: "KYC", + title: "One-person-one-vote DAO voting", + desc: "Gate voting power on a minimum verified level, so one verified person can't split their voice into many addresses.", + helper: "isPersonAtLeast(address, TIER.BASIC)", + }, + { + category: "ANY CATEGORY", + title: "Gas sponsorship limited to verified wallets", + desc: "The same idea as the 0xGasless pilot: a paymaster only sponsors gas for addresses that hold a valid attestation, at whatever category or tier the integration needs.", + helper: "verify() / isPersonAtLeast / isBusiness / isAgent", + ecosystemLink: true, + }, + { + category: "KYA", + title: "Marketplace where only verified AI agents can list or bid", + desc: "Gate listing and bidding on isAgent(), with payments settled directly wallet to wallet.", + helper: "isAgent(address)", + }, + { + category: "KYA", + title: "x402 payment APIs that only serve verified agents", + desc: "Check isAgent() before completing an HTTP 402 payment, so only a verified agent's wallet can pay for the response.", + helper: "isAgent(address)", + }, + { + category: "KYB", + title: "B2B invoicing or payroll restricted to verified businesses", + desc: "Check isBusiness() on both sides of a transfer, so the counterparty is a verified company, not an anonymous wallet.", + helper: "isBusiness(address)", + }, + { + category: "KYB", + title: "Avalanche L1 validators restricted to verified businesses (ACP-99)", + desc: "Gate validator registration on isBusiness(), the same check KUMPLY's ACP-99 ValidatorSetManager contract implements (the KUMPLY L1 itself is not activated yet).", + helper: "isBusiness(address)", + }, + ] as Idea[], + ecosystemLinkText: "See how this works in practice on", + statusTitle: "Where this stands", + statusBody: "Everything above runs on Avalanche Fuji testnet. Attestations used for testing are demo attestations issued directly by KUMPLY's team, not a real KYC, KYB, or KYA check. Mainnet C-Chain stays at zero attestations issued until Sumsub production is active.", + legalNote: "This is not legal advice. Each builder reviews the rules of their own jurisdiction.", + linksIntro: "Read the full integration guide", + linksDevelopers: "SDK docs", + linksDocs: "Technical docs", + }, + es: { + title: "Build", + subtitle: "Ideas de software que un builder puede construir sobre KUMPLY.", + note: "La app nunca guarda fondos ni llaves de los usuarios y nunca recibe datos personales, solo lee si una dirección está verificada.", + ideas: [ + { + category: "KYC", + title: "Filtro anti-Sybil para airdrops y recompensas", + desc: "Limita una recompensa a un reclamo por persona verificada, para que una sola persona no pueda repartirla entre muchas wallets.", + helper: "isPersonAtLeast(address, TIER.BASIC)", + }, + { + category: "KYC", + title: "Votación de una persona, un voto en una DAO", + desc: "Controla el poder de voto con un nivel mínimo verificado, para que una sola persona verificada no pueda dividir su voz en muchas direcciones.", + helper: "isPersonAtLeast(address, TIER.BASIC)", + }, + { + category: "CUALQUIER CATEGORÍA", + title: "Patrocinio de gas limitado a wallets verificadas", + desc: "La misma idea del piloto con 0xGasless: un paymaster solo patrocina gas para direcciones con una attestation válida, en la categoría o tier que la integración necesite.", + helper: "verify() / isPersonAtLeast / isBusiness / isAgent", + ecosystemLink: true, + }, + { + category: "KYA", + title: "Marketplace donde solo agentes de IA verificados pueden publicar u ofertar", + desc: "Controla publicar y ofertar con isAgent(), con pagos liquidados directamente de wallet a wallet.", + helper: "isAgent(address)", + }, + { + category: "KYA", + title: "APIs de pago x402 que solo atienden a agentes verificados", + desc: "Revisa isAgent() antes de completar un pago HTTP 402, para que solo la wallet de un agente verificado pueda pagar por la respuesta.", + helper: "isAgent(address)", + }, + { + category: "KYB", + title: "Facturación o nómina B2B restringida a empresas verificadas", + desc: "Revisa isBusiness() en ambos lados de una transferencia, para que la contraparte sea una empresa verificada, no una wallet anónima.", + helper: "isBusiness(address)", + }, + { + category: "KYB", + title: "Validadores de una L1 de Avalanche restringidos a empresas verificadas (ACP-99)", + desc: "Controla el registro de validadores con isBusiness(), la misma revisión que implementa el contrato ValidatorSetManager de ACP-99 de KUMPLY (la L1 de KUMPLY todavía no está activada).", + helper: "isBusiness(address)", + }, + ] as Idea[], + ecosystemLinkText: "Revisa cómo funciona esto en la práctica en", + statusTitle: "Dónde está esto hoy", + statusBody: "Todo lo anterior corre en la testnet Fuji de Avalanche. Las attestations usadas para pruebas son attestations de demo emitidas directamente por el equipo de KUMPLY, no una revisión real de KYC, KYB o KYA. Mainnet C-Chain se mantiene en cero attestations emitidas hasta que Sumsub producción esté activo.", + legalNote: "Esto no es asesoría legal. Cada builder revisa las reglas de su jurisdicción.", + linksIntro: "Lee la guía completa de integración", + linksDevelopers: "Documentación del SDK", + linksDocs: "Documentación técnica", + }, +}; + +export default async function BuildPage() { + const locale = await getLocale(); + const lang = locale === "es" ? "es" : "en"; + const t = content[lang]; + + return ( +
+
+

{t.title}

+

{t.subtitle}

+
+ +
+

{t.note}

+
+ +
+ {t.ideas.map((idea, i) => ( +
+ {idea.category} +

{idea.title}

+

{idea.desc}

+ {idea.helper} + {idea.ecosystemLink && ( +

+ {t.ecosystemLinkText} Ecosystem +

+ )} +
+ ))} +
+ +
+

{t.statusTitle}

+

{t.statusBody}

+
+ +

{t.legalNote}

+ +

+ {t.linksIntro} + {" · "} + {t.linksDevelopers} + {" · "} + {t.linksDocs} +

+ +