diff --git a/frontend/public/assets/resources/coding-agents-background.png b/frontend/public/assets/resources/coding-agents-background.png new file mode 100644 index 00000000..91597d9e Binary files /dev/null and b/frontend/public/assets/resources/coding-agents-background.png differ diff --git a/frontend/src/components/portal/BuilderResourcesPromo.svelte b/frontend/src/components/portal/BuilderResourcesPromo.svelte new file mode 100644 index 00000000..2910cf91 --- /dev/null +++ b/frontend/src/components/portal/BuilderResourcesPromo.svelte @@ -0,0 +1,40 @@ + + +
+
+
+
+ + + + +
+ +
+
+

Builder Resources

+ Agent-first +
+

+ Skills, starters, GenTV sessions, network links, tools, and raw docs for building GenLayer projects with coding agents. +

+
+ {#each ['Skills', 'Open-source starters', 'GenTV', 'Tools'] as item} + {item} + {/each} +
+
+
+ + +
+
diff --git a/frontend/src/components/portal/gen-tv/StreamCard.svelte b/frontend/src/components/portal/gen-tv/StreamCard.svelte index 418bec50..5aae9148 100644 --- a/frontend/src/components/portal/gen-tv/StreamCard.svelte +++ b/frontend/src/components/portal/gen-tv/StreamCard.svelte @@ -80,7 +80,7 @@ target="_blank" rel="noopener noreferrer" aria-label={`Open ${stream.title}${dateTime ? `, ${dateTime}` : ''}`} - class="group w-full rounded-[8px] overflow-hidden relative cursor-pointer bg-[#111] block shadow-sm ring-1 ring-black/5 transition duration-300 hover:-translate-y-0.5 hover:shadow-xl focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-black" + class="stream-card group w-full rounded-[8px] overflow-hidden relative cursor-pointer bg-[#111] block shadow-sm ring-1 ring-black/5 transition duration-300 hover:-translate-y-0.5 hover:shadow-xl focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-black" >
@@ -118,37 +118,37 @@
-
-

+
+

{stream.title}

{#if dateTime} -

+

{dateTime}

{/if}
-
-
+
+
-

+

{stream.title}

{#if dateTime} -

+

{dateTime}{duration ? ` · ${duration}` : ''}

{/if}
{#if description} -

+

{description}

{/if} -
+
{categoryLabel} {#if host} · @@ -159,3 +159,73 @@
+ + diff --git a/frontend/src/data/resources.js b/frontend/src/data/resources.js index f210a8b7..ed0bd028 100644 --- a/frontend/src/data/resources.js +++ b/frontend/src/data/resources.js @@ -1,112 +1,274 @@ -// Resources page data — single source of truth (builder-focused) -// Edit this file to update content across the Resources page +// Builder Resources content. Keep this file as the curated inventory for the +// Resources page; dynamic Gen TV stream details are resolved by slug in the route. export const pageHeader = { title: 'Builder Resources', - subtitle: 'Everything you need to build on GenLayer.', + subtitle: 'Agent-first resources for building GenLayer projects with coding assistants.', }; export const communityLinks = [ - { label: 'Discord', url: 'https://discord.gg/8Jm4v89VAu', color: '#5865F2' }, - { label: 'Telegram', url: 'https://t.me/genlayer', color: '#26A5E4' }, - { label: 'X', url: 'https://x.com/GenLayer', color: '#000000' }, - { label: 'YouTube', url: 'https://www.youtube.com/@GenLayer', color: '#FF0000' }, + { label: 'Telegram', url: 'https://t.me/genlayer', icon: 'telegram', color: '#26A5E4' }, + { label: 'Discord', url: 'https://discord.gg/8Jm4v89VAu', icon: 'discord', color: '#5865F2' }, + { label: 'X', url: 'https://x.com/GenLayer', icon: 'x', color: '#111111' }, ]; -export const sdks = [ - { label: 'JavaScript SDK', url: 'https://www.npmjs.com/package/genlayer-js', icon: 'js' }, - { label: 'Python SDK', url: 'https://pypi.org/project/genlayer-py/', icon: 'python' }, - { label: 'GenLayer CLI', url: 'https://docs.genlayer.com/developers/intelligent-contracts/tools/genlayer-cli', icon: 'cli' }, -]; +export const agentResources = { + title: 'GenLayer Skills for coding agents', + url: 'https://skills.genlayer.com/', + description: + 'The primary entry point for AI coding agents. Skills package the GenLayer context, docs, API references, linting, testing, and deployment workflows an agent needs to build correctly.', + highlights: [ + 'Task playbooks for writing, testing, linting, and deploying contracts', + 'Prompt-ready docs and API context packaged for agent workflows', + 'Project patterns that steer agents toward existing examples first', + 'Quality gates for iterating without drifting from GenLayer conventions', + ], + prompt: `You are a coding agent implementing a GenLayer project. Treat GenLayer as a blockchain/protocol for trustless adjudication, not as a synonym for Intelligent Contracts. Intelligent Contracts are one of GenLayer's core products: Python contracts executed in GenVM that can use LLMs, live web/API data, and unstructured inputs, then settle outcomes on-chain through GenLayer's AI-validator consensus. -export const documentation = [ - { label: 'Developer Documentation', url: 'https://docs.genlayer.com/developers', description: 'Full reference for Intelligent Contracts, SDKs, and developer tools', icon: 'docs' }, - { label: 'Equivalence Principle', url: 'https://docs.genlayer.com/developers/intelligent-contracts/equivalence-principle', description: 'How non-deterministic operations reach consensus across validators', icon: 'eq' }, - { label: 'Python SDK API Reference', url: 'https://sdk.genlayer.com/main/api/index.html', description: 'Complete API reference for the Python SDK', icon: 'api' }, -]; +GenLayer context: +- GenLayer uses decentralized AI-validator consensus to resolve transactions that require judgment, not just deterministic code execution. +- Its core consensus model is Optimistic Democracy: a leader proposes a result, independent validators evaluate it, accepted results enter an appeal/finality process, and finalized outcomes become permanent. +- GenLayer operates with two integrated layers: GenLayer Chain, an EVM-compatible L2 that handles accounts, balances, and Ethereum-style operations, and GenVM, the execution environment for Intelligent Contracts. +- Intelligent Contracts are written in Python, extend gl.Contract, run in GenVM, and can process natural language, fetch live web data, analyze unstructured content, and use images or other evidence through LLM calls. +- Use GenLayer for intelligent oracles, web-aware agents, prediction and resolution markets, reputation or moderation systems, AI-assisted governance, data-driven DeFi, and workflows where validators must agree on meaning rather than exact bytes. +- Do not model GenLayer as a normal deterministic EVM chain. Design explicit validation and equivalence rules for every LLM, web, image, or other non-deterministic result. -export const boilerplates = [ - { label: 'Project Boilerplate', url: 'https://github.com/genlayerlabs/genlayer-project-boilerplate', description: 'Starter template — clone, deploy a contract, and connect a frontend' }, - { label: 'Bridge Boilerplate', url: 'https://github.com/genlayer-foundation/genlayer-studio-bridge-boilerplate', description: 'Bridge integration starter for cross-chain transfers' }, - { label: 'Prediction Market Kit', url: 'https://github.com/courtofinternet/pm-kit', description: 'Full prediction market template powered by AI consensus' }, -]; +Use official GenLayer agent context first: +- Skills site: https://skills.genlayer.com/ +- For Claude Code, install: /plugin marketplace add genlayerlabs/skills +- Then install the development plugin: /plugin install genlayer-dev@genlayerlabs +- Use genlayernode only when the task is validator-node operation, not normal app or contract development. -export const tools = [ - { label: 'GenLayer Studio', url: 'https://studio.genlayer.com', description: 'Browser IDE for writing, testing, and deploying Intelligent Contracts' }, - { label: 'Testnet Faucet', url: 'https://testnet-faucet.genlayer.foundation/', description: 'Claim 100 GEN tokens per day on Asimov or Bradbury testnets' }, - { label: 'Asimov Explorer', url: 'https://explorer-asimov.genlayer.com', description: 'Browse transactions and contracts on testnet Asimov' }, - { label: 'Bradbury Explorer', url: 'https://explorer-bradbury.genlayer.com', description: 'Browse transactions and contracts on testnet Bradbury' }, -]; +Available GenLayer Skills and when to use them: +- write-contract: use before and during Intelligent Contract implementation. It covers storage rules, runner dependencies, equivalence-principle choice, validator patterns, LLM resilience, web access, cross-contract calls, and anti-patterns. +- genvm-lint: run after every contract change. Use genvm-lint check contracts/.py --json and fix errors before testing or deploying. +- direct-tests: use for fast in-memory unit tests of state transitions, access control, validation, and mocked web or LLM calls. Run with pytest tests/direct/ -v. +- integration-tests: use after direct tests pass when consensus, real web/LLM calls, Studio, GLSim, StudioNet, or Bradbury behavior matters. Run with gltest tests/integration/ -v -s. +- genlayer-cli: use for networks, accounts, deployment, calls, writes, schemas, receipts, traces, and debugging. + +Add MCP context when the client supports MCP: +- GenLayer Docs MCP: claude mcp add genlayer-docs --transport sse https://docs-mcp.genlayer.com/sse +- GenLayer MCP: claude mcp add genlayer npx -- -y genlayer-mcp +- Use docs MCP to verify APIs, examples, SDK methods, and current network instructions before writing code. If MCP is unavailable, use https://docs.genlayer.com/full-documentation.txt and https://sdk.genlayer.com/main/_static/ai/api.txt. + +Package and tool map: +- CLI and local environment: npm install -g genlayer +- Contract linting: pip install genvm-linter +- Contract tests: pip install genlayer-test, or pip install genlayer-test[sim] when using GLSim +- Frontend or TypeScript app integration: npm install genlayer-js +- Python backend, scripts, or app integration: use genlayer-py and verify the exact API in the SDK reference before coding +- VS Code-compatible editor support: https://marketplace.visualstudio.com/items?itemName=genlayer-labs.genlayer -export const aiResources = { - links: [ - { label: 'Python SDK API (LLM-friendly)', url: 'https://sdk.genlayer.com/main/_static/ai/api.txt', description: 'Plain-text API reference optimized for LLM consumption' }, - { label: 'Claude Code Skills', url: 'https://skills.genlayer.com', description: 'AI skills for writing, linting, testing, and deploying contracts' }, +Build workflow: +1. Clarify whether the task is contract-only, contract plus frontend, backend integration, deployment, or validator-node operation. +2. If creating a project, prefer established starters before inventing structure: + - GenLayer Gym for web-access sources, benchmarks, and evaluation patterns: https://gym.genlayer.foundation + - Intelligent Oracle for oracle-style patterns: https://intelligentoracle.com + - Project boilerplate: https://github.com/genlayerlabs/genlayer-project-boilerplate +3. For contracts, use Python with a pinned GenVM Depends header. Do not use unpinned latest or test runner aliases. +4. Choose the equivalence strategy before writing non-deterministic logic: + - Use strict_eq only when validators can reproduce exactly the same normalized output. + - Use custom leader and validator functions for LLM calls, changing web pages, fuzzy scoring, external APIs with unstable fields, and production logic. + - Mock web and LLM calls in direct tests; use integration tests for full consensus. +5. Use GenLayer storage types for persisted state. Do not store raw Python dict or list as contract storage. Use TreeMap, DynArray, dataclasses with allow_storage, and sized integers for money. +6. Handle LLM output defensively. Request JSON, validate types, handle aliases, sanitize malformed JSON, and classify errors with deterministic prefixes such as EXPECTED, EXTERNAL, TRANSIENT, and LLM_ERROR. +7. Run quality gates in order: + - genvm-lint check contracts/.py --json + - pytest tests/direct/ -v + - gltest tests/integration/ -v -s when consensus, deployment, or real network behavior matters + - genlayer deploy, genlayer schema, genlayer call, genlayer write, and genlayer receipt for deploy/debug loops + +Network and deployment rules: +- Use genlayer network set for built-in networks instead of overriding RPC manually. +- StudioNet is gasless; 0 GEN is expected and okay. +- Bradbury and Asimov testnets require funded accounts. Use https://testnet-faucet.genlayer.foundation/ for testnet GEN. Faucet claiming is browser-based and cannot be fully automated. +- Debug failed transactions with genlayer receipt --stdout --stderr, then genlayer schema
, genlayer code
, and read calls before changing code. + +Application integration gap to compensate for: +- The current genlayer-dev skills are strong for contract writing, linting, tests, CLI, and deployment, but they do not fully define frontend/backend integration with genlayer-js or genlayer-py. +- When building a dApp, explicitly consult GenLayerJS or GenLayerPY docs via docs MCP or the SDK reference. Do not invent client method names. +- Generate or inspect the deployed contract schema before wiring UI/backend calls. +- In TypeScript/frontends, use genlayer-js for createClient, chains, readContract, writeContract, transaction status, receipts, and event/status UX. Keep addresses, chain config, and deployed schemas in typed config. +- In Python backends/scripts, use genlayer-py only after verifying the current API surface in the SDK reference. +- Always distinguish read/view calls from write/transaction calls in the UI. Show submitted, pending, finalized, and failed states where relevant. + +Deliverable expectations: +- Make the smallest complete implementation that passes lint and tests. +- Prefer direct tests for fast feedback and integration tests for consensus confidence. +- If a tool, network, account, API key, faucet token, Docker environment, or LLM provider is unavailable, say exactly what is blocked and provide the next command or manual step. +- Never leave GenLayer-specific APIs guessed. Verify them in Skills, docs MCP, full docs, or SDK reference before finalizing.`, + includedReferences: [ + { + label: 'Full documentation', + url: 'https://docs.genlayer.com/full-documentation.txt', + description: 'Raw GenLayer docs for agents that need complete source context.', + }, + { + label: 'API documentation', + url: 'https://sdk.genlayer.com/main/_static/ai/api.txt', + description: 'Raw SDK reference for exact GenVM and API details.', + }, ], - metaprompt: `You are a GenLayer developer assistant. GenLayer is an L2 blockchain (ZKSync-based rollup) where Intelligent Contracts — Python classes inheriting from gl.Contract — can natively call LLMs and access the web. - -## What are Intelligent Contracts? -Intelligent Contracts are Python smart contracts that go beyond traditional deterministic logic. They can call LLMs, fetch web data, and process unstructured information — all while maintaining blockchain consensus. Contracts inherit from gl.Contract, use @gl.public.write for state-changing methods and @gl.public.view for read-only methods. Storage uses TreeMap (key-value), DynArray (dynamic arrays), and u256 (integers). Raise UserError for user-facing failures. - -## The Equivalence Principle -The core consensus mechanism for non-deterministic operations. A leader node executes an operation and proposes a result. Validators independently verify whether that result is acceptable — majority acceptance means consensus. -- gl.eq_principle.strict_eq — exact match (for deterministic APIs like RPCs) -- gl.eq_principle.prompt_comparative — LLM judges if two outputs are equivalent -- gl.eq_principle.prompt_non_comparative — LLM validates leader result directly -- gl.vm.run_nondet_unsafe — custom validator logic (most common in real contracts) -Always extract structured data before comparing. Raw web/LLM output varies across nodes. - -## Development Tools -- GenLayer Studio (https://studio.genlayer.com): Browser IDE for writing, testing, and deploying contracts -- GenLayer CLI: Terminal tool for scaffolding, deploying, and interacting with contracts -- Faucet (https://testnet-faucet.genlayer.foundation/): Get 100 GEN tokens/day on testnets - -## Active Testnets -- Asimov: Explorer at https://explorer-asimov.genlayer.com -- Bradbury: Explorer at https://explorer-bradbury.genlayer.com - -## Key References -- Documentation: https://docs.genlayer.com/developers -- Equivalence Principle: https://docs.genlayer.com/developers/intelligent-contracts/equivalence-principle -- Python SDK full API: https://sdk.genlayer.com/main/_static/ai/api.txt -- JS SDK: https://www.npmjs.com/package/genlayer-js -- Python SDK: https://pypi.org/project/genlayer-py/ -- GenLayer CLI: https://docs.genlayer.com/developers/intelligent-contracts/tools/genlayer-cli -- Project Boilerplate: https://github.com/genlayerlabs/genlayer-project-boilerplate -- Bridge Boilerplate: https://github.com/genlayer-foundation/genlayer-studio-bridge-boilerplate -- Prediction Market Kit: https://github.com/courtofinternet/pm-kit -- Claude Code Skills: https://skills.genlayer.com (write, lint, test, deploy contracts via AI)`, }; -export const tracksAndIdeas = [ +export const codingStreams = [ + { + slug: 'from-zero-to-genlayer', + title: 'From Zero to GenLayer', + description: 'The key onboarding session for builders getting started with GenLayer.', + url: 'https://x.com/i/broadcasts/1jxXgeaLLgRJZ', + image_url: 'https://res.cloudinary.com/dfqmoeawa/image/upload/gen_tv/from-zero-to-genlayer.png', + starts_at: '2026-03-19T11:00:00.000Z', + ends_at: '2026-03-19T11:30:00.000Z', + }, + { + slug: 'vibecoding-ep2', + title: 'Vibecoding: Our First Intelligent Contract', + description: 'Creating the first Intelligent Contract, testing it in Studio, and fixing bugs.', + url: 'https://x.com/i/broadcasts/1eaKbjQdYgrKX', + image_url: 'https://res.cloudinary.com/dfqmoeawa/image/upload/gen_tv/vibecoding-ep2.png', + starts_at: '2025-12-30T14:00:00.000Z', + ends_at: '2025-12-30T14:30:00.000Z', + }, + { + slug: 'vibecoding-bradbury-gym', + title: 'Vibecoding: Bradbury Gym', + description: 'Benchmark-oriented GenLayer development and the reference direction for GenLayer Gym.', + url: 'https://x.com/i/broadcasts/1aKbdbyZdjqJX', + image_url: 'https://res.cloudinary.com/dfqmoeawa/image/upload/gen_tv/vibecoding-bradbury-gym.png', + starts_at: '2026-04-01T16:30:00.000Z', + ends_at: '2026-04-01T17:00:00.000Z', + }, + { + slug: 'gentalks-ep8', + title: 'GenTalks: Skills Review', + description: 'A GenTalks session covering Bradbury context and skills.genlayer.com.', + url: 'https://x.com/i/broadcasts/1wxWjaZPpYnJQ', + image_url: 'https://res.cloudinary.com/dfqmoeawa/image/upload/gen_tv/gentalks-ep8.png', + starts_at: '2026-03-18T14:30:00.000Z', + ends_at: '2026-03-18T15:00:00.000Z', + }, +]; + +export const starterProjects = [ + { + label: 'GenLayer Gym', + category: 'Primary reference', + url: 'https://gym.genlayer.foundation', + codeUrl: '', + description: 'Reference project for web-access sources, benchmarks, and evaluation patterns.', + featured: true, + }, + { + label: 'Intelligent Oracle', + category: 'Featured example', + url: 'https://intelligentoracle.com', + codeUrl: '', + description: 'Reference oracle project for agents building with web access and consensus checks.', + }, + { + label: 'Project Boilerplate', + category: 'Starter', + url: 'https://github.com/genlayerlabs/genlayer-project-boilerplate', + codeUrl: 'https://github.com/genlayerlabs/genlayer-project-boilerplate', + description: 'Cloneable project structure for a contract plus frontend workflow.', + }, + { + label: 'Bridge Boilerplate', + category: 'Starter', + url: 'https://github.com/genlayer-foundation/genlayer-studio-bridge-boilerplate', + codeUrl: 'https://github.com/genlayer-foundation/genlayer-studio-bridge-boilerplate', + description: 'Cross-chain bridge starter for testing integrations with GenLayer Studio.', + }, + { + label: 'Prediction Market Kit', + category: 'Open source kit', + url: 'https://github.com/courtofinternet/pm-kit', + codeUrl: 'https://github.com/courtofinternet/pm-kit', + description: 'Prediction-market template for AI consensus and outcome resolution flows.', + }, +]; + +export const buildTools = [ + { + label: 'GenLayer Studio', + url: 'https://studio.genlayer.com', + description: 'Browser IDE for writing, testing, and deploying Intelligent Contracts.', + icon: 'studio', + }, + { + label: 'GenLayer CLI', + url: 'https://docs.genlayer.com/developers/intelligent-contracts/tools/genlayer-cli', + description: 'Scaffold, deploy, and interact with contracts from the terminal.', + icon: 'cli', + }, + { + label: 'JavaScript SDK', + url: 'https://docs.genlayer.com/developers/decentralized-applications/genlayer-js', + description: 'Install with npm install genlayer-js.', + icon: 'js', + }, { - title: 'Agentic Economy Infrastructure', - description: 'Build the infrastructure for AI agents to interact, transact, and coordinate autonomously.', - color: '#ee8521', + label: 'Python SDK', + url: 'https://docs.genlayer.com/api-references/genlayer-py', + description: 'Install with pip install genlayer-py.', + icon: 'python', }, { - title: 'AI Governance', - description: 'AI-driven decisions and coordination between humans and autonomous agents.', - color: '#387de8', + label: 'GenLayer Test', + url: 'https://docs.genlayer.com/api-references/genlayer-test', + description: 'Install with pip install genlayer-test.', + icon: 'test', }, { - title: 'Prediction Markets & P2P Betting', - description: 'Bet, predict, and trade on future outcomes with on-chain markets powered by AI consensus.', - color: '#7f52e1', + label: 'VS Code Extension', + url: 'https://marketplace.visualstudio.com/items?itemName=genlayer-labs.genlayer', + description: 'Official VS Code extension for GenLayer intelligent contract development.', + icon: 'vscode', }, +]; + +export const networkResources = [ + { + label: 'Testnet Faucet', + url: 'https://testnet-faucet.genlayer.foundation/', + description: 'Claim Bradbury testnet GEN to start building.', + kind: 'faucet', + }, + { + label: 'Bradbury Explorer', + url: 'https://explorer-bradbury.genlayer.com/', + description: 'Browse Bradbury testnet activity.', + kind: 'explorer', + }, + { + label: 'Asimov Explorer', + url: 'https://explorer-asimov.genlayer.com/', + description: 'Browse Asimov testnet activity.', + kind: 'explorer', + }, + { + label: 'Studio Explorer', + url: 'https://explorer-studio.genlayer.com/', + description: 'Inspect Studio network activity.', + kind: 'explorer', + }, +]; + +export const deepDiveReferences = [ { - title: 'AI Gaming', - description: 'Multiplayer games exploring coordination, social dynamics, and consensus mechanics.', - color: '#c94058', + label: 'Developer Documentation', + url: 'https://docs.genlayer.com/developers', + description: 'Main documentation for builders who want to read beyond the skills.', }, { - title: 'Future of Work', - description: 'AI-verified deliverables, reputation tracking, and outcome-based payment systems.', - color: '#3eb359', + label: 'Equivalence Principle', + url: 'https://docs.genlayer.com/developers/intelligent-contracts/equivalence-principle', + description: 'Core consensus model for non-deterministic operations.', }, { - title: 'Onchain Justice', - description: 'Decentralized arbitration with AI-evaluated evidence and fair dispute resolution.', - color: '#d6721e', + label: 'GenVM SDK', + url: 'https://sdk.genlayer.com/main/', + description: 'Generated SDK reference for deep API inspection.', }, ]; diff --git a/frontend/src/routes/Dashboard.svelte b/frontend/src/routes/Dashboard.svelte index 7cd0b3a8..d8c99e77 100644 --- a/frontend/src/routes/Dashboard.svelte +++ b/frontend/src/routes/Dashboard.svelte @@ -12,6 +12,7 @@ import PortalHighlights from '../components/portal/PortalHighlights.svelte'; import CTASection from '../components/ui/CTASection.svelte'; import Podium from '../components/ui/Podium.svelte'; + import BuilderResourcesPromo from '../components/portal/BuilderResourcesPromo.svelte'; // Portal components (self-fetching) import HeroBanner from '../components/portal/HeroBanner.svelte'; @@ -137,6 +138,10 @@ + {#if isBuilder} + + {/if} +
+ diff --git a/frontend/src/routes/Resources.svelte b/frontend/src/routes/Resources.svelte index 9a47cfa7..d8d64236 100644 --- a/frontend/src/routes/Resources.svelte +++ b/frontend/src/routes/Resources.svelte @@ -1,16 +1,92 @@ -
- - -
-
-

- {pageHeader.title} -

-

- {pageHeader.subtitle} -

-
- +
+
+
+
- - +
+
+
+

+ {pageHeader.title} +

+
- -
- -
-
-
- - +
+
+ +
+
+
+
+ + Primary builder resource + +
+

+ {agentResources.title} +

+

+ {agentResources.description} +

+
-

Documentation

-
-
- {#each documentation as doc} - -
- {#if doc.icon === 'docs'} - - {:else if doc.icon === 'eq'} - - {:else} - - {/if} -
-
- {doc.label} - {doc.description} -
- + +
+ +
+ +
+ {#each agentResources.includedReferences as reference} + + + {reference.label} + {reference.description} + + + + {/each} +
+
- -
- + - -
-
-
- - +
+
+
+

Open-Source Starters

+

Scrollable project references with visible code paths and room for more examples.

+
+
+ +
-

Templates & Boilerplates

-
- -
-
-
- - +
+
+
+

Watch First

+

GenTV coding content for builders who need a guided entry point.

+
+
+ +
+ + +
-

AI-Assisted Development

-
- -
-
-

GenLayer Context Prompt

-

Copy a comprehensive GenLayer context prompt to use with any LLM — covers Intelligent Contracts, the Equivalence Principle, SDKs, testnets, and all key references.

+
+ {#each codingStreamCards as stream (stream.id)} +
+
- + {/each} +
+
+ +
+
+
+
+

Tools

+
+ {#each buildTools.filter((tool) => ['cli', 'python', 'js'].includes(tool.icon)) as tool} + + {#if tool.icon === 'js'} + + {:else if tool.icon === 'python'} + + {:else} + + {/if} + {tool.label} + + {/each} +
+
+

SDKs as quick-launch icons, with Studio and local workflow tools below.

- -
- {#each aiResources.links as link} - -
- {#if link.label.includes('API')} - - {:else} - - {/if} -
-
- {link.label} - {link.description} -
- -
- {/each} +
+
+ {#each buildTools.filter((tool) => !['cli', 'python', 'js'].includes(tool.icon)) as tool} + {#if tool.url} + + + + {#if tool.icon === 'test'} + + {:else} + + {/if} + + + {tool.label} + {tool.description} + + + + + {:else} +
+ + + + + + {tool.label} + {tool.description} + + + Soon +
+ {/if} + {/each} +
-
- -
-
-
- - +
+
+

Deep-Dive

+

Direct references for advanced inspection.

-

Tracks & Ideas

-
-
- {#each tracksAndIdeas as track} -
-
-
- {track.title} -
- {track.description} -
- {/each} +
+ {#each deepDiveReferences as reference} + + + {reference.label} + {reference.description} + + + + {/each} +
+
-
diff --git a/package-lock.json b/package-lock.json index d4fb4052..af4961ca 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "andorra", + "name": "doha-v2", "lockfileVersion": 3, "requires": true, "packages": {