SvelteKit 2 + Svelte 5 + TypeScript site. SQLite via Drizzle. Gitea OAuth for authoring (RnD org-gated). Pure SVG + CSS DNA helix on landing. What lands - Landing hero with animated two-strand SVG helix + tagline - /projects + /projects/[slug] (markdown body, dashboard embed allowlist) - /posts + /posts/[slug] - Auth-gated /projects/new + /posts/new forms - Gitea OAuth flow (state, code exchange, org-membership check, sessions) - Sliding-window cookie sessions (SHA-256 hashed token storage) - Dockerfile + docker-compose with named-volume SQLite - Idempotent seed (EVOLV + HELIX projects, welcome post) Stack notes - Tailwind v3 (Node 18 compat; v4 needs Node 20+) - drizzle-orm 0.45+ (patched, no SQL-identifier escape vuln) - marked for markdown; iframe embeds gated by DASHBOARD_ALLOWED_HOSTS Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
25 lines
724 B
Plaintext
25 lines
724 B
Plaintext
# HELIX — environment configuration
|
|
#
|
|
# Copy to .env and fill in the secrets. See README.md "Gitea OAuth setup".
|
|
|
|
# --- Server ---
|
|
PORT=3000
|
|
ORIGIN=http://localhost:3000
|
|
|
|
# --- Database ---
|
|
# Path is relative to the process cwd (or absolute).
|
|
DATABASE_URL=./helix.db
|
|
|
|
# --- Gitea OAuth ---
|
|
# Create an OAuth2 application at:
|
|
# https://gitea.wbd-rd.nl/-/user/settings/applications
|
|
# Redirect URI must match GITEA_REDIRECT_URI exactly.
|
|
GITEA_BASE_URL=https://gitea.wbd-rd.nl
|
|
GITEA_CLIENT_ID=
|
|
GITEA_CLIENT_SECRET=
|
|
GITEA_REDIRECT_URI=http://localhost:3000/auth/gitea/callback
|
|
|
|
# Optional: restrict login to members of a specific Gitea organisation.
|
|
# Leave empty to allow any authenticated Gitea user.
|
|
GITEA_ALLOWED_ORG=RnD
|