A public, reviewable Next.js 14 demo for an API marketplace and developer dashboard.
This repository is intentionally not the full private product. It keeps the core architecture and main code paths so developers can review the implementation style, but removes private branding, production assets, real credentials, internal roadmap details, and deployment-specific configuration.
- Next.js App Router frontend and API routes
- Authentication flow with email/password and EVM wallet signature verification
- Prisma schema for users, providers, marketplace APIs, subscriptions, API keys, usage logs, invoices, agents, webhooks, and audit logs
- API key generation with one-time plaintext display and SHA-256 hash storage
- Provider routes, marketplace browse/detail routes, subscription routes, billing route skeletons, and usage summary routes
- Tailwind-based UI components and dashboard pages
- Demo seed script using placeholder accounts only
- Original private brand name, product copy, and proprietary visual assets
- Any local
.envfile and production secrets node_modules, build output, cache files, logs, and deployment artifacts- Private customer/provider references
- Exact production API names, SDK package references, and internal domain references
- Seed credentials were changed to obvious placeholders that must be replaced
| Area | Technology |
|---|---|
| Framework | Next.js 14 App Router |
| Language | TypeScript |
| Styling | Tailwind CSS |
| Database | PostgreSQL |
| ORM | Prisma |
| Auth | JWT via jose, HTTP-only cookies |
| Wallet auth | ethers signature verification |
| Payments | Stripe integration skeleton |
| Validation | Zod |
| Password hashing | bcryptjs |
git clone <your-repo-url>
cd apihub-marketplace-starter
cp .env.example .env
npm install
npx prisma db push
npm run db:seed
npm run devOpen http://localhost:3000.
DATABASE_URL="postgresql://user:password@localhost:5432/apihub_starter?schema=public"
JWT_SECRET="replace-with-a-random-secret-at-least-32-characters"
STRIPE_SECRET_KEY="sk_test_replace_with_your_test_key"
STRIPE_WEBHOOK_SECRET="whsec_replace_me"
NEXT_PUBLIC_APP_URL="http://localhost:3000"
NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID=""The seed file contains placeholder demo users only. Replace these before any real deployment.
| Role | Password | |
|---|---|---|
| Admin | admin@example.com | change-me-admin-password |
| Customer | demo.user@example.com | change-me-demo-password |
| Provider | provider@example.com | change-me-provider-password |
This is a demo repository. Before production use, review all auth, billing, rate-limit, audit, and database code. Replace the in-memory rate limiter with Redis/Upstash or another shared production store. Use strong secrets, enable secure cookies in production, configure Stripe webhooks correctly, and add automated tests.
app/ Next.js routes, pages, layouts, and API handlers
components/ Shared layout, landing, and UI components
lib/ Auth, database, API keys, validation, billing, and utility code
lib/data/ Demo catalog/dashboard data
prisma/ Prisma schema and seed script
types/ Shared TypeScript types
public/ Public static assets
MIT for this public demo. Private production code and removed assets are not included.