From 86e997bc6cc3c8a8b2cb34784d0f792130a1e0e0 Mon Sep 17 00:00:00 2001 From: nokternol Date: Sun, 8 Mar 2026 21:08:03 +0000 Subject: [PATCH 1/2] chore: add dev:local script to run api+web in parallel without Docker Uses concurrently so both workspace dev servers start in a single terminal with labelled, coloured output (api=cyan, web=magenta) and clean Ctrl+C propagation. npm run dev (docker compose) is unchanged. Co-Authored-By: Claude Sonnet 4.6 --- package-lock.json | 75 +++++++++++++++++++++++++++++++++++++++++++++++ package.json | 10 +++++-- 2 files changed, 83 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index b41a884..4ed0c73 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "devDependencies": { "@biomejs/biome": "^1.9.0", "@sveltejs/vite-plugin-svelte": "^4.0.0", + "concurrently": "^9.2.1", "husky": "^9.1.7", "lint-staged": "^16.3.2" } @@ -4967,6 +4968,47 @@ "dev": true, "license": "MIT" }, + "node_modules/concurrently": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.2.1.tgz", + "integrity": "sha512-fsfrO0MxV64Znoy8/l1vVIjjHa29SZyyqPgQBwhiDcaW8wJc2W3XWVOGx4M3oJBnv/zdUZIIp1gDeS98GzP8Ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "4.1.2", + "rxjs": "7.8.2", + "shell-quote": "1.8.3", + "supports-color": "8.1.1", + "tree-kill": "1.2.2", + "yargs": "17.7.2" + }, + "bin": { + "conc": "dist/bin/concurrently.js", + "concurrently": "dist/bin/concurrently.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, "node_modules/cookie": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", @@ -8682,6 +8724,16 @@ "fsevents": "~2.3.2" } }, + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/sade": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", @@ -8834,6 +8886,19 @@ "node": ">=8" } }, + "node_modules/shell-quote": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", + "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/siginfo": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", @@ -9542,6 +9607,16 @@ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "license": "MIT" }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "license": "MIT", + "bin": { + "tree-kill": "cli.js" + } + }, "node_modules/ts-dedent": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", diff --git a/package.json b/package.json index 0deb86a..dc60f1b 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,12 @@ { "name": "minime", "private": true, - "workspaces": ["apps/*"], + "workspaces": [ + "apps/*" + ], "scripts": { "dev": "docker compose up", + "dev:local": "concurrently -n api,web -c cyan,magenta \"npm run dev -w apps/api\" \"npm run dev -w apps/web\"", "build": "docker compose build", "check": "bash scripts/check.sh", "prepare": "node -e \"require('fs').existsSync('.git') && require('child_process').execSync('husky', {stdio:'inherit'})\"", @@ -12,10 +15,13 @@ "devDependencies": { "@biomejs/biome": "^1.9.0", "@sveltejs/vite-plugin-svelte": "^4.0.0", + "concurrently": "^9.2.1", "husky": "^9.1.7", "lint-staged": "^16.3.2" }, "msw": { - "workerDirectory": ["apps/web/static"] + "workerDirectory": [ + "apps/web/static" + ] } } From 49420a7ebd367dd9ed97cb5df920877486ba17b5 Mon Sep 17 00:00:00 2001 From: nokternol Date: Mon, 9 Mar 2026 19:50:52 +0000 Subject: [PATCH 2/2] format package.json --- package.json | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index dc60f1b..9cb83b8 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,7 @@ { "name": "minime", "private": true, - "workspaces": [ - "apps/*" - ], + "workspaces": ["apps/*"], "scripts": { "dev": "docker compose up", "dev:local": "concurrently -n api,web -c cyan,magenta \"npm run dev -w apps/api\" \"npm run dev -w apps/web\"", @@ -20,8 +18,6 @@ "lint-staged": "^16.3.2" }, "msw": { - "workerDirectory": [ - "apps/web/static" - ] + "workerDirectory": ["apps/web/static"] } }