Documentation
Product and integration docs.
Overview
GigPad helps people discover open-source projects, create community token launches connected to repositories, and track development alongside on-chain activity. The product journey: discover a repository → inspect it → configure a supported launch → review costs and permissions → sign with a wallet → track the confirmed deployment.
Three things are kept visibly distinct everywhere: a GitHub repository (a search result, nothing more), a project registered on GigPad (a page someone created for a repository), and a confirmed token launch (a receipt the server verified). A repository link never implies endorsement by its maintainers, and a token never implies ownership of the repository, its code, equity or revenue.
Routes: / landing · /explore discovery and registered launches · /launch wizard · /projects/[id] project pages · /dashboard drafts, launches, pending transactions, verifications · /docs this page. Public browsing never needs a wallet.
Repository discovery
Search goes through GET /api/github/search, which calls GitHub’s /search/repositories server-side with the free text plus the real qualifiers language:, archived:true|false and is:public, and GitHub’s own sort keys (best match, stars, forks, updated, help-wanted-issues). Results are cached for 90 seconds per query and page. Import (POST /api/github/import) accepts only github.com/owner/repository locations; it is not a URL fetcher.
Shown fields are the real ones: name and owner, description, stars (people who starred), forks, primary language, license, archived status, last push time and the GitHub link. A recent push shows activity, not quality. Rate limits: without GITHUB_SERVER_TOKEN GitHub allows 10 searches per minute and 60 reads per hour per server address; the interface reports the limit and its reset time instead of showing stale or empty results as if they were real.
README content is never rendered as raw HTML. Project descriptions are Markdown rendered server-side through an allow-list sanitiser (no images, scripts, styles or iframes).
Maintainer verification
A project is maintainer-verified only when three independent facts held at the same time: the person signed in through GitHub OAuth (scope read:user); GitHub’s REST API reported admin or maintain for that account on the repository’s immutable id (the permissions object of /repositories/:id, or the collaborator permission endpoint); and the wallet proved control of its address by signing a domain-bound, single-use, ten-minute EIP-4361 challenge. The record stores the repository id, the verifying GitHub account, the wallet, the method and the time. It is re-checked with GitHub before sensitive changes (relationship edits and immediately before signing a launch); a permission that dropped revokes the record and demotes the project to independent.
A matching username, a repository URL or a wallet signature alone is never accepted as proof. Verification proves a relationship to the repository at that time. It does not prove contract safety, project quality or investment merit.
Anyone else may register an independent community launch. It is labelled “Independent · not maintainer-affiliated” on the explore directory, the project page, the wizard and the token record.
Launch flow
- Repository. Import or pick a public repository, see its real metadata and the verified maintainers, choose the relationship, create a private draft (server-side;
/api/projects). - Token details. Name (≤ 32 bytes), symbol (A–Z0–9, ≤ 10), description (≤ 280 characters), artwork as an https image link, optional links. The factory itself only requires a non-empty name and symbol; the limits keep on-chain metadata renderable. Drafts auto-save to the database.
- Network and pair. Only Robinhood Chain is launch-available (see Networks). Pair assets come from the verified registry (68 assets with addresses and decimals). Launch configuration (fixes the supply), creator tax, buyback flag and an optional opening buy.
- Review. Network, connected wallet, provider and destination contract, token parameters, pair, required deposit (none), launch fee, GigPad fee (none), estimated gas (separate, from a simulation of the exact call), allowance requirement, recipients, creator privileges, verified liquidity settings and the repository relationship. Terms are read live and pinned by digest.
- Sign.
POST /api/projects/:id/preparere-checks owner, linked wallet, draft and GitHub permission, then the lifecycle runs: an exact ERC-20 allowance for the router if an opening buy in an ERC-20 pair asset was chosen, thenlaunchToken(factory) orlaunchAndBuy(router). Each step re-reads balances and terms, simulates, and only then opens the wallet. Handled outcomes: rejected signature, wrong network (switch requested), insufficient balance, failed simulation (decoded revert), pending, reverted, replaced or cancelled, confirmed. - Result. The browser parses the receipt, but the server reads it again from its own RPC: the factory’s
TokenLaunchedevent must be present, the sender must be the project’s creator wallet, the factory must recognise the token and curve, and the on-chain name, symbol and pair must match the draft. Only then is the project “launched”, with the token and pool addresses taken from the event.
Pending transactions survive refreshes: the hash is stored when the wallet returns it, the dashboard can ask the server to re-check, and the scheduled reconciliation job keeps polling. Receipt ingestion is idempotent per (chain id, transaction hash, log index).
Costs and liquidity
The protocol launch fee is read from the factory at review time and sent with the call. GigPad charges nothing and holds no funds. Gas is estimated separately. No liquidity deposit is required: the curve prices against a virtual reserve and the entire supply is minted to the curve. When the curve has collected the graduation threshold, the protocol moves the reserves into a Uniswap v4 pool and mints the full-range position to the launch locker, whose verified source has no function to withdraw or transfer a position. Project pages show what the locker and the PositionManager report rather than a promise.
Pairing with an asset only sets what the token is priced and traded in. A token paired with a Stock Token is not a share, is not backed by shares and gives no ownership, dividend, voting or redemption rights.
Pons V2 integration
Addresses are taken from the protocol’s documentation and re-derived by pnpm verify:config against Sourcify, the factory’s own on-chain pointers and the live chain (config verified 30/09/2026). The runtime re-checks the wiring on every review and before every signature; a mismatch disables launching with the exact reason. ABIs are the verified compiler output (curve and token ABIs compiled from the factory’s verified standard-JSON input and cross-checked against an exact-match token instance).
| Contract | Address | Source | Called by wallets |
|---|---|---|---|
| Launch factory PonsV2LaunchFactory | 0x7eD598BcEf8bd9Edd8C97A195C6d13f40801EC7e | Source verified (exact match) | yes |
| Launch-and-buy router PonsV2LaunchAndBuy | 0xe33E9E479dF8802cb0866d5d05258bEc4cF62948 | Source verified (exact match) | yes |
| Fee escrow PonsV2FeeEscrow | 0xd3AFEB2a57f70eF218Aa82451c51B2fb0416Ac9e | Source verified (bytecode match) | no |
| Launch deployer PonsV2LaunchDeployer | 0x3711ceA4feaDE896C913C68F01Eda97Cb06D1A42 | Source verified (exact match) | no |
| Pool hook PonsV2MemeHook | 0xE5e702641Ea86F4ae6cC3cDaeD2B886f976Be044 | Source verified (bytecode match) | no |
| Launch locker RobinFunFiV2LaunchLocker | 0x267444D099b10fB5Ed7c3Cc7B7c767AdcA574952 | Source verified (bytecode match) | no |
| Buyback vault PonsV2BuybackVault | 0x42df2a798f82289E177311362e8f5ccC45c1219c | Source verified (bytecode match) | no |
| Graduation executor PonsV2GraduationExecutor | 0xC7819B64A1dAECD7eC19856d026cb14EfBd89046 | Source verified (bytecode match) | no |
| Graduation guard — | 0xf5695117b99B6f6401e67d4195BD653628176C6C | No source record | no |
Provider capabilities: custom supply no (launch configurations fix it) · liquidity deposit no · opening buy yes · ERC-20 pair approval exact allowance to the router · automatic pool on graduation yes (Uniswap v4, position to the locker) · transactions per launch 1–2. Immutable after launch: name, symbol, logo, description, socials. Events used: factory TokenLaunched, curve CurveBuy/CurveSell, factory PairTokenApprovalUpdated (registry derivation). Post-graduation venue: Uniswap v4 (PoolManager 0x8366a39CC670B4001A1121B8F6A443A643e40951, addresses from Uniswap’s deployments feed).
Pair asset registry: 1 native, 1 stablecoin, 55 stock token, 8 etf token, 3 community coin; 4 protocol-approved tokens stay unlisted because no issuer source confirms them. Launches made through GigPad carry the CREATE2 salt prefix 0x47494750414401 (“GIGPAD” + version) in their calldata, which third parties can check.
GigPad is an independent interface to these third-party contracts. It is not operated by Pons; copy says “runs on the Pons V2 contracts”, never “by Pons”.
Networks
| Network | Chain id | Launches | Why |
|---|---|---|---|
| Robinhood Chain | 4663 | available | Pons V2 factory deployed and verified; wiring re-checked live. |
| Robinhood Testnet | 46630 | unavailable | Pons V2 has no deployment on chain 46630 (the factory address holds no code there, re-checked by pnpm verify:config). |
Confirmation policy: a launch is called confirmed after the configured number of blocks on top of a successful receipt (10 on this deployment; 10 on mainnet by default). Robinhood Chain’s later finality stages (posted to Ethereum, Ethereum finality) are read from the RPC’s safe and finalized tags and shown on the status endpoint separately.
$GIGPAD token
$GIGPAD is the token GigPad will publish on Robinhood Chain (chain 4663). Contract address: Soon.
The address is published on this site first and announced on @gigpadhood. Until it appears here, no address presented anywhere as $GIGPAD is GigPad’s; after that, only the address shown here is. It comes from the deployment’s configuration (NEXT_PUBLIC_GIGPAD_TOKEN_ADDRESS, set with pnpm token:set, which checks the Pons V2 factory record for the address first), is never typed into a page, and the landing strip reads the factory’s record for it live, so a published address without such a record is visibly flagged.
Holding $GIGPAD is not ownership of GigPad, of any repository, code, equity or revenue, and it changes nothing about launches: GigPad charges no platform fee with or without it.
Data sources
- Repository facts: GitHub REST API (server-side; optional server token). Activity (recent commits, latest release) is refreshed every 15 minutes and shown with its fetch time; rate limits keep the previous data visible and say so.
- Chain facts: Robinhood Chain JSON-RPC (server client, and a read-only same-origin relay for browsers that forwards query methods only). Receipts, events and contract reads; nothing is taken from the browser’s claims.
- Market facts on project pages: curve reserves and spot price, CurveBuy/CurveSell volume since launch (bounded scan), token total supply, Uniswap v4 pool slot0 and liquidity, locker records. Each figure carries its source and the block it was read at. Holder counts are not available from the RPC; the browser may ask the explorer and labels the answer.
- Verification records: Sourcify v2 API (chain 4663).
- “Launched on the protocol, any interface” (landing and Explore): the factory’s TokenLaunched and PoolGraduated events over the last 30,000 blocks, with each token’s on-chain name, symbol, pair asset and launch time, cached 30 seconds and shown with its block range and read time. These are not GigPad projects, have no repository relationship and are not curated; “Prepared on GigPad” appears only when the creation calldata carries GigPad’s salt marker.
- “On GitHub right now” (landing): a live GitHub search for public repositories about Robinhood Chain, most recently pushed first, cached ten minutes, with their real (usually empty) GigPad associations. Listing is not an endorsement and never implies a token.
Unavailable data is shown as unavailable. There is no sample data path in production.
Operations
Environment: see .env.example. Required in production: DATABASE_URL (PostgreSQL), SESSION_SECRET, TOKEN_ENCRYPTION_KEY, NEXT_PUBLIC_SITE_URL, GitHub OAuth credentials (environment or the encrypted settings entered on /setup/github with SETUP_TOKEN), CRON_SECRET for the scheduled reconciliation. Recommended: GITHUB_SERVER_TOKEN and RPC_URL.
Background work: a durable job table processed by /api/cron/tick (Vercel Cron every 15 minutes), by pnpm worker on a server, or in-process with the embedded development database. Jobs: tx.reconcile (re-reads every open transaction of a project; settles pending, confirmed, reverted, dropped) and repo.sync (activity refresh). All handlers are idempotent.
Local development: the embedded PGlite database needs no setup; pnpm chain:fork starts an Anvil fork of mainnet with the real Pons V2 bytecode and test balances, pnpm dev:fork serves the app against it on port 20310 with the GitHub stub provider, pnpm e2e:fork runs the end-to-end check. Fork builds are isolated and labelled “local fork” in the header.
Deployment status
What this deployment can actually do right now, read live from /api/status:
Official sources
- Pons V2 documentation: https://docs.ponsfamily.com/docs/v2
- Robinhood Chain connecting (chain ids, RPC, explorer): docs.robinhood.com/chain/connecting · transaction finality: docs.robinhood.com/chain/transaction-finality · token contracts (USDG): docs.robinhood.com/chain/contracts · Stock Tokens: docs.robinhood.com/chain/stock-tokens
- Sourcify verification records (chain 4663): repo.sourcify.dev
- Uniswap deployments feed: developers.uniswap.org/deployments.json
- GitHub REST API: search repositories, repositories, collaborator permission, OAuth apps
- Registry derivation sources recorded in
config/robinhood.json: 7 entries (network, finality, protocol, pair assets, Stock Tokens, USDG, DEX).