A web app for filling out Templates, backed by Astro + Preact + Drizzle + SQLite.
| Layer | Tech | What it does |
|---|---|---|
| Frontend | Astro pages + Preact components | SSR-rendered pages with interactive UI islands |
| Actions | Astro Actions | Public "API" at /_actions/*, will be used for saving Checks |
| Middleware | Astro Middleware | Rate limiting & production gating on all Action calls |
| User Data | Drizzle ORM + SQLite | Persistent Check storage |
For implementation details, conventions, and development commands see AGENTS.md.
- Template: The "form" presented to users (e.g. "KinkCheck Classic"). Stored as Content Collections in YAML files. Each revision lives in a separate
templates/[template_id]/[template_revision].yamlfile. - Check: What a user fills out on the site — currently a nested list of ratings, soon stored in SQLite. Each Check references its Template by
idandrevision, allowing it to be presented as it was filled out, or upgraded to a newer revision.
npm install
npm run dev| Branch | URL |
|---|---|
daddy (main/prod) |
KinkCheck.Top |
bottom (beta) |
Bottom.KinkCheck.Top |
Two environment variables are passed by CI (not needed locally):
| Variable | Purpose |
|---|---|
GIT_SHA |
Current commit hash (only used for the footer) |
GIT_REF |
Branch name (also used for production gating in middleware) |
Issue tracker and pull requests are open — improvements, bug fixes, and feature suggestions are welcome.