M Networks
My web studio, rebuilt: one hand-written stylesheet, and a contact form that tells you exactly what happened to your message.
The redesign is built and not launched yet: m-networks.net still serves the earlier design, shown at the end.
The product
M Networks is my one-person web studio: websites for businesses. m-networks.net is live with the earlier design. The redesign is built and tested, and leads with the launched work: GEVA Solutions, Flight Sim Support and Daybase.
The hard part
A studio site has to prove the work without inflating it. No testimonials it doesn’t have, no invented numbers, and a contact form that never leaves someone wondering whether their message arrived.
“Five answers, not two.”
m-networks.net README, contact form
How it works
Five answers, not two
The contact form reports sent, not sent, don’t know, in progress, or key conflict. Idempotency keys are pinned to a byte-identical copy of the message, it works without JavaScript through 303 redirects, and sending and admission have separate rate limits.
src/app/api/contact/route.ts, src/lib/rate-limit.ts
No framework for the look
No Tailwind and no component library. One stylesheet of 1,275 lines is the whole design system, and the only runtime dependencies are Next.js and React.
src/app/globals.css, package.json
Motion in CSS
The site screenshots inside each browser frame scroll themselves as the frame crosses the screen, with scroll-driven animations and no JavaScript. The pinned process steps pin only when they fit; otherwise they become a plain list.
globals.css, ProcessScroller.tsx
Tested like a product
102 tests across six files, plus a 1,165-line suite that drives a real Chrome against the production build, because “the checks above cannot see a scroller that skips its middle steps.”
npm test, scripts/browser-test.mjs, README






Facts, with sources
- 102
- tests, run again on 9 Oct 2026, all passing
- npm test
- 1,275
- lines of hand-written CSS: the whole design system
- src/app/globals.css
- 25
- routes prerendered at build
- next build
- 3
- runtime dependencies: next, react, react-dom
- package.json
Details
Built with
- Next.js 16
- React 19
- TypeScript
- Hand-written CSS
- Cloudflare Workers (OpenNext)
- Resend
- node:test
- Chrome DevTools Protocol
About these screens
- The redesign is built and not launched yet: m-networks.net still serves the earlier design, shown at the end.
- The code is in a private repository, so this page describes it at README level.