api-client/docs/superpowers/plans/2026-05-06-coolify-aio-cleanup.md
2026-05-06 09:50:56 +02:00

6 KiB

Coolify AIO Cleanup Implementation Plan

For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (- [ ]) syntax for tracking.

Goal: Reduce this Hoppscotch fork to the packages and deployment files required for Coolify AIO.

Architecture: Keep the existing AIO Docker architecture and remove code outside that deployment path. The workspace remains a pnpm monorepo, but pnpm-workspace.yaml, root scripts, and compose services are narrowed to the retained packages.

Tech Stack: pnpm workspaces, Docker Compose, multi-stage Dockerfile, NestJS backend, Vue/Vite frontends, Prisma, Caddy.


Task 1: Remove Non-AIO Packages

Files:

  • Delete: packages/hoppscotch-desktop

  • Delete: packages/hoppscotch-agent

  • Delete: packages/hoppscotch-cli

  • Delete: packages/hoppscotch-relay

  • Step 1: Delete package directories

Run:

rm -rf packages/hoppscotch-desktop packages/hoppscotch-agent packages/hoppscotch-cli packages/hoppscotch-relay

Expected: directories are absent from find packages -maxdepth 1 -mindepth 1 -type d.

  • Step 2: Verify retained package list

Run:

find packages -maxdepth 1 -mindepth 1 -type d -printf '%f\n' | sort

Expected output contains only:

codemirror-lang-graphql
hoppscotch-backend
hoppscotch-common
hoppscotch-data
hoppscotch-js-sandbox
hoppscotch-kernel
hoppscotch-selfhost-web
hoppscotch-sh-admin

Task 2: Narrow Workspace And Root Scripts

Files:

  • Modify: pnpm-workspace.yaml

  • Modify: package.json

  • Step 1: Replace workspace glob

Set pnpm-workspace.yaml to:

packages:
  - 'packages/codemirror-lang-graphql'
  - 'packages/hoppscotch-backend'
  - 'packages/hoppscotch-common'
  - 'packages/hoppscotch-data'
  - 'packages/hoppscotch-js-sandbox'
  - 'packages/hoppscotch-kernel'
  - 'packages/hoppscotch-selfhost-web'
  - 'packages/hoppscotch-sh-admin'
  • Step 2: Simplify root scripts

Keep scripts that make sense for the retained AIO deployment:

{
  "dev": "pnpm -r do-dev",
  "gen-gql": "cross-env GQL_SCHEMA_EMIT_LOCATION='../../../gql-gen/backend-schema.gql' pnpm -r generate-gql-sdl",
  "generate": "pnpm -r do-build-prod",
  "start": "http-server packages/hoppscotch-selfhost-web/dist -p 3000",
  "lint": "pnpm -r do-lint",
  "typecheck": "pnpm -r do-typecheck",
  "lintfix": "pnpm -r do-lintfix",
  "pre-commit": "pnpm -r do-lint && pnpm -r do-typecheck",
  "test": "pnpm -r do-test"
}

Remove generate-ui, because it is not a Coolify deployment concern.

Task 3: Simplify Docker Compose For Coolify AIO

Files:

  • Modify: docker-compose.yml

  • Delete: docker-compose.deploy.yml

  • Step 1: Replace compose file with AIO deployment

Keep only hoppscotch-db and hoppscotch-aio. Preserve the AIO command:

services:
  hoppscotch-db:
    image: postgres:15
    user: postgres
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-testpass}
      POSTGRES_DB: ${POSTGRES_DB:-hoppscotch}
    volumes:
      - hoppscotch-db:/var/lib/postgresql/data
    healthcheck:
      test:
        [
          "CMD-SHELL",
          "sh -c 'pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}'",
        ]
      interval: 5s
      timeout: 5s
      retries: 10

  hoppscotch-aio:
    container_name: hoppscotch-aio
    restart: unless-stopped
    build:
      dockerfile: prod.Dockerfile
      context: .
      target: aio
    environment:
      DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD:-testpass}@hoppscotch-db:5432/${POSTGRES_DB:-hoppscotch}
    env_file:
      - ./.env
    depends_on:
      hoppscotch-db:
        condition: service_healthy
    command:
      [
        "sh",
        "-c",
        "pnpm exec prisma migrate deploy && node /usr/src/app/aio_run.mjs",
      ]
    ports:
      - "3000:3000"
      - "3100:3100"
      - "3170:3170"
      - "3200:3200"
      - "3080:80"

volumes:
  hoppscotch-db:
  • Step 2: Delete internal deploy compose

Run:

rm -f docker-compose.deploy.yml

Expected: test ! -f docker-compose.deploy.yml exits with status 0.

Task 4: Remove Non-Coolify Root Files And Update Docs

Files:

  • Delete: firebase.json

  • Delete: firestore.indexes.json

  • Delete: firestore.rules

  • Delete: netlify.toml

  • Delete: CODEOWNERS

  • Delete: CODE_OF_CONDUCT.md

  • Delete: CONTRIBUTING.md

  • Delete: SECURITY.md

  • Delete: TRANSLATIONS.md

  • Modify: README.md

  • Modify: .dockerignore

  • Step 1: Delete unused root files

Run:

rm -f firebase.json firestore.indexes.json firestore.rules netlify.toml CODEOWNERS CODE_OF_CONDUCT.md CONTRIBUTING.md SECURITY.md TRANSLATIONS.md
  • Step 2: Replace README with Coolify-focused content

Use a short README covering local compose and Coolify variables.

  • Step 3: Keep Docker context lean

Update .dockerignore so it excludes local files, build outputs, package test artifacts, docs, and removed platform files while keeping source and lockfiles.

Task 5: Validate And Commit

Files:

  • Verify all modified files

  • Step 1: Check references to removed packages

Run:

rg -n "hoppscotch-(desktop|agent|cli|relay)|@hoppscotch/cli|docker-compose.deploy|firebase|netlify" .

Expected: no deployment-relevant references remain. Historical references in lockfile may remain until pnpm install updates the lockfile.

  • Step 2: Validate compose syntax

Run:

docker compose config

Expected: command exits 0 and prints a normalized compose config.

  • Step 3: Update lockfile if possible

Run:

pnpm install --lockfile-only

Expected: command exits 0 and removes deleted packages from pnpm-lock.yaml.

  • Step 4: Commit

Run:

git add -A
git add -f docs/superpowers/specs/2026-05-06-coolify-aio-cleanup-design.md docs/superpowers/plans/2026-05-06-coolify-aio-cleanup.md
git commit -m "chore: trim repo for coolify aio"