No description
|
All checks were successful
ci/woodpecker/push/build Pipeline was successful
- Change Cache-Control from s-maxage=31536000 to max-age=0,must-revalidate for all HTML pages and sitemap (fixes stale content after settings change) - Remove Cloudflare PurgeURLs call since we're not caching HTML at CDN - Add Quicklink for client-side prefetching on public blog pages - Make main branch deploy automatic (remove manual trigger) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> |
||
|---|---|---|
| .woodpecker | ||
| internal | ||
| studio | ||
| .air.toml | ||
| .env.example | ||
| .gitignore | ||
| docker-compose.yml | ||
| Dockerfile | ||
| go.mod | ||
| go.sum | ||
| main.go | ||
| Makefile | ||
| MONETIZATION.md | ||
| README.md | ||
WriteKit - Local Development
Prerequisites
- Docker & Docker Compose
- GitHub OAuth App (for login)
Setup GitHub OAuth
- Go to https://github.com/settings/developers
- New OAuth App:
- Name:
WriteKit Local - Homepage:
http://writekit.lvh.me - Callback:
http://writekit.lvh.me/auth/github/callback
- Name:
- Copy Client ID and Secret
Run
# Set OAuth credentials
export GITHUB_CLIENT_ID=your_client_id
export GITHUB_CLIENT_SECRET=your_client_secret
# Start
docker compose up --build
Or create .env file:
GITHUB_CLIENT_ID=your_client_id
GITHUB_CLIENT_SECRET=your_client_secret
Access
- Platform: http://writekit.lvh.me
- Traefik dashboard: http://localhost:8080
- MinIO console: http://localhost:9001 (minioadmin/minioadmin)
Create a demo
curl -X POST http://writekit.lvh.me/api/demo
Returns subdomain like demo-abc123.writekit.lvh.me - works automatically, no hosts file needed.
Environment Variables
Required
| Variable | Description |
|---|---|
DATABASE_URL |
PostgreSQL connection string |
DOMAIN |
Base domain |
BASE_URL |
Full URL for OAuth callbacks |
SESSION_SECRET |
Cookie encryption (32+ chars) |
GITHUB_CLIENT_ID |
GitHub OAuth client ID |
GITHUB_CLIENT_SECRET |
GitHub OAuth secret |
Optional
| Variable | Description |
|---|---|
GOOGLE_CLIENT_ID/SECRET |
Google OAuth |
DISCORD_CLIENT_ID/SECRET |
Discord OAuth |
R2_* |
Cloudflare R2 storage |
IMAGINARY_URL |
Image processing service |
CLOUDFLARE_API_TOKEN/ZONE_ID |
Analytics |