@payai/x402-express-starter
v0.1.3
Published
Create an x402 Express server in less than 2 minutes!
Readme
x402 Express Starter
Starter for running an x402 Express server.
You can find the upstream example at coinbase/x402 → examples/typescript/servers/express.
Getting Started
Requirements
- Node.js: 18 or newer
Create a new app using the template
Use your preferred package manager to scaffold:
npm (npx)
npm exec @payai/x402-express-starter -- my-x402-apppnpm
pnpm dlx @payai/x402-express-starter my-x402-appbun
bunx @payai/x402-express-starter my-x402-appThen inside your new app:
npm run devHow the created server example works
When you run the generated app, index.ts will:
- Load environment variables from
.env(for example:PORT,PAID_URL,PRIVATE_KEY). - Create an Express server and apply x402 payment handling using
x402-express(middleware/utilities). - Expose example routes that require payment and respond with JSON.
- Log two things to the console:
- The responses sent to the client
- Decoded x402 payment metadata (useful for inspecting receipts/headers)
The Starter Itself
Below are notes on the starter itself, which creates the example that devs use to get started.
How sync works
- Workflow:
.github/workflows/sync.yml - Triggered hourly (cron) and on manual dispatch.
- Steps (high level):
- Sparse clone upstream
coinbase/x402and restrict toexamples/typescript/servers/express. - Resolve latest
x402-expressversion from npm (best-effort). - Mirror files into
vendor/upstream/(transient; ignored in git and cleaned up). - Run
scripts/sanitize.shto:- Copy all files from
vendor/upstream/intotemplate/(root of the template), preserving structure. - Refresh
NOTICEwith the upstream commit and clean upvendor/andupstream/directories.
- Copy all files from
- Inject the resolved
x402-expressversion intotemplate/package.json(replacing any workspace reference). - Open a PR with the changes using
peter-evans/create-pull-request.
- Sparse clone upstream
Notes:
- If
npm view x402-express versionfails, the workflow falls back to0.0.0and will skip injecting the dependency until it is available. - The template mirrors the upstream example at the template root (no
src/in the template). Your generated app runs from its root.
Local development of this starter
# run the sanitize/mapping script locally (after an upstream sync or manual vendor update)
scripts/sanitize.sh examples/typescript/servers/express <commit-sha>Key files:
template/– shipped starter template; mirrors upstream example at rootvendor/upstream/– transient mirror used during sync (gitignored and cleaned).github/workflows/sync.yml– sync/PR workflowscripts/sanitize.sh– maps upstream example intotemplate/(root)bin/create.js– CLI that scaffolds a new project fromtemplate/
Releasing this starter to npm (optional)
- The
Releaseworkflow publishes on pushes tomain. - Requires
NPM_TOKENsecret configured in the repo.
License and attribution
Apache-2.0. Portions are derived from coinbase/x402 (see NOTICE, LICENSE, and upstream notices).
x402-express-starter
Create an x402 Express server merchant in less than 2 minutes!
