SoulPrompts is a SvelteKit application for publishing a curated character archive with a public storefront and a private owner CMS.
The public site handles discovery, character pages, membership access, legal pages, and lightweight onboarding. The dashboard handles drafts, publishing, Patreon gating, site copy, featured collections, and release history. Private releases stay server-side until they are meant to be seen.
@sveltejs/adapter-vercel for SSR deployments on Vercelnpm install
npm run dev
The app runs with an in-memory CMS fallback by default, so you can explore the site and dashboard locally without provisioning the database first.
Copy .env.example to .env and fill in the values you plan to use.
Core public settings:
PUBLIC_SITE_URLPUBLIC_MEMBERSHIP_URL or PUBLIC_PATREON_URLPUBLIC_BUTTONDOWN_EMBED_ENDPOINTPUBLIC_PLAUSIBLE_DOMAINPUBLIC_PLAUSIBLE_SRCOwner dashboard settings:
ADMIN_PASSWORD_HASHADMIN_SESSION_SECRETADMIN_SESSION_TTL_HOURSPersistence settings:
CMS_DATABASE_URLCMS_DATABASE_SSLCMS_ENABLE_IN_MEMORY_FALLBACKSUPABASE_URLSUPABASE_SERVICE_ROLE_KEYSUPABASE_STORAGE_BUCKETnpm run dev
npm run check
npm run test
npm run test:playwright
npm run build
npm run verify
npm run db:apply
npm run hash:admin
npm run verify runs the main quality gate: type checks, unit tests, build validation, and the build output check.
SoulPrompts is set up for deployment as its own Vercel project. The app uses server rendering, signed owner sessions, and CMS-backed content, so it should be deployed as an SSR app rather than a static export.
For a production setup:
.env.example.npm run db:apply.npm run hash:admin.src/
lib/
cms/ Shared CMS types and schemas
server/ Auth, storage, and CMS repositories
components/ Reusable UI
content/ Seed content and legacy source material still used at runtime
routes/
dashboard/ Owner CMS
catalog/ Public archive
characters/ Public character detail pages
vault/ Membership page
learn/ Public guide content
tests/
database/
scripts/