GoShipped

πŸ—‚ Project Structure

You don’t need to understand the entire repository. Here is the map of what a builder actually touches.

GoShipped is a monorepo. Most folders are infrastructure you will rarely open. A small set of files is where your product lives. Start there.

You
 ↓
Next.js (`apps/web`)     what people see
 ↓
FastAPI (`apps/api`)     chat, agents, billing, email
 ↓
Supabase                 Auth, Postgres, pgvector, Storage
 ↓
AI providers Β· Stripe Β· Resend   only the ones you enable

You probably will not touch most of this on day one.

The mental model

Four things matter on day one:

PiecePathWhat it is
Frontendapps/webNext.js 16 app: marketing site, auth, chat, settings
Backendapps/apiFastAPI app: conversations, streaming, tools, billing APIs
DatasupabaseCLI config, migrations, Auth email templates
Product configstarter.config.jsonName, branding, feature flags

Secrets live in env files next to each app. There is no root .env.

The repo also has docs/ β€” the in-product documentation that shipped with your checkout. Use it when you want a deeper dive. These public pages are the starting map.

What you will actually open

(marketing)/
chat/
settings/
login/
marketing.ts
features.ts
public/
config/mcp_servers.yaml
starter.config.json

If a path is not in that list, you can probably ignore it until you have a reason.

I want to change…

I want to change…Look here
App name, logo, colors, feature flagsstarter.config.json
Landing page copy and sectionsapps/web/src/config/marketing.ts
Landing page layoutapps/web/src/components/marketing/ and apps/web/src/app/(marketing)/
Chat UIapps/web/src/components/chat/ and apps/web/src/app/chat/
Auth screensapps/web/src/components/auth/ plus login, register, forgot-password
Settingsapps/web/src/app/settings/ and apps/web/src/components/settings/
AI models / providersapps/api/app/llm/
Agents, planner, built-in toolsapps/api/app/ai/ β€” see Agents
Add a custom AI toolapps/api/app/ai/tools/tools/example_tool.py β€” see Tools
RAG / file uploadsapps/api/app/services/file_service.py, apps/api/app/services/embedding_service.py
Long-term memoryapps/api/app/services/memory_service.py
MCP serversapps/api/config/mcp_servers.yaml (off by default)
Paymentsapps/api/app/billing/ and apps/api/app/plans/
Product emailsapps/api/app/email/
Auth emailssupabase/templates/
Database schemasupabase/migrations/
Setup, doctor, deployscripts/setup/, scripts/deploy/

Frontend (apps/web)

This is the Next.js app people use.

Public marketing routes live in a route group so you can rebrand or delete the marketing site without touching chat:

  • src/app/(marketing)/ β€” /, /pricing, /privacy, /terms
  • src/config/marketing.ts β€” copy, section flags, legal identity

The product itself:

  • /chat β€” the AI app
  • /settings β€” profile, AI, billing, usage, account
  • /login, /register, /forgot-password β€” auth UI

Product name, colors, and feature flags still come from starter.config.json, not from the marketing file.

Backend (apps/api)

This is FastAPI. The Next.js app never calls OpenAI or Anthropic directly.

Useful directories:

PathRole
app/api/v1/REST routes
app/llm/OpenAI and Anthropic providers
app/ai/Planner, tools, Deep Research, web/stocks helpers
app/services/Chat, files, memory, storage, users
app/billing/Stripe Checkout, portal, webhooks
app/email/Resend product emails
app/db/SQLAlchemy models and the database session
app/features.pyServer-side feature flags

OpenAPI is at https://localhost:8000/docs when the API is running.

Supabase

supabase/ is the source of truth for schema and local Auth config.

PathRole
supabase/migrations/Postgres + pgvector schema. Apply all of them, in filename order.
supabase/config.tomlLocal Auth, email templates, CLI project id
supabase/templates/Confirmation and recovery emails for local Auth

Hosted Auth URLs and SMTP are configured in the Supabase dashboard, not in this folder. See redirect URLs and custom SMTP when you get there.

Docker is only for local pnpm supabase:start. Linking and pushing a hosted project does not need Docker.

Config files

starter.config.json              committed product config
apps/web/src/config/marketing.ts public website copy
apps/web/.env.local              frontend secrets
apps/api/.env                    backend secrets

pnpm dev syncs starter.config.json into generated copies inside each app. Edit the root file, not the generated ones.

Next up: Configuration β€” what belongs in which file.

On this page