Appearance
Getting Started
Prerequisites
- Node.js 20+ dan pnpm 9+
- Cloudflare account dengan Workers dan Pages enabled
- Plunk account untuk email (magic link)
- Google OAuth credentials untuk Google login
Setup
1. Clone dan Install
bash
git clone <repo-url>
cd xprivate
pnpm install2. Environment Variables
Buat .dev.vars di root untuk local development:
bash
# Database
DATABASE_URL=<your-neon-connection-string>
# Auth
BETTER_AUTH_SECRET=<random-secret>
GOOGLE_CLIENT_ID=<your-google-client-id>
GOOGLE_CLIENT_SECRET=<your-google-client-secret>
# Email
PLUNK_API_KEY=<your-plunk-api-key>
PLUNK_FROM=XPrivate Education <noreply@xprivate.id>
# 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 schema (development/local)
pnpm db:push
# Apply migrations (production)
pnpm db:migrate4. 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 dev5. Deploy
bash
# Deploy API
cd apps/api
pnpm deploy
# Deploy Web
cd apps/web
pnpm deploy
# Deploy Docs
cd apps/docs
pnpm deployProject Structure
apps/
web/ # React + Vite frontend
api/ # oRPC API backend
docs/ # VitePress documentation (this site)
packages/
db/ # Postgres schema, Drizzle ORM, migrations
auth/ # better-auth config
email/ # Plunk email sender
storage/ # R2 client for uploads
shared/ # Types and utilitiesCommon Commands
| Command | Description |
|---|---|
pnpm install | Install all dependencies |
pnpm build | Build all packages and apps |
pnpm biome format --write . | Format all code |
pnpm biome check | Lint and format check |
pnpm db:generate | Generate Drizzle migrations |
pnpm db:migrate | Apply migrations |
Troubleshooting
worker-configuration.d.ts not found
File ini di-generate otomatis oleh wrangler types saat pnpm install. Kalau hilang:
bash
npx wrangler typesPostgres connection failed
Pastikan DATABASE_URL sudah benar di .dev.vars atau environment variables. Format connection string: postgresql://user:password@host/database.
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
- Baca Architecture untuk memahami arsitektur sistem.
- Baca Authentication untuk flow auth dan role system.
- Baca Database untuk schema dan konvensi.
- Lihat MVP Plan untuk roadmap pengembangan.