This file provides guidance to WARP (warp.dev) when working with code in this repository.
Use npm (lockfile is package-lock.json):
npm installStarts the Next.js dev server on port 3000:
npm run devYou can also use the equivalent commands from the README if you prefer Yarn, pnpm, or Bun (yarn dev, pnpm dev, bun dev).
Create an optimized production build:
npm run buildServe the previously built app:
npm run startRuns ESLint with the flat config in eslint.config.mjs:
npm run lintThere is currently no test script or test runner configured in package.json. Before adding tests or test-related commands, coordinate on the choice of test framework (e.g. Jest, Vitest) and then add appropriate scripts (for example, "test": "vitest") to package.json.
- This is a Next.js App Router project (created with
create-next-app), using theapp/directory as the main entry point. - React and TypeScript are used throughout the app. The app runs in strict TypeScript mode with
noEmit(seetsconfig.json). - Routing is file-system based under
app/. The root route (/) is implemented inapp/page.tsx. - Global layout and metadata are defined in
app/layout.tsxvia theRootLayoutcomponent and exportedmetadataobject. - Static assets (such as
next.svg,vercel.svg) are served frompublic/and accessed via the/path prefix.
- Global styles live in
app/globals.css. - Tailwind CSS v4 is integrated via PostCSS:
postcss.config.mjsregisters the"@tailwindcss/postcss"plugin.app/globals.cssstarts with@import "tailwindcss";, enabling Tailwind utilities across the app.
- Color and font theming is driven by CSS custom properties:
:rootdefines--backgroundand--foregroundwith a dark-mode override via@media (prefers-color-scheme: dark).- An
@theme inlineblock maps these to Tailwind theme tokens (--color-background,--color-foreground,--font-sans,--font-mono).
- The root layout (
app/layout.tsx) loads the Geist and Geist Mono fonts vianext/font/google, wiring them into CSS variables (--font-geist-sans,--font-geist-mono) that are then used by the theme.
- ESLint is configured using the flat config in
eslint.config.mjs. - The config composes Next.js presets:
eslint-config-next/core-web-vitalsfor Next/React best practices.eslint-config-next/typescriptfor TypeScript-specific rules.
globalIgnoresis used to ignore build artifacts and generated files:.next/**,out/**,build/**,next-env.d.ts.
- The
lintnpm script simply runseslint, which will use this flat config.
tsconfig.jsonis the single source of TypeScript settings:strict: true,noEmit: true,skipLibCheck: true.moduleResolution: "bundler"andmodule: "esnext"for compatibility with Next.js and modern bundlers.- JSX is configured as
"react-jsx".
- A path alias is defined:
@/*resolves to the project root (./*).- Use imports like
import Foo from "@/app/...";instead of long relative paths.
- The
includesection covers all TypeScript/TSX files and Next.js type definitions under.next/.
app/layout.tsxdefines the HTML shell (<html>,<body>) and applies font/theme classes.app/page.tsxcurrently contains the default landing page from the Next.js starter, with Tailwind utility classes andnext/imagefor optimized images.app/globals.cssdefines global CSS variables, Tailwind integration, and base body styles.next.config.tsexports aNextConfigobject and is currently left at its default shape; extend this file for future Next.js configuration (custom headers, redirects, experimental flags, etc.).