Skip to content

feat(web): Next.js 16 scaffold + landing page + wizard step 1 - #19

Open
defidough wants to merge 2 commits into
mainfrom
feat/web-scaffold
Open

feat(web): Next.js 16 scaffold + landing page + wizard step 1#19
defidough wants to merge 2 commits into
mainfrom
feat/web-scaffold

Conversation

@defidough

Copy link
Copy Markdown
Contributor

Summary

First slice of the `/web` app — Next.js 16 + Tailwind 4 + wagmi 3 + viem + Reown AppKit. Hermes Agent reference, slate+yellow, no DEX chrome. Anchored to the visual + IA brief in `docs/07` (no improvisation).

Stack (all current versions verified before install):

  • Next.js 16.2.6 (App Router, Turbopack)
  • React 19, TypeScript 5.9
  • Tailwind 4.3 (CSS-first config — no `tailwind.config.ts`)
  • wagmi 3.6.16, viem 2.51.3, @tanstack/react-query 5.100
  • @reown/appkit 1.8.20 + @reown/appkit-adapter-wagmi 1.8.20

Visual identity (locked from docs/07)

  • Background: `#1a1d22` cold slate-grey; one raised surface tone (`#22262c`); single hairline (`#2c3037`). Two tones max — no third elevation.
  • Type: warm-white (`#f1eee8`) Inter. Three sizes per screen. Tabular numerals on every price.
  • Accent: `#f5c518` warning-yellow — primary CTAs and the wedge mark only.
  • Texture: none. No gradients, glass, glow. Single-line stroke graphics.
  • Logomark: yellow triangle driven between two horizontal rules (Mainline + Wedge Rail; the wedge = the fee delta).

Pages

Route What it is
`/` Landing — locked copy ("Two-pool token launches on Base"). Six sections: Hero, Concept (with Rail diagram), Presets (3-card grid), Fees (honest table), Scanner stance, CTA strip.
`/launch` Wizard step 1 — Connect. Renders Reown AppKit's `` web component; swaps to a "connected" card with truncated address + Continue link once a wallet's attached.

Build fixes

`next.config.ts` aliases the bare `accounts` import (wagmi 3's optional connector we don't use) to an empty stub. Applies under both Turbopack and webpack — otherwise prod build fails statically resolving a dynamic import.

Env

`NEXT_PUBLIC_REOWN_PROJECT_ID` — required for production. Get one at https://cloud.reown.com. Local dev runs without it but the connect modal won't activate. `.env.example` documents this.

Test plan

  • `pnpm build` clean, both routes prerender static
  • Visual review at `pnpm dev`
  • CI green (contracts forge job will skip the /web changes; no CI step for /web yet — add in a follow-up)

Next slices

  1. Wizard step 2 (token basics — name, symbol, image)
  2. Wizard step 3 (preset selection — Classic / Balanced / Heavy)
  3. Wizard step 4 (fee preview)
  4. Wizard step 5 (scanner check)
  5. Wizard step 6 (deploy — calls `Launchpad.deployToken`)
  6. `/t/` token page
  7. `/pools` browse
  8. CI: add a `web` job that runs `pnpm build`

defidough added 2 commits May 29, 2026 23:37
First slice of the /web app. Hermes Agent reference, slate+yellow,
no DEX chrome.

Stack:
  Next.js 16.2.6 (App Router, Turbopack)
  React 19, TypeScript 5.9
  Tailwind 4.3 (CSS-first config; no tailwind.config.ts)
  wagmi 3.6.16, viem 2.51.3, @tanstack/react-query 5.100
  @reown/appkit 1.8.20 + @reown/appkit-adapter-wagmi 1.8.20

Layout:
  src/lib/wagmi.ts      WagmiAdapter (Reown), networks: [base]
  src/lib/appkit.ts     createAppKit singleton, dark theme, accent
                        #f5c518, Inter font, Google/X/Farcaster
                        socials enabled, analytics off
  src/lib/providers.tsx WagmiProvider + QueryClientProvider, side-
                        effect import of appkit so the modal is
                        registered before SSR
  src/app/layout.tsx    Inter + JetBrains Mono fonts, providers
                        mounted, locked metadata copy

Locked visual identity (docs/07):
  - slate-grey background #1a1d22 with one raised surface tone
  - warm-white type, three sizes max per screen
  - single warning-yellow accent — CTAs and the wedge mark only
  - no gradients, no glass, no glow, no DEX chrome
  - tabular numerals on every price (data-tnum)
  - single-line stroke graphics (.stroke utility)

Components:
  WedgeMark   — SVG logomark: a yellow triangle driven between
                two horizontal rules. Stroke-only.
  SiteHeader  — single row, single bottom hairline
  SiteFooter  — Wedge tagline + Scanner status / Brand / GitHub

Pages:
  /        Landing — locked copy ('Two-pool token launches on
           Base'). Six sections: hero, Concept (Rail diagram),
           Presets (3-card grid), Fees (honest table), Scanner
           stance, CTA strip.
  /launch  Wizard step 1 — Connect. Renders Reown AppKit's
           <appkit-button> web component, swaps to a 'connected'
           card with truncated address + Continue link once a
           wallet's attached.

Build fixes:
  - next.config.ts aliases the bare 'accounts' import (wagmi 3's
    optional connector we don't use) to an empty stub. Applies
    under both Turbopack and webpack.
  - removed an unused @ts-expect-error on the appkit-button web
    component (Reown's types accept it).

Env:
  NEXT_PUBLIC_REOWN_PROJECT_ID — required for production. Get one
  at https://cloud.reown.com. Local dev runs without it but the
  connect modal won't work.

Build: pnpm build, /, /launch both prerender static.
The initial Write of src/app/page.tsx returned 'File has not been
read yet' and I didn't notice — so the scaffold's 'edit page.tsx'
default was the version committed. Read + Write properly this time;
the locked landing copy (hero, Rail diagram, presets, fee table,
scanner stance, CTA) now actually lives in the route.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant