Skip to main content

Prerequisites

  • Node.js 20+
  • pnpm 10
  • A Neon Postgres database
  • A Clerk account with organizations enabled
  • A Stripe account (sandbox)

Set up the monorepo

1

Clone and install

git clone https://github.com/aaronm-git/poolpuma-nextjs.git
cd poolpuma-nextjs
pnpm install
2

Configure environment variables

Copy the example env file and fill in your credentials:
cp apps/web/.env.example apps/web/.env.local
Required variables:
  • DATABASE_URL: Neon connection string
  • NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY / CLERK_SECRET_KEY
  • STRIPE_SECRET_KEY / STRIPE_WEBHOOK_SECRET
  • OPENAI_API_KEY: for AI features
3

Push the database schema

pnpm --filter @poolpuma/db db:push
4

Start the dev server

pnpm dev
The web app runs at http://localhost:3000 and the API at http://localhost:3001.

Project structure

poolpuma-nextjs/
├── apps/
│   ├── web/          # Next.js 16 frontend
│   ├── api/          # Fastify 5 backend
│   └── docs/         # Mintlify documentation (this site)
├── packages/
│   └── db/           # Drizzle ORM schema & migrations
├── reference/        # Internal product & architecture docs
├── turbo.json        # Turborepo config
└── pnpm-workspace.yaml