Charge for your side project without building billing
vantezzen/pay is a self-hostable payment microservice for your side projects. It runs a Next.js dashboard/API, stores wallets and ledger entries in Postgres, syncs prices with Stripe or Polar, and serves shadcn registry components for consumer apps.
Try it at https://pay.vantezzen.io or learn how to host it yourself at https://pay.vantezzen.io/docs/self-host.
After creating a project and copying its publishable key, install the registry components in your consumer app:
npx shadcn@latest add \
https://pay.vantezzen.io/r/pay-provider.json \
https://pay.vantezzen.io/r/pay-purchase.jsonThen wrap the app with your instance URL and project key:
<PayProvider
baseUrl={process.env.NEXT_PUBLIC_PAY_URL!}
publishableKey={process.env.NEXT_PUBLIC_PAY_KEY!}
>
{children}
</PayProvider>See the 5-minute quickstart
for a complete test payment. If an AI coding agent is doing the integration,
give it: Read https://pay.vantezzen.io/docs/agent and integrate vantezzen/pay into this app from start to finish.
- Install web dependencies with
bun install. - Install provider service dependencies with
bun install --cwd services/provider. - Run
bun run setupto create both environment files with matching local secrets. - Review
.envandservices/provider/.env, especially URLs and email settings. - Start local Postgres with
docker compose up -d. - Run migrations with
bun run db:migrate. - Start the app with
bun run dev(runs the Next.js app and the provider service).
See TECH.md for the full list of required environment variables.
| Command | Purpose |
|---|---|
bun run lint |
Run ESLint. |
bun run test |
Run Bun tests. |
bun run db:generate |
Generate Drizzle migrations after schema changes. |
bun run db:migrate |
Apply migrations. |
bun run registry:build |
Build the shadcn registry output. |
