mirror of
https://github.com/tiennm99/rplace.git
synced 2026-10-15 16:15:10 +00:00
add project documentation and detailed README
- README: features, architecture diagram, setup guide, API reference, configuration table, project structure - docs/system-architecture.md: data flow, storage design, rate limiting - docs/code-standards.md: conventions, project layout, API format - docs/deployment-guide.md: step-by-step CF Workers + Upstash deploy
This commit is contained in:
1 parent
078ccaa70e
commit
fc49de154a
4 files changed
+361
-1
No files matched your search
@@ -0,0 +1,74 @@
|
||||
# Deployment Guide
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Node.js 18+
|
||||
- Cloudflare account (free tier)
|
||||
- Upstash Redis database (free tier)
|
||||
- `wrangler` CLI (installed as dev dependency)
|
||||
|
||||
## Step 1: Create Upstash Redis Database
|
||||
|
||||
1. Go to [console.upstash.com](https://console.upstash.com/)
|
||||
2. Create a new Redis database
|
||||
3. Choose a region close to your users
|
||||
4. Copy the **REST URL** and **REST Token**
|
||||
|
||||
## Step 2: Configure Secrets
|
||||
|
||||
```bash
|
||||
# Set secrets in Cloudflare (not in code)
|
||||
npx wrangler secret put UPSTASH_REDIS_REST_URL
|
||||
npx wrangler secret put UPSTASH_REDIS_REST_TOKEN
|
||||
```
|
||||
|
||||
For local development, create `.dev.vars`:
|
||||
|
||||
```
|
||||
UPSTASH_REDIS_REST_URL=https://your-url.upstash.io
|
||||
UPSTASH_REDIS_REST_TOKEN=your-token
|
||||
```
|
||||
|
||||
## Step 3: Deploy
|
||||
|
||||
```bash
|
||||
npm run deploy
|
||||
```
|
||||
|
||||
This runs `vite build` (compiles Svelte → dist/) then `wrangler deploy` (uploads Worker + static assets).
|
||||
|
||||
## Step 4: Verify
|
||||
|
||||
1. Visit your Worker URL (e.g., `https://rplace.your-subdomain.workers.dev`)
|
||||
2. Canvas should load (empty/dark on first visit)
|
||||
3. Select a color, click to place a pixel
|
||||
4. Open a second browser tab — pixel should appear via WebSocket
|
||||
|
||||
## Custom Domain
|
||||
|
||||
```bash
|
||||
# Add a custom domain via Cloudflare dashboard or:
|
||||
npx wrangler domains add rplace.yourdomain.com
|
||||
```
|
||||
|
||||
## Monitoring
|
||||
|
||||
- **Cloudflare dashboard**: Worker analytics, request logs, DO metrics
|
||||
- **Upstash console**: Redis command count, memory usage, latency
|
||||
|
||||
## Cost Estimates (Free Tier)
|
||||
|
||||
| Resource | Free Limit | rplace Usage |
|
||||
|---|---|---|
|
||||
| CF Workers | 100K requests/day | Canvas reads + pixel placements |
|
||||
| CF Durable Objects | Free with Workers | WebSocket connections |
|
||||
| Upstash Redis | 10K commands/day | BITFIELD reads/writes + rate limiting |
|
||||
|
||||
For hobby traffic (< few hundred users/day), free tiers are sufficient. Upstash pay-as-you-go ($0.2/100K commands) is the first thing to hit limits.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
- **Canvas loads empty**: Check Upstash credentials in secrets
|
||||
- **Pixels don't persist**: Verify BITFIELD support — test with `redis-cli BITFIELD canvas SET u5 #0 1`
|
||||
- **WebSocket not connecting**: Ensure Durable Object migration ran (check `wrangler.json` migrations)
|
||||
- **Rate limiting not working**: Verify `redis.eval()` works on your Upstash tier (Lua scripting)
|
||||
Reference in new issue
Block a user