Stack
- Framework
- Next.js 15 (App Router) + React 18
- Language
- TypeScript (strict)
- CSS
- Tailwind v4 with @theme inline
- Fonts
- Inter · JetBrains Mono · Space Grotesk (logo only), all via next/font
- Forms
- Hand-rolled validation, Web3Forms relay via /api/contact
- Tests
- Vitest + @testing-library/react · 41 tests, TDD-first
- Hosting
- Cloudflare Pages
- Analytics
- None today. Privacy-friendly Plausible planned, same-origin proxied.
- CMS
- None. Content edits live in TypeScript with a pull request.
Decisions
The site is hand-tuned static JSX, not a templated marketing framework. Every section is a server component until proven otherwise; client islands earn their cost. The CSP is strict on purpose: third-party scripts and iframes are forbidden until they justify a same-origin proxy.
Content lives in source files rather than a CMS because there is one author and ten content surfaces. The TDD discipline applied to the rest of STC's code applies here too — voice and structure changes ride pull requests with tests.
The logo is a custom SVG, not a font glyph, so the T can be drawn as two pure mint rectangles independent of any typeface. Favicons and apple-touch icons render from the same SVG via headless Chrome at build time.
What this site does not do
- No popups, no exit-intent modals, no chat widget, no cookie banner.
- No third-party trackers. The contact form uses a server-side relay so no cross-origin POST leaves the browser.
- No autoplay video, no scroll-jacking, no smooth-scroll hijacks.
- No animations on every section — exactly one motion moment per page, gated by prefers-reduced-motion.
Updates
Substantive changes are summarized as commit titles in the project's repository. Specific dependency bumps and audit findings live in those commit bodies.