A modern template for building full-stack web applications using SvelteKit and Cloudflare Workers, with integrated backend API routes and Cloudflare services.
src/
├── lib/
│ ├── components/ # Reusable Svelte components
│ ├── stores/ # Svelte stores for state management
│ └── server/ # Server-only utilities
├── routes/
│ ├── api/ # API endpoints (+server.ts files)
│ └── */ # Page routes (+page.svelte files)
└── hooks.server.ts # Server middleware
Install dependencies:
npm install
Start development server:
./build.sh --dev-start
Visit http://localhost:5173
Build for production:
./build.sh
Deploy to Cloudflare:
./build.sh --deploy-dev # Development
./build.sh --deploy-prod # Production
Create a +page.svelte
file in src/routes/
:
<!-- src/routes/about/+page.svelte -->
<h1>About Page</h1>
<p>This page is available at /about</p>
Create a +server.ts
file in src/routes/api/
:
// src/routes/api/users/+server.ts
import { json } from '@sveltejs/kit';
export async function GET({ platform }) {
const db = platform?.env?.DB;
// Use Cloudflare services here
return json({ users: [] });
}
Access Cloudflare bindings in API routes via platform.env
:
// D1 Database
const db = platform.env.DB;
const result = await db.prepare("SELECT * FROM users").all();
// R2 Storage
const bucket = platform.env.BUCKET;
await bucket.put('file.txt', data);
// KV Storage
const kv = platform.env.KV;
await kv.put('key', 'value');
Configure your Cloudflare services:
# D1 Database
[[d1_databases]]
binding = "DB"
database_name = "your-db"
database_id = "your-id"
# R2 Bucket
[[r2_buckets]]
binding = "BUCKET"
bucket_name = "your-bucket"
# KV Namespace
[[kv_namespaces]]
binding = "KV"
id = "your-kv-id"
./build.sh --dev-start # Start dev server
./build.sh --dev-stop # Stop dev server
./build.sh --dev-restart # Restart dev server
./build.sh --dev-logs # View server logs
./build.sh --dev-status # Check server status
./build.sh # Build the application
./build.sh --update-changelog # Update changelog from GitHub
./build.sh --deploy-dev # Build and deploy to development
./build.sh --deploy-prod # Build and deploy to production
+page.svelte
files for routes+server.ts
files with HTTP method exports+layout.svelte
for shared UIplatform.env
to access Cloudflare servicesapp.d.ts