Startup Pitch

2025 / Nextjs Application

Startup Pitch is a web app that helps founders and teams draft, organize, and refine their startup pitches in one place. It gives you a clean interface to write content, preview how it will look, and keep everything structured so you can confidently share your story with investors, advisors, and your team.

Startup Pitch banner

Overview

This project is a Next.js 16 application (App Router) written in TypeScript and configured for strict type checking (strict: true, noEmit: true) with modern compiler settings (moduleResolution: 'bundler', React JSX transform, incremental builds). It targets ES2017 with dom, dom.iterable, and esnext libs, and uses a monorepo-style path alias @/* pointing to the project root for clean imports. On the frontend, the app is built with React 19 and uses a combination of Tailwind CSS 4 and styled-components 6 for styling. Tailwind is wired in via @tailwindcss/postcss, tailwindcss-animate, and tw-animate-css, with Lightning CSS handling modern CSS transforms/post-processing for performance. Utility libraries such as clsx, class-variance-authority, and tailwind-merge are used to create composable, variant-driven UI components. Radix UI’s @radix-ui/react-slot and Lucide React provide accessible primitives and iconography. The project also integrates next-themes to support light/dark theme switching at the framework level. For content, the app is tightly integrated with Sanity v5 as a headless CMS, using next-sanity as the glue between Next.js and Sanity. The sanity/lib/live.ts file configures defineLive from next-sanity/live with a client that targets Sanity’s experimental live content API, exposing sanityFetch and SanityLive to enable real-time content updates without manual revalidation. Content editing and rendering rely on markdown tooling: markdown-it and sanity-plugin-markdown on the CMS side, plus @uiw/react-md-editor on the frontend for a rich Markdown editing experience. @sanity/image-url is used to generate optimized image URLs from Sanity assets, and slugify helps turn titles into URL-safe slugs for pitch pages or sections. The project uses NextAuth v5 (beta) for authentication, giving it a standardized way to handle user sessions, login flows, and protected routes (e.g., draft-only pitch views vs. public pitch pages). Zod is included for schema-based runtime validation of inputs and data shapes flowing between the frontend, backend routes, and CMS, helping enforce strong contracts beyond TypeScript’s compile-time guarantees. Telemetry and error monitoring are handled via Sentry’s Next.js SDK (@sentry/nextjs), enabling performance tracing and error capture across API routes, server components, and client components. Build and tooling are driven primarily by npm scripts. The dev, build, start, and lint scripts are built on top of Next.js (next dev --turbopack, next build, next start, next lint). A dedicated type generation pipeline for Sanity is wired in via dotenv-cli and the Sanity CLI: the typegen script loads environment variables from .env.local, extracts the Sanity schema to ./sanity/extract.json (sanity schema extract), and then runs sanity typegen generate to produce strongly-typed definitions that can be consumed throughout the app. This typegen script is hooked into predev and prebuild, so local development and production builds are always aligned with the latest CMS schema. Linting and quality checks use ESLint 10 with eslint-config-next and @eslint/eslintrc, covering both application and framework-specific rules. TypeScript tooling (typescript and @types/* for React, Node, and Markdown-It) ensures modern type support. Overall, the architecture combines Next.js (App Router) + Sanity CMS + NextAuth + Tailwind/styled-components + Markdown tooling + Sentry + Zod to deliver a modern, type-safe, content-driven web application well-suited to managing and presenting structured startup pitch content.

Gallery

Startup Pitch - Image 1

Technologies

Next.jsTypeScriptTailwind CSSPostgreSQLStripe

Links

© 2026 Donald Chimezie Akobundu. All rights reserved.
Built with Next.js and Tailwind CSS.