This commit captures the current state before implementing the composable monorepo template system. Key changes included: Infrastructure: - Add CockroachDB provisioner adapter for database provisioning - Add Redis provisioner adapter for cache provisioning - Add build events system with PostgreSQL storage - Add WebSocket endpoint for real-time build progress Code agent improvements: - Fix Claude Code adapter to use default allowed tools instead of dangerously-skip-permissions - Add context-aware stream closing for cancellation support - Improve parser tests for edge cases Build system: - Add build event constants and metrics - Remove deprecated git_operations.go (replaced by pod_git_operations.go) - Add rollback logic for multi-step provisioning operations Documentation: - Add composable-monorepo feature documentation - Add DNS/Cloudflare service documentation - Update deployment and troubleshooting guides Cookbooks: - Add fullstack-app cookbook - Refactor landing-test with shared library Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2.0 KiB
2.0 KiB
Infrastructure
This project has provisioned database and cache access.
Database (CockroachDB)
PostgreSQL-compatible distributed SQL database.
Connection
| Environment | Variable |
|---|---|
| Production | DATABASE_URL |
| Staging | DATABASE_URL_STAGING |
Usage
Go (sqlx):
import "github.com/jmoiron/sqlx"
import _ "github.com/lib/pq"
db, err := sqlx.Connect("postgres", os.Getenv("DATABASE_URL"))
Node.js (pg):
import pg from 'pg';
const pool = new pg.Pool({ connectionString: process.env.DATABASE_URL });
Python (psycopg2):
import psycopg2
conn = psycopg2.connect(os.environ['DATABASE_URL'])
Schema Migrations
Use any PostgreSQL migration tool. Recommended:
- Go:
golang-migrate/migrate - Node.js:
node-pg-migrate - Python:
alembic
Cache (Redis)
Redis cache with project-isolated key prefix.
Connection
| Environment | Variable |
|---|---|
| Production | REDIS_URL |
| Staging | REDIS_URL_STAGING |
| Key Prefix | REDIS_PREFIX |
Important: Always prefix your keys with REDIS_PREFIX to ensure isolation.
Usage
Go (go-redis):
import "github.com/redis/go-redis/v9"
opt, _ := redis.ParseURL(os.Getenv("REDIS_URL"))
client := redis.NewClient(opt)
prefix := os.Getenv("REDIS_PREFIX")
client.Set(ctx, prefix+"users:123", data, time.Hour)
Node.js (ioredis):
import Redis from 'ioredis';
const redis = new Redis(process.env.REDIS_URL);
const prefix = process.env.REDIS_PREFIX;
await redis.set(`${prefix}session:abc`, JSON.stringify(data), 'EX', 3600);
Environment Variables
These are automatically injected into your deployment:
| Variable | Description |
|---|---|
DATABASE_URL |
CockroachDB production connection |
DATABASE_URL_STAGING |
CockroachDB staging connection |
REDIS_URL |
Redis production connection |
REDIS_URL_STAGING |
Redis staging connection |
REDIS_PREFIX |
Key prefix for Redis isolation |