The marketing site for Vertotech, built with Next.js 15 (App Router), TypeScript, and Tailwind CSS.
npm install
npm run devVisit http://localhost:3000.
npm run build
npm run startAll routes are statically prerendered.
The fastest path to a live URL. Vercel auto-deploys this branch on every push.
One-time setup (≈ 2 minutes):
- Go to https://vercel.com/new
- Click Import Git Repository and authorize Vercel for your GitHub account if you haven't already.
- Select
digitalcrest01/vertotech02. - Vercel auto-detects Next.js — leave all defaults (framework: Next.js,
build:
next build, output:.next). - Click Deploy.
After the first deploy:
- The main
ProductionURL deploys frommain(e.g.vertotech-web.vercel.app). - Every push to
claude/redesign-website-w4vzk(or any other branch) gets its own preview URL automatically, posted as a GitHub deployment status on the branch. That's the "see it live in real time" loop. - To use the custom domain
vertotech.io: Project → Settings → Domains → add the domain and follow the DNS instructions Vercel shows.
vercel.json in the repo pins the framework and adds security headers
(HSTS, X-Frame-Options, Permissions-Policy, etc.).
app/ # App Router pages, layout, metadata, sitemap, robots, OG image
layout.tsx # Root layout (header, footer, global decoration)
page.tsx # Home
services/ # Services catalog
industries/ # Industry verticals
training/ # Training programs
about/ # About / values
contact/ # Contact form + channels
not-found.tsx # 404
sitemap.ts # Generated sitemap.xml
robots.ts # Generated robots.txt
icon.tsx # Favicon (generated)
opengraph-image.tsx # OG share image (generated)
components/ # Shared UI primitives (Header, Footer, Hero, ServiceCard, …)
lib/
site.ts # Site-wide config: name, nav, contact info
services.ts # Services catalog (single source of truth)
- Nav, contact info, tagline:
lib/site.ts - Services catalog:
lib/services.ts - Industries, training tracks, values, principles: inline at the top of the respective page file. Each is a small array — easy to extend.
- Colors / typography:
tailwind.config.tsandapp/globals.css.
-
The contact form is a Next.js Server Action at
app/contact/actions.ts. It tries delivery channels in order:- Resend — if
RESEND_API_KEYis set, sends a transactional email toCONTACT_TO_EMAIL(default:enquiries@vertotech.io). - Webhook — if
CONTACT_WEBHOOK_URLis set, POSTs JSON (works with Slack incoming webhooks, Zapier, n8n, etc.). - Console log — in development only, prints the payload. In production with neither channel configured, returns a friendly error.
See
.env.examplefor the full list. In Vercel, add the variables under Project → Settings → Environment Variables. - Resend — if
-
The form includes a hidden honeypot field (
company_url) to filter trivial bot submissions. -
Logo is an inline SVG wordmark; swap in a brand asset by editing
components/Logo.tsx.