- Frontend: Cloudflare Pages (React SPA)
- Backend: Railway (Elysia/Bun API)
- Database: Turso (SQLite edge database)
- Sign up at turso.tech
- Install Turso CLI:
brew install tursodatabase/tap/turso turso auth login
- Create database:
turso db create stack-it turso db show stack-it --url # Copy the URL turso db tokens create stack-it # Copy the token
- Push schema:
cd backend TURSO_DATABASE_URL=libsql://your-db.turso.io TURSO_AUTH_TOKEN=your-token bunx prisma db push
-
Go to railway.app → New Project → Deploy from GitHub
-
Select your repo, set Root Directory to
backend -
Add environment variables:
Variable Value TURSO_DATABASE_URLlibsql://your-db.turso.ioTURSO_AUTH_TOKENYour Turso token JWT_SECRETGenerate secure random string CORS_ORIGINhttps://stack-it.pages.dev -
Railway auto-detects Bun and deploys
-
Copy your Railway URL (e.g.,
https://stack-it-backend.up.railway.app)
-
Go to Cloudflare Dashboard → Pages
-
Create project → Connect to Git → Select repo
-
Configure:
- Root directory:
frontend - Build command:
bun install && bun run build - Build output:
dist
- Root directory:
-
Add environment variable:
Variable Value VITE_API_URLYour Railway backend URL -
Deploy
TURSO_DATABASE_URL=libsql://your-db.turso.io
TURSO_AUTH_TOKEN=your-turso-token
JWT_SECRET=your-secure-secret
CORS_ORIGIN=https://stack-it.pages.dev
VITE_API_URL=https://your-backend.up.railway.app
# Backend
cd backend
bun install
bun run dev
# Frontend (separate terminal)
cd frontend
bun install
bun run devPages → Custom domains → Add domain
Settings → Domains → Add custom domain