A startup directory platform where builders can publish startup ideas, browse other pitches, and discover founders.
This is a personal full-stack project I built to explore modern product development workflows with a content-driven platform.
- Links
- What This App Does
- Tech Stack
- Project Highlights
- Getting Started
- Available Scripts
- Content Management (Sanity Studio)
- Notes
- GitHub authentication for sign in/sign out
- Create and submit startup pitches
- Browse all startups on the home page
- Search startups by title, category, or author name
- View individual startup details
- Track startup view counts
- View founder profiles and their submitted startups
- Manage and curate content through Sanity Studio
- Next.js 16 (App Router)
- React 19
- TypeScript 5
- Tailwind CSS 4
- NextAuth v5 (GitHub provider)
- Sanity CMS + next-sanity
- shadcn/ui + Radix UI
- Sentry (error monitoring setup)
- Built with a modern App Router architecture using the latest Next.js and React versions
- Structured with reusable components and typed server/client boundaries
- Integrated CMS-backed content workflows with authenticated user actions
- Node.js 20+
- npm
- A Sanity project
- A GitHub OAuth app
git clone git@github.com:ebubecodes/yc-directory.git
cd yc-directory
npm installCreate a .env.local file in the project root:
NEXT_PUBLIC_SANITY_PROJECT_ID=
NEXT_PUBLIC_SANITY_DATASET=
NEXT_PUBLIC_SANITY_API_VERSION=
SANITY_WRITE_TOKEN=
AUTH_SECRET=
AUTH_GITHUB_ID=
AUTH_GITHUB_SECRET=Notes:
SANITY_WRITE_TOKENis required for write operations (creating content and updating views).NEXT_PUBLIC_SANITY_API_VERSIONcan be set to a date string (example:2025-11-22).
npm run devnpm run dev- Start development server (Turbopack)npm run build- Build for productionnpm run start- Start production servernpm run lint- Run lint checksnpm run typegen- Regenerate Sanity schema extract + TypeScript types
Sanity Studio is available in-app at:
/studio
Use it to manage authors, startups, and playlist/editor-pick style curation.
This project is actively maintained and serves as part of my portfolio work around full-stack TypeScript applications.