- Solid.js with SolidStart
- Tailwind CSS (with/via clsx) (cheatsheet)
- TypeScript (sigh)
- ESLint
- shadcn-solid
- Kobalte (kinda like Radix UI for Solid.js)
- solid-i18n
- Cloudflare
- Prefer a normal root class for each component and nested CSS for child styling.
- For child classes scoped beneath a root selector, use short underscore-prefixed names like
._panel,._trigger, or._day. - Avoid repeating the full component name on nested child classes unless the selector must work outside the component root, such as intentionally portaled content.
This project now uses the Supabase CLI for local database development and schema migrations.
supabase/migrations/is the source of truth for schema changes moving forward.- The legacy
database/folder is being kept temporarily as historical reference only. - Do not make new schema changes in the hosted Supabase dashboard.
- Do not add new schema changes to
database/.
pnpm db:startstarts the local Supabase stack.pnpm db:stopstops the local Supabase stack.pnpm db:statusshows local URLs, keys, and connection details.pnpm db:resetrebuilds the local database from migrations and seed data.pnpm db:pullpulls the linked remote schema into a baseline migration.pnpm db:push:localapplies pending migrations to the local database.pnpm db:push:remoteapplies pending migrations to the linked remote project.pnpm db:diff -- -f <name>creates a migration from local schema changes.pnpm db:migration:new -- <name>creates a blank migration file.pnpm db:migration:listlists migrations and applied status.pnpm db:typesgenerates TypeScript database types from the local database intosrc/types/database.types.ts.pnpm db:bootstrap:superuser -- --email you@example.com --password your-password --display-name "Your Name"creates or updates a local auth user and promotes it to app rolesuperuser.pnpm db:bootstrap:visitorscreates the local fixture accounts, including authored-content accounts and visitor accounts with shared PIN123456.pnpm db:bootstrap:fixturescreates the local fixture accounts, then seeds authored blips, tags, and visitor reactions.pnpm db:reset:fixturesrebuilds the local DB from migrations andseed.sql, then bootstraps the authored and visitor fixture data.pnpm devstarts the app dev server only.pnpm dev:localis currently the same aspnpm dev.pnpm dev:appalso starts only the app dev server.
- The initial baseline migration still needs to be pulled from the current production project after
supabase loginandsupabase link. - Generated database types are optional but useful for typed
supabase-jsqueries, inserts, updates, RPC calls, and views. pnpm db:bootstrap:superuseris intended for local development only and depends on the local Supabase stack already running.supabase/seed.sqlnow seeds auth-independent baseline data only, currently the production-derived tag set.- Fixture auth accounts are created through the admin API, and authored blips are seeded afterward so they can use valid app-generated blip IDs and admin/superuser owners.