Production-grade marketing site for TrustCode System Limited. Next.js 14 (App Router), TypeScript, Tailwind CSS, Framer Motion.
Software you can stake your business on.
- Next.js 14 App Router, TypeScript, Tailwind CSS
- Framer Motion — restrained scroll-reveals only
- Zod — shared client/server form validation
- Resend — contact email delivery (optional; gated by env)
- Fonts: Clash Display + Switzer (Fontshare), JetBrains Mono (
next/font)
pnpm install
cp .env.example .env.local # optional — for live email delivery
pnpm dev # http://localhost:3000pnpm build && pnpm start # production build
pnpm typecheck # tsc --noEmitAll site content is typed and lives in src/content — non-technical
edits are one-file changes:
| File | What it controls |
|---|---|
site.ts |
Brand, nav, contact details, stats |
team.ts |
The four founders, bios, pillars |
services.ts |
The seven services + engagement models |
portfolio.ts |
All case studies (the /work grid + detail pages) |
process.ts |
The five delivery steps + comms |
values.ts |
Origin story + values |
insights.ts |
Blog/insight cards |
Defined in globals.css and
tailwind.config.ts. Palette: --ink, --paper,
--blueprint, --verified (live/success only), --slate, --grid. Section
eyebrows use the / label file-path motif. The hero's Deploy Log
(deploy-log.tsx) is the signature element.
Dark mode is class-based with an inline no-flash init script in the root layout.
Portfolio cards render a branded, deterministic placeholder thumbnail. To use
real screenshots, drop public/work/<slug>.png and swap
project-thumb.tsx for next/image.
POST /api/contact — Zod validation, honeypot, in-memory rate limiting, and
Resend delivery (set RESEND_API_KEY). Without a key it logs submissions to the
server console so local dev works out of the box.
Per-page metadata, Organization + Person + Service JSON-LD, dynamic OG image
(opengraph-image.tsx), sitemap.xml, and robots.txt are all wired up.
Deployed on Vercel at trustcodesystem.tech. Set the env vars from
.env.example in the Vercel project settings.