From 422116f77803312f577c5cdb11027df50a7486a7 Mon Sep 17 00:00:00 2001 From: JohnCelery <212132728+JohnCelery@users.noreply.github.com> Date: Tue, 7 Jul 2026 07:52:31 -0400 Subject: [PATCH 01/14] Initialize Next.js Tailwind app --- README.md | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 5f1a2e0..15d55b8 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,26 @@ -# x402-directory +# x402 Directory + A curated, agent-maintained directory of x402 payment-enabled applications and endpoints. Browse, search, and discover services that accept x402 micropayments. Agents can contribute by adding new listings, verifying endpoint liveness, and categorizing services. + +## Getting Started + +Install dependencies: + +```bash +npm install +``` + +Run the development server: + +```bash +npm run dev +``` + +Open [http://localhost:3000](http://localhost:3000) to view the app. + +## Scripts + +- `npm run dev` starts the local Next.js server. +- `npm run build` creates a production build. +- `npm run typecheck` runs TypeScript without emitting files. +- `npm run lint` runs the Next.js lint checks. From 760d693433f91814783bbc1edd29162877c753e1 Mon Sep 17 00:00:00 2001 From: JohnCelery <212132728+JohnCelery@users.noreply.github.com> Date: Tue, 7 Jul 2026 07:52:36 -0400 Subject: [PATCH 02/14] Add project ignore rules --- .gitignore | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3f01223 --- /dev/null +++ b/.gitignore @@ -0,0 +1,12 @@ +.next/ +node_modules/ +out/ +dist/ +.env* +!.env.example +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +.DS_Store +tsconfig.tsbuildinfo From 17172d1dcf13813e509422f74d1bcd3607bfe31e Mon Sep 17 00:00:00 2001 From: JohnCelery <212132728+JohnCelery@users.noreply.github.com> Date: Tue, 7 Jul 2026 07:52:42 -0400 Subject: [PATCH 03/14] Add Next lint config --- .eslintrc.json | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .eslintrc.json diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..957cd15 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": ["next/core-web-vitals"] +} From 965fdee796888e8c1ddc7b902a2c171d5d02b233 Mon Sep 17 00:00:00 2001 From: JohnCelery <212132728+JohnCelery@users.noreply.github.com> Date: Tue, 7 Jul 2026 07:52:49 -0400 Subject: [PATCH 04/14] Add Next.js package scripts --- package.json | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 package.json diff --git a/package.json b/package.json new file mode 100644 index 0000000..69e60f8 --- /dev/null +++ b/package.json @@ -0,0 +1,28 @@ +{ + "name": "x402-directory", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "typecheck": "tsc --noEmit", + "lint": "next lint" + }, + "dependencies": { + "next": "14.2.35", + "react": "18.3.1", + "react-dom": "18.3.1" + }, + "devDependencies": { + "@types/node": "20.19.7", + "@types/react": "18.3.23", + "@types/react-dom": "18.3.7", + "autoprefixer": "10.4.21", + "eslint": "8.57.1", + "eslint-config-next": "14.2.35", + "postcss": "8.5.6", + "tailwindcss": "3.4.17", + "typescript": "5.8.3" + } +} From b09cfdb7124399ef4067cfc0fc72c89d670ed62d Mon Sep 17 00:00:00 2001 From: JohnCelery <212132728+JohnCelery@users.noreply.github.com> Date: Tue, 7 Jul 2026 07:52:54 -0400 Subject: [PATCH 05/14] Add global Tailwind styles --- app/globals.css | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 app/globals.css diff --git a/app/globals.css b/app/globals.css new file mode 100644 index 0000000..a2fdc07 --- /dev/null +++ b/app/globals.css @@ -0,0 +1,33 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +:root { + --background: #f7fbfb; + --foreground: #1b1f23; +} + +* { + box-sizing: border-box; +} + +html { + min-height: 100%; +} + +body { + min-height: 100vh; + margin: 0; + background: var(--background); + color: var(--foreground); +} + +a { + color: inherit; + text-decoration: none; +} + +button, +input { + font: inherit; +} From cb16cd1b393614d5c80390227da74e8c0abca890 Mon Sep 17 00:00:00 2001 From: JohnCelery <212132728+JohnCelery@users.noreply.github.com> Date: Tue, 7 Jul 2026 07:53:00 -0400 Subject: [PATCH 06/14] Add root app layout --- app/layout.tsx | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 app/layout.tsx diff --git a/app/layout.tsx b/app/layout.tsx new file mode 100644 index 0000000..0cdd3a5 --- /dev/null +++ b/app/layout.tsx @@ -0,0 +1,24 @@ +import type { Metadata } from "next"; +import { Inter } from "next/font/google"; +import "./globals.css"; + +const inter = Inter({ subsets: ["latin"], variable: "--font-inter" }); + +export const metadata: Metadata = { + title: "x402 Directory", + description: "Browse and discover x402 payment-enabled applications and endpoints.", +}; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( + + + {children} + + + ); +} From 715ea96674a09a2e035dafc8ec11828aebf9c2a3 Mon Sep 17 00:00:00 2001 From: JohnCelery <212132728+JohnCelery@users.noreply.github.com> Date: Tue, 7 Jul 2026 07:53:19 -0400 Subject: [PATCH 07/14] Add homepage scaffold --- app/page.tsx | 114 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 app/page.tsx diff --git a/app/page.tsx b/app/page.tsx new file mode 100644 index 0000000..b89d450 --- /dev/null +++ b/app/page.tsx @@ -0,0 +1,114 @@ +import { PageShell } from "@/components/page-shell"; +import { placeholderListings } from "@/data/placeholder-listings"; + +export default function Home() { + return ( + +
+
+

+ x402 endpoint discovery +

+

+ Find applications and APIs that accept x402 payments. +

+

+ A curated directory for agents, developers, and services building + with HTTP-native micropayments. +

+
+ + Browse preview + + + Learn about x402 + +
+
+ +
+
+
+

+ Endpoint liveness +

+

Placeholder status panel

+
+ + Preview + +
+
+
+
Apps
+
24
+
+
+
APIs
+
18
+
+
+
Live
+
92%
+
+
+
+
+ +
+
+
+
+

+ Directory preview +

+

+ Example cards for the first searchable directory experience. +

+
+
+ Search and filters can land in the next iteration. +
+
+ +
+ {placeholderListings.map((listing) => ( +
+
+
+

+ {listing.name} +

+

+ {listing.category} +

+
+ + {listing.status} + +
+

+ {listing.description} +

+
+ ))} +
+
+
+
+ ); +} From 186ddeee9f1ab84e17ef1c6edf04b3f1459dad9b Mon Sep 17 00:00:00 2001 From: JohnCelery <212132728+JohnCelery@users.noreply.github.com> Date: Tue, 7 Jul 2026 07:53:28 -0400 Subject: [PATCH 08/14] Add page shell component --- components/page-shell.tsx | 44 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 components/page-shell.tsx diff --git a/components/page-shell.tsx b/components/page-shell.tsx new file mode 100644 index 0000000..9b7d045 --- /dev/null +++ b/components/page-shell.tsx @@ -0,0 +1,44 @@ +type PageShellProps = { + children: React.ReactNode; +}; + +export function PageShell({ children }: PageShellProps) { + return ( +
+
+ +
+ +
{children}
+ + +
+ ); +} From 7754dda630f38d31a812197f8cd3a9bc7720a8fa Mon Sep 17 00:00:00 2001 From: JohnCelery <212132728+JohnCelery@users.noreply.github.com> Date: Tue, 7 Jul 2026 07:53:39 -0400 Subject: [PATCH 09/14] Add placeholder listing data --- data/placeholder-listings.ts | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 data/placeholder-listings.ts diff --git a/data/placeholder-listings.ts b/data/placeholder-listings.ts new file mode 100644 index 0000000..91074c5 --- /dev/null +++ b/data/placeholder-listings.ts @@ -0,0 +1,23 @@ +export const placeholderListings = [ + { + name: "Micropay API", + category: "Developer tool", + status: "Live", + description: + "A sample payment-enabled API listing with category metadata and endpoint status.", + }, + { + name: "Agent File Store", + category: "Storage", + status: "Live", + description: + "Placeholder listing for an app that accepts x402 payments for file access.", + }, + { + name: "Inference Gateway", + category: "AI service", + status: "Checking", + description: + "Example service card for future liveness checks, tags, and verification details.", + }, +]; From 0a0ef40157ba99b70d6be66aa731905599d84114 Mon Sep 17 00:00:00 2001 From: JohnCelery <212132728+JohnCelery@users.noreply.github.com> Date: Tue, 7 Jul 2026 07:53:45 -0400 Subject: [PATCH 10/14] Add Next TypeScript environment file --- next-env.d.ts | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 next-env.d.ts diff --git a/next-env.d.ts b/next-env.d.ts new file mode 100644 index 0000000..40c3d68 --- /dev/null +++ b/next-env.d.ts @@ -0,0 +1,5 @@ +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/app/building-your-application/configuring/typescript for more information. From fb6ac428e5c193f8f8963046459cac0aedb570f7 Mon Sep 17 00:00:00 2001 From: JohnCelery <212132728+JohnCelery@users.noreply.github.com> Date: Tue, 7 Jul 2026 07:53:48 -0400 Subject: [PATCH 11/14] Add Next config --- next.config.mjs | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 next.config.mjs diff --git a/next.config.mjs b/next.config.mjs new file mode 100644 index 0000000..4678774 --- /dev/null +++ b/next.config.mjs @@ -0,0 +1,4 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = {}; + +export default nextConfig; From 4fc2fe3d8ee1d3c7ef3085911c85413044317ae3 Mon Sep 17 00:00:00 2001 From: JohnCelery <212132728+JohnCelery@users.noreply.github.com> Date: Tue, 7 Jul 2026 07:53:52 -0400 Subject: [PATCH 12/14] Add PostCSS config --- postcss.config.mjs | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 postcss.config.mjs diff --git a/postcss.config.mjs b/postcss.config.mjs new file mode 100644 index 0000000..a982c64 --- /dev/null +++ b/postcss.config.mjs @@ -0,0 +1,8 @@ +const config = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +}; + +export default config; From 9c7df4e0c4d1e7331fbe5a22e86abd35b1d1df54 Mon Sep 17 00:00:00 2001 From: JohnCelery <212132728+JohnCelery@users.noreply.github.com> Date: Tue, 7 Jul 2026 07:53:58 -0400 Subject: [PATCH 13/14] Add Tailwind config --- tailwind.config.ts | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 tailwind.config.ts diff --git a/tailwind.config.ts b/tailwind.config.ts new file mode 100644 index 0000000..3668858 --- /dev/null +++ b/tailwind.config.ts @@ -0,0 +1,24 @@ +import type { Config } from "tailwindcss"; + +const config: Config = { + content: [ + "./app/**/*.{js,ts,jsx,tsx,mdx}", + "./components/**/*.{js,ts,jsx,tsx,mdx}", + "./data/**/*.{js,ts,jsx,tsx,mdx}", + ], + theme: { + extend: { + colors: { + stone: { + 650: "#57534a", + }, + }, + fontFamily: { + sans: ["var(--font-inter)", "system-ui", "sans-serif"], + }, + }, + }, + plugins: [], +}; + +export default config; From 5ca1942a22c75139f3fd28095471f446a310620b Mon Sep 17 00:00:00 2001 From: JohnCelery <212132728+JohnCelery@users.noreply.github.com> Date: Tue, 7 Jul 2026 07:54:04 -0400 Subject: [PATCH 14/14] Add TypeScript config --- tsconfig.json | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 tsconfig.json diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..47fabac --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,28 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": false, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "baseUrl": ".", + "paths": { + "@/*": ["./*"] + }, + "plugins": [ + { + "name": "next" + } + ] + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "exclude": ["node_modules"] +}