# Codex Project Notes ## Project `WatchLink` is a Dockerized Next.js + Postgres web app for persistent shared watch rooms with accounts, friends, roles, permissions, admin setup, persistent realtime playback sync, invites, room chat, and profile uploads. Repository: ```text MrSphay/WatchLink ``` ## Commands ```text Install: npm install Dev: npm run dev Lint: npm run lint Typecheck: npm run typecheck Test: npm run test Build: npm run build Audit: npm run audit Release check: npm run release:check Docker: docker compose up --build Database migrate: npm run db:migrate ``` ## Stack ```text Next.js App Router, React, TypeScript, Prisma, Postgres, Socket.IO, Docker ``` Database setup: ```text Prisma migrations live in prisma/migrations and are applied in Docker with prisma migrate deploy. ``` Runtime uploads: ```text Avatar uploads are stored in /app/public/uploads and mounted through the avatar-uploads Docker volume. ``` Package manager: ```text npm ``` ## Build Artifacts Next.js standalone build output: ```text .next/standalone ``` Docker image: ```text git.wilkensxl.de/mrsphay/watchlink:latest ``` ## Security Rules - Do not commit secrets, `.env` files, tokens, private keys, or certificates. - Use `.env.example` for documentation only. - Review `docs/security-review.md` before release work. - Keep package publishing secrets in Gitea secrets as `REGISTRY_TOKEN`. ## Release Rules Before a release: 1. run `npm run release:check`, 2. verify Docker build, 3. verify Gitea Actions are green, 4. verify the pushed container image can be pulled, 5. update README and changelog, 6. create tags/releases only when explicitly requested.