Product-lab landing page for Smart Cloud Solutions FZ-LLC. Built as a Next.js static export, deployed to GitHub Pages.
Live: https://smartcloudsolutions.tech
- Framework: Next.js 14 (App Router) —
output: 'export' - Language: TypeScript
- Styling: Tailwind CSS 3 + shadcn/ui (button, badge, separator, tooltip)
- Fonts: Geist Sans + Geist Mono
- Icons: lucide-react
- Hosting: GitHub Pages → CNAME
smartcloudsolutions.tech
The visual direction (Product Lab, near-white tokens, sparse cool accent, proof
artifacts) and brand voice are documented in brand.md. Treat
that file as the source of truth for any color, type, or copy decision.
npm install
npm run dev # http://localhost:3000, or pass -- -p 4040Useful scripts:
npm run build # static export to ./out
npm run lint # next lint
npm run typecheck # tsc --noEmit
node scripts/generate-og.mjs # regenerate public/og.png from public/og.svgsrc/
├── app/
│ ├── layout.tsx # fonts, metadata, skip-link
│ ├── page.tsx # section composition only
│ └── globals.css # tokens + base styles + reduced-motion guard
├── components/
│ ├── ui/ # shadcn primitives
│ ├── sections/ # Hero, Capabilities, SelectedWork, etc.
│ └── … # layout primitives (Container, Nav, SiteFooter, Wordmark, …)
├── content/ # all copy lives here — edit without touching JSX
│ ├── pillars.ts # the three buyer-facing offers
│ ├── projects.ts # case-study rows + artifact metadata
│ ├── oss-stats.json # proof bar
│ └── operators.ts # About — Anmol + Rohit
└── lib/
├── site.ts # site-level constants (urls, email, booking)
└── utils.ts # cn() helper
To change copy, edit the file in src/content/. To change visual direction,
edit brand.md and src/app/globals.css together. To add a section, drop a
component into src/components/sections/ and reference it from page.tsx.
.github/workflows/deploy.yaml runs on every push to main:
npm cinpm run typechecknpm run lintnpm run build- writes
CNAMEand.nojekyllinto./out - publishes to the
gh-pagesbranch viapeaceiris/actions-gh-pages
The site is static — no API routes, no SSR, no middleware. Everything that
needs a server (booking, contact form) lives off-site (Cal.com, mailto:).
- Wire the real Cal.com URL into
src/lib/site.ts(bookingUrl). - Replace
hello@smartcloudsolutions.techwith the live address once mailbox is provisioned. - Optional: add real product screenshots or repo cards to the hero artifact wall as they become available.