diff --git a/.env.template b/.env.template new file mode 100644 index 0000000..cf99824 --- /dev/null +++ b/.env.template @@ -0,0 +1,9 @@ +NODE_ENV=development +PORT=3000 +HOST=localhost +PUBLIC_URL= +DB_USER= +DID_WEB_PUBKEY= +DB_PASSWORD= +DB_NAME= +DATABASE_URL="postgresql://${DB_USER}:${DB_PASSWORD}@localhost:5432/${DB_NAME}" diff --git a/.gitignore b/.gitignore index 20bd2be..f19d6bf 100644 --- a/.gitignore +++ b/.gitignore @@ -46,3 +46,4 @@ yarn-error.log* **/*.log package-lock.json **/*.bun +.idea \ No newline at end of file diff --git a/apps/aqua/Dockerfile b/apps/aqua/Dockerfile index df5aead..2018298 100644 --- a/apps/aqua/Dockerfile +++ b/apps/aqua/Dockerfile @@ -5,7 +5,7 @@ FROM oven/bun:1.0 AS builder WORKDIR /app # Copy root workspace files -COPY package.json bun.lockb ./ +COPY package.json ./ # Copy turbo.json COPY turbo.json ./ @@ -22,8 +22,8 @@ COPY apps/aqua/ ./apps/aqua/ RUN bun install # Build workspace packages (if needed) -RUN bun run build --filter=@teal/db -RUN bun run build --filter=@teal/lexicons +RUN bun run build --filter=@teal/db --filter !@teal/amethyst +RUN bun run build --filter=@teal/lexicons --filter !@teal/amethyst # Build the aqua app WORKDIR /app/apps/aqua diff --git a/apps/aqua/src/index.ts b/apps/aqua/src/index.ts index 5fbdabd..ceaab7c 100644 --- a/apps/aqua/src/index.ts +++ b/apps/aqua/src/index.ts @@ -84,7 +84,7 @@ const run = async () => { logger.info( `Listening on ${ info.address == '::1' - ? 'http://0.0.0.0' + ? `http://${env.HOST}` : // TODO: below should probably be https:// // but i just want to ctrl click in the terminal 'http://' + info.address diff --git a/compose.dev.yml b/compose.dev.yml index c01804d..879e4eb 100644 --- a/compose.dev.yml +++ b/compose.dev.yml @@ -10,9 +10,24 @@ services: - app_network depends_on: - postgres - - redis env_file: - .env + postgres: + image: postgres:latest + container_name: postgres_db + environment: + POSTGRES_USER: ${DB_USER} + POSTGRES_PASSWORD: ${DB_PASSWORD} + POSTGRES_DB: ${DB_NAME} + ports: + - "5432:5432" + volumes: + - postgres_data:/var/lib/postgresql/data + extra_hosts: + - "host.docker.internal:host-gateway" + networks: + - app_network + env_file: .env # traefik: # image: traefik:v2.10 # container_name: traefik @@ -31,19 +46,6 @@ services: # extra_hosts: # - "host.docker.internal:host-gateway" # This allows reaching host machine - # postgres: - # image: postgres:latest - # container_name: postgres_db - # environment: - # POSTGRES_USER: postgres - # POSTGRES_PASSWORD: yourpassword - # POSTGRES_DB: yourdatabase - # ports: - # - "5432:5432" - # volumes: - # - postgres_data:/var/lib/postgresql/data - # networks: - # - app_network # redis: # image: redis:latest @@ -62,4 +64,4 @@ networks: volumes: postgres_data: - redis_data: +# redis_data: diff --git a/package.json b/package.json index afbbcbc..3d3ca21 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,8 @@ "typecheck": "pnpm -r exec tsc --noEmit", "fix": "biome lint --apply . && biome format --write . && biome check . --apply", "nuke": "rimraf node_modules */*/node_modules", - "lex:gen-server": "turbo lex:gen-server" + "lex:gen-server": "turbo lex:gen-server", + "db:migrate": "cd ./packages/db && drizzle-kit migrate" }, "dependencies": { "@atproto/oauth-client": "^0.3.8" diff --git a/packages/db/drizzle.config.ts b/packages/db/drizzle.config.ts index 34f2b9a..b911bba 100644 --- a/packages/db/drizzle.config.ts +++ b/packages/db/drizzle.config.ts @@ -1,4 +1,13 @@ import { defineConfig } from "drizzle-kit"; +import dotenv from "dotenv"; +import dotenvExpand from "dotenv-expand"; + +//Loads from root .env +dotenvExpand.expand(dotenv.config({ path: '../../.env' })); +//Or can be overridden by .env in the current folder +dotenvExpand.expand(dotenv.config()); + + export default defineConfig({ dialect: "postgresql", diff --git a/packages/db/package.json b/packages/db/package.json index 2c654d1..cae7823 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -18,6 +18,7 @@ "postgres": "^3.4.5" }, "devDependencies": { - "@types/node": "^20.17.6" + "@types/node": "^20.17.6", + "dotenv-expand": "^12.0.2" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2d1f4ba..c5b663c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -336,6 +336,9 @@ importers: '@types/node': specifier: ^20.17.6 version: 20.17.14 + dotenv-expand: + specifier: ^12.0.2 + version: 12.0.2 packages/lexicons: dependencies: @@ -3688,6 +3691,10 @@ packages: resolution: {integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==} engines: {node: '>=12'} + dotenv-expand@12.0.2: + resolution: {integrity: sha512-lXpXz2ZE1cea1gL4sz2Ipj8y4PiVjytYr3Ij0SWoms1PGxIv7m2CRKuRuCRtHdVuvM/hNJPMxt5PbhboNC4dPQ==} + engines: {node: '>=12'} + dotenv@16.4.7: resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} engines: {node: '>=12'} @@ -11016,6 +11023,10 @@ snapshots: dependencies: dotenv: 16.4.7 + dotenv-expand@12.0.2: + dependencies: + dotenv: 16.4.7 + dotenv@16.4.7: {} drizzle-kit@0.30.2: