Skip to content

Getting Started

Prerequisites

  • Node.js 20+ dan pnpm 9+
  • Cloudflare account dengan Workers dan Pages enabled
  • Resend account untuk email (magic link)
  • Google OAuth credentials untuk Google login

Setup

1. Clone dan Install

bash
git clone <repo-url>
cd xprivate
pnpm install

2. Environment Variables

Buat .dev.vars di root untuk local development:

bash
# Database
DB=<your-d1-database-binding>

# Auth
BETTER_AUTH_SECRET=<random-secret>
GOOGLE_CLIENT_ID=<your-google-client-id>
GOOGLE_CLIENT_SECRET=<your-google-client-secret>

# Email
RESEND_API_KEY=<your-resend-api-key>

# R2 Storage
STORAGE_BUCKET=<your-r2-bucket-name>

Untuk production, set secrets via Cloudflare dashboard atau wrangler secret put.

3. Database Setup

bash
# Generate migrations
cd packages/db
pnpm db:generate

# Apply migrations (local)
pnpm db:migrate:local

# Apply migrations (production)
pnpm db:migrate:prod

4. Run Development

bash
# API (Cloudflare Worker local)
cd apps/api
pnpm dev

# Web (Vite dev server)
cd apps/web
pnpm dev

# Docs (VitePress dev server)
cd apps/docs
pnpm dev

5. Deploy

bash
# Deploy API
cd apps/api
pnpm deploy

# Deploy Web
cd apps/web
pnpm deploy

# Deploy Docs
cd apps/docs
pnpm deploy

Project Structure

apps/
  web/          # React + Vite frontend
  api/          # oRPC API backend
  docs/         # VitePress documentation (this site)
packages/
  db/           # D1 schema, Drizzle ORM, migrations
  auth/         # better-auth config
  email/        # Resend email sender
  storage/      # R2 client for uploads
  shared/       # Types and utilities

Common Commands

CommandDescription
pnpm installInstall all dependencies
pnpm buildBuild all packages and apps
pnpm biome format --write .Format all code
pnpm biome checkLint and format check
pnpm db:generateGenerate Drizzle migrations
pnpm db:migrateApply migrations

Troubleshooting

worker-configuration.d.ts not found

File ini di-generate otomatis oleh wrangler types saat pnpm install. Kalau hilang:

bash
npx wrangler types

D1 migration failed

Pastikan database binding sudah benar di wrangler.jsonc dan .dev.vars.

Auth callback error

Pastikan Google OAuth redirect URI sudah di-set di Google Console:

  • Local: http://localhost:8788/api/auth/callback/google
  • Production: https://<your-domain>/api/auth/callback/google

Next Steps

Released under the MIT License.