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>
32 lines
813 B
JavaScript
32 lines
813 B
JavaScript
/** @type {import('tailwindcss').Config} */
|
|
export default {
|
|
content: ['./src/**/*.{html,js,svelte,ts}'],
|
|
theme: {
|
|
extend: {
|
|
colors: {
|
|
helix: {
|
|
area: '#0f52a5',
|
|
process: '#0c99d9',
|
|
unit: '#50a8d9',
|
|
equipment: '#86bbdd',
|
|
control: '#a9daee',
|
|
bg: '#07111d',
|
|
'bg-2': '#0c1c30',
|
|
'bg-3': '#122842',
|
|
border: '#1f3a5e',
|
|
ink: '#e6f1fb',
|
|
'ink-dim': '#8fa6b8',
|
|
'ink-faint': '#5b7388',
|
|
accent: '#4dd0c2',
|
|
'accent-2': '#c084fc'
|
|
}
|
|
},
|
|
fontFamily: {
|
|
sans: ['Inter', 'system-ui', '-apple-system', 'Segoe UI', 'sans-serif'],
|
|
mono: ['JetBrains Mono', 'ui-monospace', 'SFMono-Regular', 'monospace']
|
|
}
|
|
}
|
|
},
|
|
plugins: []
|
|
};
|