Production-ready MVP directory built with Next.js App Router, TypeScript, Tailwind CSS, Prisma, PostgreSQL, and server actions.
- SEO-focused homepage with hero search, popular categories, featured boards, recent boards, and keyword-rich copy
- Searchable directory at
/boardswith filters for category, contributor status, activity level, tags, sorting, and pagination - Individual board pages at
/boards/[slug]with structured data, related boards, join instructions, and CTA links - SEO category pages at
/category/[slug] - Submission form at
/submitwith pending moderation flow - Admin login and dashboard at
/adminfor approving submissions, featuring/verifying boards, deleting boards, and editing categories - Prisma schema and seed script with 36 example boards across key niches
robots.txtand dynamic sitemap support- Bonus MVP extras: local favorites, newsletter signup UI, claim/report listing links
- Next.js 15 App Router
- React 19
- TypeScript
- Tailwind CSS
- Prisma ORM
- PostgreSQL
- Radix primitives with shadcn-style UI components
- Install dependencies:
npm install- Copy the environment file:
cp .env.example .env-
Update
.envwith your PostgreSQL connection string and admin credentials. -
Generate the Prisma client:
npm run prisma:generate- Run the database migration:
npm run prisma:migrate -- --name init- Seed the database:
npm run prisma:seed- Start the development server:
npm run devDATABASE_URL="postgresql://postgres:postgres@localhost:5432/pinterestgroupboards?schema=public"
NEXT_PUBLIC_SITE_URL="https://pinterestgroupboards.com"
ADMIN_EMAIL="admin@pinterestgroupboards.com"
ADMIN_PASSWORD="change-me"
AUTH_SECRET="replace-with-a-long-random-string"- Create a PostgreSQL database.
- Add the environment variables from
.env.exampleto your Vercel project. - Run the Prisma migration during deploy or before first production release.
- Seed the production database if you want the starter listings live on launch.
- Deploy the app:
npm run build- The app expects PostgreSQL in both development and production.
- The seed script creates default categories, tags, a seeded admin user, pending submissions, and launch-ready sample boards.
- Admin password hashing uses SHA-256 for this MVP seed flow. For a production hardening pass, replace it with
bcryptorargon2.
app/
components/
lib/
prisma/
public/
- Visit
/admin/login - Sign in with
ADMIN_EMAILandADMIN_PASSWORD
- Favorites are stored in local storage.
- Newsletter signup is a UI placeholder ready to connect to your ESP of choice.
- Claim and report listing links currently open email workflows for quick launch readiness.