ShipNext

Project Structure

How the ShipNext project is organized and what each major directory owns.

This page gives a high-level map of the ShipNext repository. You do not need to memorize every detail before building; the integration docs explain each module more deeply.

layout.tsx
.env.example
drizzle.config.ts
package.json
...

Some files are omitted for readability. The goal here is to understand the ownership boundaries.

Root directories

Directory / fileResponsibility
app/Next.js App Router pages, layouts, and API routes
components/Shared UI and feature components
config/Website-level configuration
content/MDX docs, blog posts, and legal pages
lib/Shared utilities and data used across the app
public/Static assets such as images, icons, and Open Graph images
styles/Global MDX and styling support
package.jsonDependencies and scripts
drizzle.config.tsDrizzle ORM configuration
.env.exampleEnvironment variable template

App routes

app/ is the Next.js App Router entrypoint.

  • app/(marketing) - Public marketing pages such as home, pricing, blog, and legal pages.
  • app/(auth) - Sign-in, sign-up, and password recovery pages.
  • app/(protected) - Dashboard, settings, billing, and authenticated surfaces.
  • app/api - Webhooks, auth callbacks, uploads, search, and other APIs.
  • app/docs - Fumadocs documentation routes. Docs language switching is scoped here and does not add locale prefixes.

Content

content/docs stores localized documentation:

content/docs/
├── en/
└── zh/

Both language trees keep the same slugs so /docs/... stays stable while the rendered language changes.

Shared responsibilities

AreaTypical files
Docs rendererapp/docs, components/docs, lib/source.ts
Site configconfig/website.ts
Marketing datalib/landing/*
UI primitivescomponents/ui/*
Legal pagescontent/legal, components/legal/*

Dependency sketch

app -> components, config, lib
components -> lib, config, UI primitives
content -> Fumadocs / MDX source
lib -> shared utilities and source loaders

Next steps

On this page