This file defines expectations for humans and coding agents working in this repo.
ARGUS is a VPS-hosted, Dockerized, multi-service system. Changes should preserve deployability and operational clarity.
- Do not commit secrets.
- Never commit
.env, credential JSON, private keys, tokens.
- Never commit
- Assume production impact.
mastermay be deployed directly from VPS workflows.
- Prefer small, reviewable commits.
- Update docs when behavior changes.
- If infra/service flow changes, update
README.mdand/ordocs/.
- If infra/service flow changes, update
- Run quick validation before handoff.
- Lint/build where relevant, plus container sanity checks for infra changes.
Primary services in docker-compose.yml:
nginx(edge reverse proxy)argus-app(Next.js + feed route proxies)argus-api(Express APIs)postgis(timescaledb image)titiler(raster tiles)ingestor(data jobs)cloudflared(tunnel)
Route intent:
/->argus-app/api/feeds/*->argus-app/api/*->argus-api/tiles/*->titiler
argus-app/**-> frontend, Cesium UI, Next API routesargus-api/**-> backend APIs, analytics metadataingestor/**-> ingestion jobs + scheduler behaviornginx/**-> routing/edge behaviorcloudflared/**-> tunnel configdocker-compose*.yml-> service topology/runtime wiring
For cross-cutting changes, call out touched boundaries in commit messages.
Before committing, run what applies:
cd argus-app && npm run lintdocker compose configgit status --short
./scripts/safe-push-check.shConfirm no accidental files are staged (especially .env*, backups, credentials).
Recommended prefixes:
feat:new capabilityfix:bug fixchore:maintenance/refactor/no feature changedocs:documentation-onlyinfra:deployment/compose/nginx/tunnel changes
Examples:
feat: add RSS news aggregation endpoint and UI workspaceinfra: align titiler mount path with analytics tile URLs
Use from repo root:
docker compose up -d --build
docker compose ps
docker compose logs -f --tail=100Rebuild specific service:
docker compose up -d --build argus-appWhen implementing news aggregation:
- Keep AP/Reuters optional unless verified reliable/licensed RSS source is available.
- Start with stable feeds (BBC, Guardian, NPR, DW, Al Jazeera, HN, GDELT).
- Aggregate server-side, dedupe aggressively, and keep UI uncluttered.
- Do not overpack the existing left accordion; prefer workspace/tab model.
- Ignore local scratch:
.env.plugin,*.bak, temporary files. - If you discover exposed keys, notify maintainer and rotate immediately.
- Avoid destructive git commands unless explicitly requested.
If using Codex or Claude Code on this repo, follow this exact sequence:
- Sync first
git pull --rebase origin master
- Plan in plain text
- 3–7 bullet implementation plan before edits
- Implement in small commits
- keep commits scoped (UI, API, infra separated when possible)
- Run validation
- App/UI:
cd argus-app && npm run lint - Compose/infra change:
docker compose config
- App/UI:
- Check for secret leakage
- ensure
.env*, tokens, backup files are not staged
- ensure
- Handoff report
- include the template below verbatim
Required handoff format:
- Summary:
- Files changed:
- Validation:
- Risks/Follow-ups:
- Git status:
- Commit(s):
When reporting completed work, include:
- What changed (high-level)
- Files touched
- Validation run + result
- Any risks / follow-up items
- Git status (clean/dirty)
Keep handoffs concise and operational.