From 803f95b26c9558977756c05eecc04513d084224a Mon Sep 17 00:00:00 2001 From: Heitor Rosa Date: Fri, 17 Apr 2026 22:21:27 -0300 Subject: [PATCH 1/3] chore: add typecheck to package.json --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index ccf2bfa..336e2ff 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "build": "nest build", "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", + "typecheck": "tsc --noEmit", "migrate": "node dist/src/tools/migrate.js", "start": "nest start", "start:debug": "nest start --debug --watch", From 8ee59e476e29acd0234a674cf804d08de81d654e Mon Sep 17 00:00:00 2001 From: Heitor Rosa Date: Fri, 17 Apr 2026 22:24:14 -0300 Subject: [PATCH 2/3] chore: use pnpm to run typecheck and lint instead of taskfile --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d84f63e..74b4aea 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -33,10 +33,10 @@ jobs: repo-token: ${{ secrets.GITHUB_TOKEN }} - name: Lint - run: task lint + run: pnpm lint - name: Typecheck - run: task typecheck + run: pnpm typecheck - name: Build run: pnpm build From 9ca02a312e13bf92a5a17fb38884725194afbdb7 Mon Sep 17 00:00:00 2001 From: Heitor Rosa Date: Fri, 17 Apr 2026 22:24:45 -0300 Subject: [PATCH 3/3] refactor: simplify taskfile environment and docker compose tasks --- .github/workflows/ci.yml | 2 +- Taskfile.yml | 150 ++++++++++----------------------------- 2 files changed, 37 insertions(+), 115 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 74b4aea..a9c7da0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -42,4 +42,4 @@ jobs: run: pnpm build - name: Integration Tests - run: task ci-test + run: task test diff --git a/Taskfile.yml b/Taskfile.yml index f397595..88c52c9 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -4,9 +4,6 @@ dotenv: - .env.{{.ENV | default "test"}} vars: - DEV_COMPOSE: docker/docker-compose.dev.yml - PROD_COMPOSE: docker/docker-compose.prod.yml - TEST_COMPOSE: docker/docker-compose.test.yml TREE_IGNORE: node_modules|.git|dist|*.env* NODE_VERSION: sh: cat .node-version @@ -17,150 +14,75 @@ env: tasks: # ───────────────────────────────────────────── - # Environment + # Core helpers # ───────────────────────────────────────────── + compose: + desc: Run docker compose for an environment + cmds: + - docker compose --env-file .env.{{.ENV}} -f docker/docker-compose.{{.ENV}}.yml {{.CMD}} + check-env: - dotenv: - - .env.{{.ENV | default "test"}} + desc: Ensure required env vars exist cmds: - | if [ -z "$DATABASE_URL" ]; then - echo "❌ DATABASE_URL not defined in .env.{{.ENV | default "test"}}" + echo "❌ DATABASE_URL missing in .env.{{.ENV}}" exit 1 fi migrate: deps: [check-env] - dotenv: - - .env.{{.ENV | default "test"}} cmds: - pnpm migrate # ───────────────────────────────────────────── - # Helpers + # Docker environments # ───────────────────────────────────────────── - compose: - dotenv: - - .env.{{.ENV | default "test"}} + up: + desc: Start environment containers cmds: - - docker compose -f {{.FILE}} {{.CMD}} - - # ───────────────────────────────────────────── - # Quality - # ───────────────────────────────────────────── + - task compose ENV={{.ENV | default "test"}} CMD="up -d {{.ARGS}}" - lint: + down: + desc: Stop environment containers cmds: - - pnpm lint + - task compose ENV={{.ENV | default "test"}} CMD="down {{.ARGS}}" - typecheck: + stop: + desc: Stop containers without removing cmds: - - pnpm tsc --noEmit - - # ───────────────────────────────────────────── - # CI - # ───────────────────────────────────────────── + - task compose ENV={{.ENV | default "test"}} CMD="stop" - ci-test: - vars: - ENV: test - dotenv: - - .env.test + start: + desc: Start existing containers cmds: - - task test-reset - - task test-up - - task migrate - - | - pnpm jest || (task test-down && exit 1) - - task test-down + - task compose ENV={{.ENV | default "test"}} CMD="start" - test-watch: - vars: - ENV: test - dotenv: - - .env.test + reset: + desc: Reset environment (remove volumes) cmds: - - pnpm jest {{.FILES}} --runInBand + - task compose ENV={{.ENV | default "test"}} CMD="down -v" # ───────────────────────────────────────────── - # DEV + # Testing # ───────────────────────────────────────────── - dev-up: - vars: - ENV: dev - cmds: - - echo "🚧 Starting DEV Postgres" - - task compose FILE={{.DEV_COMPOSE}} CMD="up -d" - - dev-stop: - vars: - ENV: dev + test: + desc: Run test suite cmds: - - echo "⏹️ Stopping DEV containers" - - task compose FILE={{.DEV_COMPOSE}} CMD="stop" - - dev-start: - vars: - ENV: dev - cmds: - - echo "▶️ Starting DEV containers" - - task compose FILE={{.DEV_COMPOSE}} CMD="start" - - dev-down: - vars: - ENV: dev - cmds: - - echo "⬇️ Removing DEV containers (keeping volumes)" - - task compose FILE={{.DEV_COMPOSE}} CMD="down" - - dev-reset: - vars: - ENV: dev - cmds: - - echo "💥 Resetting DEV environment (containers + volumes)" - - task compose FILE={{.DEV_COMPOSE}} CMD="down -v" - - - # ───────────────────────────────────────────── - # PROD - # ───────────────────────────────────────────── - - prod-up: - vars: - ENV: prod - cmds: - - echo "🚀 Starting PROD Postgres" - - task compose FILE={{.PROD_COMPOSE}} CMD="up -d" - - - # ───────────────────────────────────────────── - # TEST - # ───────────────────────────────────────────── - - test-up: - vars: - ENV: test - cmds: - - echo "🧪 Starting TEST Postgres" - - task compose FILE={{.TEST_COMPOSE}} CMD="up -d --wait" - - test-down: - vars: - ENV: test - cmds: - - echo "⬇️ Removing TEST containers (keeping volumes)" - - task compose FILE={{.TEST_COMPOSE}} CMD="down" + - task reset ENV=test + - task up ENV=test ARGS="--wait" + - task migrate ENV=test + - | + pnpm jest || (task down ENV=test && exit 1) + - task down ENV=test - test-reset: - vars: - ENV: test + test-watch: + desc: Run tests in watch mode cmds: - - echo "💥 Resetting TEST environment (containers + volumes)" - - task compose FILE={{.TEST_COMPOSE}} CMD="down -v" - + - pnpm jest {{.FILES}} --runInBand # ───────────────────────────────────────────── # Utils