From 34eb47b05679d09d055f1c71b2e551641ea88395 Mon Sep 17 00:00:00 2001 From: Sidney Nemzer Date: Tue, 17 Feb 2026 21:55:07 -0500 Subject: [PATCH 1/4] chore(db): :technologist: use docker-compose to run database in dev This change allows developers to run `yarn dev` and, assuming docker is installed, the database will start before running the api servers --- packages/db/docker-compose.yaml | 19 +++++++++++++++++++ packages/db/package.json | 2 ++ turbo.json | 27 ++++++++++++++++++++++++--- 3 files changed, 45 insertions(+), 3 deletions(-) create mode 100644 packages/db/docker-compose.yaml diff --git a/packages/db/docker-compose.yaml b/packages/db/docker-compose.yaml new file mode 100644 index 00000000..c1561876 --- /dev/null +++ b/packages/db/docker-compose.yaml @@ -0,0 +1,19 @@ +services: + postgres: + image: postgres:18 + environment: + - POSTGRES_PASSWORD=password + - POSTGRES_USER=website + - POSTGRES_DATABASE=database + ports: + - '5432:5432' + + wait-for-postgres: + image: postgres:18 + environment: + - POSTGRES_PASSWORD=password + - POSTGRES_USER=website + - POSTGRES_DATABASE=database + depends_on: + - postgres + command: sh -c "until pg_isready -h postgres -U $$POSTGRES_USER; do echo waiting for postgres; sleep 2; done;" diff --git a/packages/db/package.json b/packages/db/package.json index c65c20ea..f4dafb48 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -14,6 +14,8 @@ "db:migrate": "prisma migrate deploy", "db:studio": "prisma studio", "db:pull": "prisma db pull", + "up": "docker compose up -d", + "wait": "docker compose up wait-for-postgres", "env:copy": "cp .env.example .env", "build": "tsc" }, diff --git a/turbo.json b/turbo.json index b5575d57..af1d01e8 100644 --- a/turbo.json +++ b/turbo.json @@ -1,7 +1,7 @@ { - "$schema": "https://turbo.build/schema.json", - "ui": "tui", - "tasks": { + "$schema": "https://turbo.build/schema.json", + "ui": "tui", + "tasks": { "build": { "dependsOn": ["db:generate", "^build"], "inputs": ["$TURBO_DEFAULT$", ".env*"], @@ -20,6 +20,27 @@ "persistent": true, "cache": false }, + "api#dev": { + "persistent": true, + "dependsOn": ["@repo/db#db:migrate"], + "cache": false + }, + "api-v2#dev": { + "persistent": true, + "dependsOn": ["@repo/db#db:migrate"], + "cache": false + }, + "@repo/db#db:migrate": { + "dependsOn": ["@repo/db#wait"], + "cache": false + }, + "@repo/db#wait": { + "dependsOn": ["@repo/db#up"], + "cache": false + }, + "@repo/db#up": { + "cache": false + }, "lint": { "dependsOn": ["^lint"] }, From 282abf867c1829fc3888b114393df72cec3bc336 Mon Sep 17 00:00:00 2001 From: Sidney Nemzer Date: Tue, 24 Feb 2026 20:33:05 -0500 Subject: [PATCH 2/4] add dev:frontend script --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 9831e10a..50b24c3e 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "clean": "turbo clean", "start": "turbo start", "dev": "turbo dev", + "dev:frontend": "turbo dev --filter=frontend...", "lint": "turbo lint", "prettier": "turbo prettier --ui=stream", "db:generate": "turbo db:generate", From fb24aebc70576d26078042847ecdf4829f813c3b Mon Sep 17 00:00:00 2001 From: Sidney Nemzer Date: Mon, 9 Mar 2026 22:35:23 -0400 Subject: [PATCH 3/4] chore(mono): rename db:* scripts to *:db to match build and dev --- README.md | 2 +- package.json | 8 ++++---- packages/db/package.json | 8 ++++---- turbo.json | 12 ++++++------ 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index eaae4a9e..9ac74f32 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,7 @@ To install all dependencies, run: ```bash yarn install # and optionally -yarn db:generate +yarn generate:db ``` Now, copy the example `.env` file and change all its options: diff --git a/package.json b/package.json index 50b24c3e..93282ba4 100644 --- a/package.json +++ b/package.json @@ -18,10 +18,10 @@ "dev:frontend": "turbo dev --filter=frontend...", "lint": "turbo lint", "prettier": "turbo prettier --ui=stream", - "db:generate": "turbo db:generate", - "db:studio": "yarn workspace @repo/db db:studio", - "db:migrate": "yarn workspace api db:migrate", - "git:pull": "git pull && yarn install && yarn run db:generate", + "generate:db": "turbo generate:db", + "studio:db": "yarn workspace @repo/db studio:db", + "migrate:db": "yarn workspace api migrate:db", + "git:pull": "git pull && yarn install && yarn run generate:db", "ws": "yarn workspace" }, "devDependencies": { diff --git a/packages/db/package.json b/packages/db/package.json index f4dafb48..660217ac 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -10,10 +10,10 @@ "main": "dist/index.js", "types": "dist/index.d.ts", "scripts": { - "db:generate": "prisma generate", - "db:migrate": "prisma migrate deploy", - "db:studio": "prisma studio", - "db:pull": "prisma db pull", + "generate:db": "prisma generate", + "migrate:db": "prisma migrate deploy", + "studio:db": "prisma studio", + "pull:db": "prisma db pull", "up": "docker compose up -d", "wait": "docker compose up wait-for-postgres", "env:copy": "cp .env.example .env", diff --git a/turbo.json b/turbo.json index af1d01e8..35c2ec57 100644 --- a/turbo.json +++ b/turbo.json @@ -3,7 +3,7 @@ "ui": "tui", "tasks": { "build": { - "dependsOn": ["db:generate", "^build"], + "dependsOn": ["generate:db", "^build"], "inputs": ["$TURBO_DEFAULT$", ".env*"], "outputs": [".next/**", "!.next/cache/**", "dist/**"] }, @@ -22,15 +22,15 @@ }, "api#dev": { "persistent": true, - "dependsOn": ["@repo/db#db:migrate"], + "dependsOn": ["@repo/db#migrate:db"], "cache": false }, "api-v2#dev": { "persistent": true, - "dependsOn": ["@repo/db#db:migrate"], + "dependsOn": ["@repo/db#migrate:db"], "cache": false }, - "@repo/db#db:migrate": { + "@repo/db#migrate:db": { "dependsOn": ["@repo/db#wait"], "cache": false }, @@ -47,10 +47,10 @@ "prettier": { "dependsOn": ["^prettier"] }, - "db:generate": { + "generate:db": { "cache": false }, - "db:studio": { + "studio:db": { "persistent": true, "cache": false } From b64ff5a914036300a04996ec50099deb358a8926 Mon Sep 17 00:00:00 2001 From: Sidney Nemzer Date: Mon, 9 Mar 2026 22:37:10 -0400 Subject: [PATCH 4/4] chore(mono): remove scopes from scripts in turbo.json --- turbo.json | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/turbo.json b/turbo.json index 35c2ec57..394a8cec 100644 --- a/turbo.json +++ b/turbo.json @@ -18,27 +18,18 @@ }, "dev": { "persistent": true, + "dependsOn": ["migrate:db"], "cache": false }, - "api#dev": { - "persistent": true, - "dependsOn": ["@repo/db#migrate:db"], - "cache": false - }, - "api-v2#dev": { - "persistent": true, - "dependsOn": ["@repo/db#migrate:db"], - "cache": false - }, - "@repo/db#migrate:db": { - "dependsOn": ["@repo/db#wait"], + "migrate:db": { + "dependsOn": ["wait"], "cache": false }, - "@repo/db#wait": { - "dependsOn": ["@repo/db#up"], + "wait": { + "dependsOn": ["up"], "cache": false }, - "@repo/db#up": { + "up": { "cache": false }, "lint": {