{ "_comment": "Copy this file to zconfig.json and fill in your values. zconfig.json is gitignored — never commit it.", "ec2": { "ip": "YOUR_SERVER_IP", "user": "YOUR_SSH_USER", "pemKey": "/home/youruser/.ssh/YourKey.pem", "stackRoot": "/home/YOUR_SSH_USER/stack" }, "paths": { "temp": "/tmp/zscripts", "backupsLocal": "/home/youruser/backups/projects", "backupsEc2": "/home/youruser/backups/ec2", "scriptsRoot": "/home/youruser/zscripts/bash", "oneDriveBackups": "" }, "ztokens": { "_comment": "Optional. Where each run's token-usage stats (tokens.jsonl) are recorded. Omit to use ~/.ztokens/data.", "dataDir": "/home/youruser/.ztokens/data" }, "projects": { "_comment": "Rename these keys to your own project names — the key IS the command argument: zstart pyapp, zdeploy viteapp, zbackup nextapp. Add as many projects as you like. Keys starting with _ are ignored.", "pyapp": { "label": "My Python App", "kind": "python", "localRoot": "/home/youruser/code/pyapp", "startModule": "pyapp.main", "install": "-e .", "ports": { "dev": 8080 }, "domain": "pyapp.yourdomain.com", "start": { "_comment": "Optional zstart pre-steps: gitPull runs 'git pull --ff-only' first; env sets variables for the server process.", "gitPull": true, "env": { "MYAPP_DEBUG": "1" } }, "db": { "user": "pyapp_user", "name": "pyapp_db" }, "remote": { "path": "/home/YOUR_SSH_USER/stack/pyapp", "composeDir": "/home/YOUR_SSH_USER/stack/pyapp/docker", "appService": "app" }, "deploy": { "zipName": "PyAppDeploy.zip", "gitPull": true, "exclude": ["docs"] } }, "viteapp": { "label": "My Vite Site", "kind": "vite", "localRoot": "/home/youruser/code/viteapp", "ports": { "dev": 5173 }, "domain": "www.yourdomain.com", "remote": { "path": "/home/YOUR_SSH_USER/stack/viteapp", "containerName": "viteapp" }, "deploy": { "zipName": "ViteAppDeploy.zip" } }, "nextapp": { "label": "My Next.js App", "kind": "nextjs", "localRoot": "/home/youruser/code/nextapp", "ports": { "dev": 4173, "prod": 3000 }, "domain": "app.yourdomain.com", "migrations": "prisma", "db": { "user": "nextapp_user", "name": "nextapp_db" }, "remote": { "path": "/home/YOUR_SSH_USER/stack/nextapp", "appService": "web" }, "deploy": { "zipName": "NextAppDeploy.zip" } }, "edge": { "label": "Edge Proxy", "kind": "edge", "localRoot": "/home/youruser/code/edge", "proxyContainer": "edge-proxy", "certsSource": "/etc/letsencrypt", "remote": { "path": "/home/YOUR_SSH_USER/stack/edge" } } } }