pnpm run restart-deps

This commit is contained in:
Konstantin Wohlwend 2024-09-07 18:21:11 -07:00
parent 57a33b2dd6
commit eb51c4d63c
5 changed files with 88 additions and 19 deletions

View File

@ -101,13 +101,7 @@ This is for you if you want to contribute to the Stack project or run the Stack
Pre-populated .env files for the setup below are available and used by default in `.env.development` in each of the packages. You should copy all the `.env.development` files to `.env.local` in the respective packages for local development.
In a terminal, start the dependencies (Postgres and Inbucket) as Docker containers:
```sh
docker compose -f dependencies.compose.yaml up
```
Then open a new terminal:
In a new terminal:
```sh
pnpm install
@ -115,12 +109,10 @@ pnpm install
# Run build to build everything once
pnpm run build
# initialize the database and seed it with some data
pnpm prisma db push
pnpm prisma db seed
# Run code generation (repeat this after eg. changing the Prisma schema). This is part of the build script, but faster
pnpm run codegen
# reset & start the dependencies (DB, Inbucket, etc.) as Docker containers, seeding the DB with the Prisma schema
pnpm run restart-deps
# pnpm run start-deps
# pnpm run stop-deps
# Start the dev server
pnpm run dev

View File

@ -7,11 +7,14 @@
"typecheck": "tsc --noEmit",
"with-env": "dotenv -c development --",
"with-env:prod": "dotenv -c --",
"dev": "concurrently -k \"next dev --port 8102\" \"pnpm run watch-docs\" \"pnpm run prisma-studio\"",
"dev": "concurrently -n \"dev,codegen,prisma-studio\" -k \"next dev --port 8102\" \"pnpm run codegen:watch\" \"pnpm run prisma-studio\"",
"build": "pnpm run codegen && next build",
"analyze-bundle": "ANALYZE_BUNDLE=1 pnpm run build",
"start": "next start --port 8102",
"codegen": "pnpm run prisma generate && pnpm run generate-docs",
"codegen-prisma": "pnpm run prisma generate",
"codegen-prisma:watch": "pnpm run prisma generate --watch",
"codegen": "pnpm run codegen-prisma && pnpm run generate-docs",
"codegen:watch": "concurrently -n \"prisma,docs\" -k \"pnpm run codegen-prisma:watch\" \"pnpm run watch-docs\"",
"psql-inner": "psql $STACK_DATABASE_CONNECTION_STRING",
"psql": "pnpm run with-env pnpm run psql-inner",
"prisma": "pnpm run with-env prisma",
@ -59,6 +62,7 @@
"yup": "^1.4.0"
},
"devDependencies": {
"concurrently": "^8.2.2",
"@types/node": "^20.8.10",
"@types/nodemailer": "^6.4.14",
"@types/react": "^18.2.66",

View File

@ -1,5 +1,6 @@
services:
# ================= stack =================
# ================= PostgreSQL =================
db:
image: postgres:latest
@ -7,20 +8,22 @@ services:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: password
POSTGRES_DB: stackframe
POSTGRES_DELAY: ${POSTGRES_DELAY:-0}
POSTGRES_DELAY_MS: ${POSTGRES_DELAY_MS:-0}
ports:
- 5432:5432
volumes:
- postgres-data:/var/lib/postgresql/data
entrypoint: ["sh", "-c", "
if [ $POSTGRES_DELAY -gt 0 ]; then
if [ $POSTGRES_DELAY_MS -gt 0 ]; then
apt-get update && apt-get install -y iproute2 && \
tc qdisc add dev eth0 root netem delay ${POSTGRES_DELAY}ms;
tc qdisc add dev eth0 root netem delay ${POSTGRES_DELAY_MS}ms;
fi;
exec docker-entrypoint.sh postgres"]
cap_add:
- NET_ADMIN
# ================= Inbucket =================
inbucket:
image: inbucket/inbucket:latest
ports:
@ -30,6 +33,8 @@ services:
volumes:
- inbucket-data:/data
# ================= Jaeger =================
jaeger:
image: jaegertracing/all-in-one:latest
environment:

View File

@ -12,6 +12,12 @@
"build:demo": "only-allow pnpm && turbo run build --filter=demo-app...",
"clean": "only-allow pnpm && turbo run clean && rimraf --glob **/.next && rimraf --glob **/.turbo && rimraf .turbo && rimraf --glob **/node_modules",
"codegen": "only-allow pnpm && turbo run codegen",
"deps-compose": "docker compose -f dependencies.compose.yaml",
"stop-deps": "pnpm run deps-compose kill && pnpm run deps-compose down -v",
"init-db": "pnpm run prisma db push && pnpm run prisma db seed",
"start-deps:no-delay": "pnpm run deps-compose up --detach && sleep 5 && pnpm run init-db && echo \"\\nDependencies started in the background as Docker containers. 'pnpm run stop-deps' to stop them\"n",
"start-deps": "POSTGRES_DELAY_MS=${POSTGRES_DELAY_MS:-20} pnpm run start-deps:no-delay",
"restart-deps": "pnpm run stop-deps && pnpm run start-deps",
"psql": "only-allow pnpm && pnpm run --filter=@stackframe/stack-backend psql",
"prisma": "only-allow pnpm && pnpm run --filter=@stackframe/stack-backend prisma",
"fern": "only-allow pnpm && pnpm run --filter=@stackframe/docs fern",
@ -30,6 +36,7 @@
},
"devDependencies": {
"@changesets/cli": "^2.27.1",
"wait-on": "^8.0.0",
"@testing-library/react": "^15.0.2",
"@types/node": "^20.8.10",
"@types/supertest": "^6.0.2",

View File

@ -77,6 +77,9 @@ importers:
vitest:
specifier: ^1.5.0
version: 1.6.0(@types/node@20.14.2)(jsdom@24.1.0)(terser@5.31.1)
wait-on:
specifier: ^8.0.0
version: 8.0.0
apps/backend:
dependencies:
@ -186,6 +189,9 @@ importers:
'@types/react':
specifier: ^18.2.66
version: 18.3.3
concurrently:
specifier: ^8.2.2
version: 8.2.2
glob:
specifier: ^10.4.1
version: 10.4.1
@ -1849,6 +1855,12 @@ packages:
'@floating-ui/utils@0.2.2':
resolution: {integrity: sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==}
'@hapi/hoek@9.3.0':
resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==}
'@hapi/topo@5.1.0':
resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==}
'@hookform/resolvers@3.6.0':
resolution: {integrity: sha512-UBcpyOX3+RR+dNnqBd0lchXpoL8p4xC21XP8H6Meb8uve5Br1GCnmg0PcBoKKqPKgGu9GHQ/oygcmPrQhetwqw==}
peerDependencies:
@ -3721,6 +3733,15 @@ packages:
resolution: {integrity: sha512-x0PYIMWcsTauqxgl7vWUY6sANl+XGKtx7DCVnnY7aOIIlIna0jChTAPANTfA2QrK+VK+4I/4JxatCEZBnXh3Og==}
engines: {node: '>= 8'}
'@sideway/address@4.1.5':
resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==}
'@sideway/formula@3.0.1':
resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==}
'@sideway/pinpoint@2.0.0':
resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==}
'@sinclair/typebox@0.27.8':
resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
@ -6283,6 +6304,9 @@ packages:
resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==}
hasBin: true
joi@17.13.3:
resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==}
jose@4.15.5:
resolution: {integrity: sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg==}
@ -8682,6 +8706,11 @@ packages:
resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==}
engines: {node: '>=18'}
wait-on@8.0.0:
resolution: {integrity: sha512-fNE5SXinLr2Bt7cJvjvLg2PcXfqznlqRvtE3f8AqYdRZ9BhE+XpsCp1mwQbRoO7s1q7uhAuCw0Ro3mG/KdZjEw==}
engines: {node: '>=12.0.0'}
hasBin: true
warning@4.0.3:
resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==}
@ -9746,6 +9775,12 @@ snapshots:
'@floating-ui/utils@0.2.2': {}
'@hapi/hoek@9.3.0': {}
'@hapi/topo@5.1.0':
dependencies:
'@hapi/hoek': 9.3.0
'@hookform/resolvers@3.6.0(react-hook-form@7.52.0(react@18.3.1))':
dependencies:
react-hook-form: 7.52.0(react@18.3.1)
@ -11900,6 +11935,14 @@ snapshots:
- encoding
- supports-color
'@sideway/address@4.1.5':
dependencies:
'@hapi/hoek': 9.3.0
'@sideway/formula@3.0.1': {}
'@sideway/pinpoint@2.0.0': {}
'@sinclair/typebox@0.27.8': {}
'@sindresorhus/is@5.6.0': {}
@ -14919,6 +14962,14 @@ snapshots:
jiti@1.21.6: {}
joi@17.13.3:
dependencies:
'@hapi/hoek': 9.3.0
'@hapi/topo': 5.1.0
'@sideway/address': 4.1.5
'@sideway/formula': 3.0.1
'@sideway/pinpoint': 2.0.0
jose@4.15.5: {}
jose@5.4.0: {}
@ -18026,6 +18077,16 @@ snapshots:
dependencies:
xml-name-validator: 5.0.0
wait-on@8.0.0:
dependencies:
axios: 1.7.4
joi: 17.13.3
lodash: 4.17.21
minimist: 1.2.8
rxjs: 7.8.1
transitivePeerDependencies:
- debug
warning@4.0.3:
dependencies:
loose-envify: 1.4.0