Your music, beautifully tracked. All yours. (coming soon) teal.fm
teal-fm atproto

wip. mostly working depending on other prs and docs

+102 -36
+2 -3
.gitignore
··· 34 34 .env.development.local 35 35 .env.test.local 36 36 .env.production.local 37 + .env.air 37 38 38 39 # vercel 39 40 .vercel ··· 46 47 **/*.log 47 48 package-lock.json 48 49 **/*.bun 49 - .idea 50 - 51 - apps/amethyst/buld 50 + .idea
+5
apps/amethyst/Caddyfile
··· 1 + {env.CLIENT_ADDRESS} { 2 + try_files {path} /index.html 3 + file_server 4 + } 5 +
+32
apps/amethyst/Dockerfile
··· 1 + FROM node:22-slim AS builder 2 + ENV PNPM_HOME="/pnpm" 3 + ENV PATH="$PNPM_HOME:$PATH" 4 + RUN corepack enable 5 + # Set working directory 6 + WORKDIR /app 7 + 8 + # Copy root workspace files 9 + COPY package.json pnpm-workspace.yaml pnpm-lock.yaml ./ 10 + 11 + # Copy turbo.json 12 + COPY turbo.json ./ 13 + 14 + # Copy workspace packages 15 + COPY packages/db/ ./packages/db/ 16 + COPY packages/lexicons/ ./packages/lexicons/ 17 + COPY packages/tsconfig/ ./packages/tsconfig/ 18 + 19 + # Copy the aqua app 20 + COPY apps/amethyst/ ./apps/amethyst/ 21 + 22 + # Build the aqua app 23 + WORKDIR /app/apps/amethyst 24 + RUN pnpm install 25 + RUN pnpm run build:web 26 + 27 + FROM caddy:2.1.0-alpine AS caddy 28 + EXPOSE 80 29 + EXPOSE 443 30 + EXPOSE 443/udp 31 + COPY /apps/amethyst/Caddyfile /etc/caddy/Caddyfile 32 + COPY --from=builder /app/apps/amethyst/build /srv
+1 -1
apps/amethyst/package.json
··· 9 9 "ios": "expo run:ios", 10 10 "web": "expo start --web", 11 11 "build": "expo export --output-dir ./build --platform all", 12 - "build:web": "expo export --output-dir ./buld --platform web", 12 + "build:web": "expo export --output-dir ./build --platform web", 13 13 "test": "jest --watchAll", 14 14 "lexgen": "lex gen-server ./lexicons/generated/server/ ./lexicons/src/" 15 15 },
+62 -32
compose.dev.yml
··· 6 6 container_name: aqua-app 7 7 ports: 8 8 - "3000:3000" 9 + extra_hosts: 10 + - "host.docker.internal:host-gateway" 9 11 networks: 10 12 - app_network 11 13 depends_on: 12 14 - postgres 13 15 env_file: 14 16 - .env 17 + environment: 18 + DATABASE_URL: ${DOCKER_DB_URL} 19 + amethyst: 20 + build: 21 + context: . 22 + dockerfile: apps/amethyst/Dockerfile 23 + ports: 24 + - "80:80" 25 + - "443:443" 26 + - "443:443/udp" 27 + volumes: 28 + - caddy_data:/data 29 + - caddy_config:/config 30 + networks: 31 + - app_network 32 + environment: 33 + CLIENT_ADDRESS: ${CLIENT_ADDRESS} 15 34 postgres: 16 35 image: postgres:latest 17 36 container_name: postgres_db ··· 27 46 - "host.docker.internal:host-gateway" 28 47 networks: 29 48 - app_network 30 - env_file: .env 31 - # traefik: 32 - # image: traefik:v2.10 33 - # container_name: traefik 34 - # command: 35 - # - "--api.insecure=true" 36 - # - "--providers.file.directory=/etc/traefik/dynamic" 37 - # - "--providers.file.watch=true" 38 - # - "--entrypoints.web.address=:80" 39 - # ports: 40 - # - "80:80" # HTTP 41 - # - "8080:8080" # Dashboard 42 - # volumes: 43 - # - ./traefik/dynamic:/etc/traefik/dynamic:ro 44 - # networks: 45 - # - app_network 46 - # extra_hosts: 47 - # - "host.docker.internal:host-gateway" # This allows reaching host machine 48 - 49 - 50 - # redis: 51 - # image: redis:latest 52 - # container_name: redis_cache 53 - # ports: 54 - # - "6379:6379" 55 - # volumes: 56 - # - redis_data:/data 57 - # command: redis-server --appendonly yes 58 - # networks: 59 - # - app_network 49 + cadet: 50 + image: ghcr.io/espeon/cadet 51 + ports: 52 + - "9000:9000" 53 + env_file: 54 + - .env 55 + environment: 56 + DATABASE_URL: ${DOCKER_DB_URL} 57 + extra_hosts: 58 + - "host.docker.internal:host-gateway" 59 + networks: 60 + - app_network 61 + depends_on: 62 + - postgres 63 + satellite: 64 + image: ghcr.io/espeon/satellite 65 + ports: 66 + - "3132:3000" 67 + env_file: 68 + - .env 69 + environment: 70 + DATABASE_URL: ${DOCKER_DB_URL} 71 + extra_hosts: 72 + - "host.docker.internal:host-gateway" 73 + networks: 74 + - app_network 75 + depends_on: 76 + - postgres 77 + piper: 78 + # image: ghcr.io/teal-fm/piper:main 79 + image: fatfingers23/piper:latest 80 + # Depends on your .env.air 81 + ports: 82 + - "8080:8080" 83 + env_file: 84 + - .env.air 85 + volumes: 86 + - piper_data:/db 60 87 88 + # db-migrations 89 + #TODO to not forget to add an image to run db migrations or add it to aqua in a bash script on run 61 90 networks: 62 91 app_network: 63 92 driver: bridge 64 - 65 93 volumes: 66 94 postgres_data: 67 - # redis_data: 95 + caddy_data: 96 + caddy_config: 97 + piper_data: