AKCreationsHub

Craft & technology

How this site is built, and why.

What is used, and where

TechnologyWhat it does hereWhere
HTML5Landmarks, headings and labelled forms, so pages work with screen readers and search engines.every page
CSSCascade layers, container queries, :has(), color-mix(), view transitions between pages, and light and dark themes.assets/site.css
JavaScriptSmall scripts and modules: the gallery and quick search, the planner and admin pages, and five sample engines (booking, menu, timetable, catalog, estimator). No libraries.assets/*.js
SVGIllustrations that stay sharp at any size.the sample pages
JSON-LDStructured data, so search engines know the business name, address and hours.home page, bespoke sample
Pages FunctionsThe API behind the forms: validation, spam checks, rate limiting and storage.functions/
D1 (SQLite)Stores briefs, rate-limit counters and an audit log.migrations/
TurnstileA privacy-friendly human check on the brief form.plan page
Cloudflare AccessSigns the owner in to the admin page. The API checks the token again.admin page
GitHub ActionsTests, code scanning and automatic backups on every change..github/workflows
Node.jsBuilds every sample site, and the registry the hub reads, from small JSON files. Adding a sample means adding one file.tools/build.mjs
Design stylesTen design trends (bento grid, minimalism, neumorphism, claymorphism, skeuomorphism, glassmorphism, liquid glass, brutalism, maximalism, spatial UI) built as small sets of CSS variables. Any mix can be switched on, and the site uses a hybrid of all ten. See the Design lab.assets/skins.css, assets/lab.js
Shortcuts and gesturesKeyboard shortcuts that follow the Mac or PC key, trackpad pinch and two-finger swipes, touch swipes, pinch and press-and-hold, and a switch to turn the gestures off. Press ? on any page for the full list.kit/akc.js, assets/hub.js
Browser APIsView Transitions for the gallery, dialog for quick search and lightboxes, the History API for shareable filters, Pointer and Wheel events for gestures, the Vibration API for a small tap on supported phones, Web Share, Blob downloads for calendar files, and local storage for saved items, carts and your design choice.assets/hub.js, kit/

Security, privacy and updates

Every request to the API is checked on the server. Database queries use bound parameters, the brief form has a human check and a rate limit, and the admin area refuses anyone without a valid Cloudflare Access token. Secrets live in Cloudflare's settings, not in the repository.

The form asks only for what we need to reply. IP addresses are hashed with a secret before they are used and are not stored with your brief. Briefs are deleted after 180 days. The privacy page has the details.

Changes go through GitHub, where the tests run. With branch protection on, a change cannot go live until they pass, and a backup of the previous version is tagged automatically.

Demos

Container query

Drag the corner to resize. The card changes layout by its own width, not the screen's.

Sample card

I switch to a side-by-side layout when my container is wide.

:has() selector

This panel styles itself when the checkbox is on, with no JavaScript.

oklch() and color-mix()

Your browser

Which of these features this device supports right now.