📚 Drizzle ORM - lightweight ORM compatible with Cloudflare D1 and drizzle-kit to manage schema migrations
👤 OAuth Lucia - Google oAuth sign-in and/or email signup via Resend mailer api, with 4 email templates: reset password, change email, verify email, welcome. Settings and admin panel for users.
☁️ Cloudflare for Svelte - serverless autoscaling API and D1 database, great hosting platform with free tier
🖼️ SvelteKit - full stack interface and API routes framework. Many developers prefer Svelte over React.
🎨 Tailwind CSS + Bits UI + shadcn-svelte - popular UI components, with lucide icons and demos like Sidebar and Magic UI Animations
📝 formsnap + sveltekit-superforms with zod validation and rate-limiting in server memory
🌲 pino - error logs
✅ Vitest - unit testing UI
⭐ Extras & Alternatives: List of Svelte Libraries, Material UI, SkeletonUI, Flowbite, Icon sets
📦 Easy to switch in alternatives: Such as running on AWS, GCE, Azure instead of Cloudflare. Change Drizzle setup to connect to any db like Supabase, and add popular platform APIs with Lucia.
- Install prerequisites Node.js or Bun
curl -fsSL https://bun.sh/install | bash
. Optional: Setup shell with dev tools like nvim, fish, system info with Server-Shell-Setup - Clone to localhost or server
git clone https://github.com/vtempest/svelte-docs-starter
.
Optional: Press.
when on the Github repo page to fork and run in Github Workspaces. - CD to project directory
cd svelte-docs-starter
. - Install dependencies
bun install
. mv .env.example .env ; mv wrangler.example.toml wrangler.toml
and set the domain and API keys in.env
.- Auth providers, get id/secret from Google.
- Set OAuth origin
http://localhost
andhttp://localhost:5173
on local orhttps://domain.com
on server. - Set redirect
http://localhost:5173/auth/oauth/google/callback
orhttps://api.domain.com/auth/oauth/google/callback
. - Optional: For email auth, get API from Resend mailer and verify domain.
- Log in with your Cloudflare account by running:
bunx wrangler login
. - Create your D1 database via dashboard or with
bunx wrangler d1 create serverless-docs-db
or your custom db name. - Copy the console output database_name and database_id.
- Go to
wrangler.toml
and changedatabase_name
anddatabase_id
. - Go to
drizzle.config.ts
and change db name indbName
. - Go to
package.json
and change db name indb:push:*
anddb:backup:prod
. - Generate and migrate the schema to dev or prod db:
bun run db:migrate; bun run db:push:dev; bun run db:push:prod
. - Develop on local with
bun dev
. - Deploy to prod with
bun serve
. - Domain: Cloudflare Dashboard -> Workers and Pages -> [your worker name] -> Settings
- Add-to-Home on Mobile Web: Design logo and generate icons for with PWA Asset Generator or Favicon.io
- User Analytics: Get Google Analytics ID from Google Analytics or SimpleAnalytics and add to
app.html
. - Email Forwarding: Setup Cloudflare Email Routing and GMail's Send From Verification