Shipfastai’s frontend is a Next.js 14 App Router application built with Tailwind CSS and shadcn/ui. Every visual aspect — the color palette, typography, logo, and page layouts — is designed to be overridden without touching the core business logic. The steps below walk you through the most common customizations, from swapping your brand name to adding entirely new pages.Documentation Index
Fetch the complete documentation index at: https://docs.shipfastai.dev/llms.txt
Use this file to discover all available pages before exploring further.
Updating branding
The app name appears in browser tabs, Open Graph tags, and the default metadata defined insrc/app/layout.tsx. Update it in two places:
1. Metadata in layout.tsx
src/app/layout.tsx
public/ directory at the project root. Reference them in your header component using Next.js’s Image component:
src/components/shared/logo.tsx
public/favicon.ico with your own favicon. For broader browser and PWA support, also add public/apple-touch-icon.png (180×180 px) and public/icon-192.png.
Colors and theme
Shipfastai uses CSS custom properties to define its color system, which Tailwind maps throughtailwind.config.ts. You change the entire color palette by editing the variable values in src/app/globals.css — you never need to modify tailwind.config.ts itself.
The light and dark theme values are defined under :root and .dark respectively:
src/app/globals.css
H S% L%) without the hsl() wrapper, which lets Tailwind compose opacity variants automatically. To change your primary brand color, update --primary (and --primary-foreground for text on primary backgrounds) in both :root and .dark.
shadcn/ui components
Shipfastai uses shadcn/ui with thenew-york style and neutral base color, configured in components.json at the project root:
components.json
dialog component:
src/components/ui/dialog.tsx, which you can then import and customize freely. Because the components are copied into your repository, you own the code and can modify them without overriding a package.
Modifying pages
The frontend follows the Next.js App Router convention. All user-facing routes live undersrc/app/, grouped into three route groups:
| Route group | Path | Purpose |
|---|---|---|
(marketing) | /, /pricing | Public landing pages |
(dashboard) | /dashboard, /billing, /settings | Authenticated app pages |
(auth) | /login, /register | Authentication flows |
src/app/(marketing)/page.tsx. The hero section, features grid, and CTA section are each a self-contained JSX block you can rearrange or replace:
src/app/(marketing)/page.tsx
src/app/(dashboard)/dashboard/page.tsx. The stat cards, recent activity feed, and quick-action buttons are all rendered inline and easy to replace with your own data.
Adding new pages
To add a new public page, create apage.tsx file inside src/app/(marketing)/:
src/app/(marketing)/about/page.tsx
src/app/(dashboard)/:
(dashboard) layout in src/app/(dashboard)/layout.tsx automatically wraps the page with the sidebar and authentication guard, so you do not need to add those yourself.
Dark mode
Dark mode is pre-configured using theclass strategy in tailwind.config.ts. When the dark class is present on the <html> element, Tailwind applies your .dark CSS variables and any dark: utility overrides in your components.
Shipfastai’s providers.tsx wraps the app in a QueryClientProvider, and you can add next-themes to manage theme toggling:
src/app/providers.tsx
useTheme hook:
src/components/shared/theme-toggle.tsx