Page:
Getting-Started
No results
1
Getting-Started
xpltd_admin edited this page 2026-04-03 22:49:50 -06:00
Getting Started
| Meta | Value |
|---|---|
| Repo | xpltdco/fractafrag |
| Page | Getting-Started |
| Audience | developers, newcomers |
| Last Updated | 2026-04-04 |
| Status | current |
Prerequisites
| Requirement | Version | Purpose |
|---|---|---|
| Docker | >= 24.0 | Container runtime |
| Docker Compose | >= 2.20 | Multi-service orchestration |
| Git | Any | Clone repository |
Everything runs in Docker — no local Python, Node.js, or PostgreSQL needed.
Optional (for local development outside Docker)
| Requirement | Version | Purpose |
|---|---|---|
| Python | >= 3.12 | API development |
| Node.js | >= 20 | Frontend development |
| PostgreSQL | 16 | Database (or use docker-compose.dev.yml) |
| Redis | 7 | Cache/queue (or use docker-compose.dev.yml) |
Quick Start (Docker)
1. Clone the repository
git clone https://git.xpltd.co/xpltdco/fractafrag.git
cd fractafrag
2. Create environment file
cp .env.example .env
Edit .env and set at minimum:
DB_PASS— PostgreSQL password (choose any secure password)JWT_SECRET— 64 hex characters for JWT signing (generate withopenssl rand -hex 32)
3. Start all services
make up
# or: docker compose up -d
This builds and starts all 8 services. First build takes a few minutes (Chromium install in renderer).
4. Access the application
| Service | URL |
|---|---|
| Frontend | http://localhost |
| API Docs (Swagger) | http://localhost/api/docs |
| API Docs (ReDoc) | http://localhost/api/redoc |
| Health Check | http://localhost/health |
The database schema is automatically created from db/init.sql on first startup.
Development Setup (Hot Reload)
The docker-compose.override.yml file is automatically picked up and enables:
- API: Volume mount +
--reloadflag (changes toservices/api/auto-restart) - Frontend: Vite dev server with HMR (instant browser refresh)
- MCP: Volume mount for live changes
- All services: Exposed ports for direct access
# Start with dev overrides (automatic)
docker compose up -d
# Or start only data stores and run API/frontend locally
docker compose -f docker-compose.dev.yml up -d
cd services/api && pip install -e ".[dev]" && uvicorn app.main:app --reload
cd services/frontend && npm install && npm run dev
Environment Variables
See the full Configuration page. The essentials:
| Variable | Required | Purpose |
|---|---|---|
DB_PASS |
Yes | PostgreSQL password |
JWT_SECRET |
Yes | JWT signing key (64 hex chars) |
TURNSTILE_SITE_KEY |
For CAPTCHA | Cloudflare Turnstile public key |
TURNSTILE_SECRET |
For CAPTCHA | Cloudflare Turnstile server key |
STRIPE_SECRET_KEY |
For payments | Stripe API key |
ANTHROPIC_API_KEY |
For AI gen | Claude API key |
OPENAI_API_KEY |
For AI gen | GPT API key |
Common Commands (Makefile)
| Command | Purpose |
|---|---|
make up |
Start all services |
make down |
Stop all services |
make build |
Rebuild all Docker images |
make logs |
Stream all service logs |
make test |
Run API test suite |
make api-shell |
Bash shell inside API container |
make worker-shell |
Bash shell inside worker container |
make db-shell |
PostgreSQL shell (psql -U fracta -d fractafrag) |
Service Ports (Development)
| Service | Port | Direct URL |
|---|---|---|
| nginx | 80 | http://localhost |
| api | 8000 | http://localhost:8000 |
| frontend | 5173 | http://localhost:5173 |
| mcp | 3200 | http://localhost:3200 |
| renderer | 3100 | http://localhost:3100 |
| postgres | 5432 | psql -h localhost -U fracta -d fractafrag |
| redis | 6379 | redis-cli -h localhost |
Troubleshooting
Renderer fails to start / Chromium crashes
- Ensure
shm_size: '512mb'is set in docker-compose.yml for the renderer service - Check renderer logs:
docker compose logs renderer - The renderer needs software GL (SwiftShader) — hardware GPU passthrough is not required
Database connection errors
- Wait for PostgreSQL to be healthy:
docker compose psshould showhealthyfor postgres - The API depends on postgres being healthy before starting
- Check postgres logs:
docker compose logs postgres
Port conflicts
- The default setup uses port 80 (nginx). If something else uses port 80, edit
docker-compose.ymlto change the nginx port mapping (e.g.,8080:80)
Redis memory warnings
- Redis is configured with 256MB max and LRU eviction. This is sufficient for development.
- If you see memory warnings in production, increase
--maxmemoryin the redis command
CAPTCHA not working in development
- Turnstile verification is skipped if
TURNSTILE_SECRETis not set in.env - For local dev, you can leave it blank
Frontend blank page
- Check that nginx is routing correctly:
docker compose logs nginx - In dev mode, the frontend runs on Vite's dev server (port 5173)
- Make sure
VITE_API_URLis set correctly (default:http://localhost/api)