Remove profiles from worker service in both docker-compose.yml and
docker-compose.dev.yml so the worker starts automatically with
`docker compose up`. This fixes the issue where verification SMS and
the scheduler timer were not working because the worker was never
started. The bot remains as an optional profile.
Update README to reflect the change.
Co-authored-by: xCyanGrizzly <53275238+xCyanGrizzly@users.noreply.github.com>
The createUser event in auth.ts now promotes the first user to ADMIN
if no admin exists yet. The JWT callback also fetches the role from the
database on sign-in to pick up the freshly assigned ADMIN role.
Co-authored-by: xCyanGrizzly <53275238+xCyanGrizzly@users.noreply.github.com>
- Replace next/font/google Geist imports with geist npm package to eliminate
Google Fonts CDN network dependency during Docker image builds (was causing
intermittent build failures → redeployment errors)
- Use ./node_modules/.bin/prisma directly in docker-entrypoint.sh instead of
npx for both migrate deploy and db seed commands
Co-authored-by: xCyanGrizzly <53275238+xCyanGrizzly@users.noreply.github.com>
tsconfig.json included **/*.ts but only excluded worker/**, not bot/**.
This caused next build to type-check bot source files whose dependencies
aren't installed in the root node_modules, breaking CI.
- Add bot/** to tsconfig.json exclude array
- Add bot/** and worker/** to eslint globalIgnores
Adds full Telegram ZIP ingestion pipeline: TDLib worker service scans source
channels for archive files, deduplicates by content hash, extracts metadata,
uploads to archive channel, and indexes in Postgres. Forum supergroups are
scanned per-topic with topic names used as creator. Filename-based creator
extraction (e.g. "Mammoth Factory - 2026-01.zip") serves as fallback.
Includes admin UI for managing accounts/channels, simplified account setup
(API credentials via env vars), auth code/password submission dialog,
package browser with creator column, and live ingestion activity tracking.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The prisma-client generator mandates an output path, which conflicts
with using the standard @prisma/client import. Switch to prisma-client-js
which generates to node_modules by default.
Co-Authored-By: Claude <noreply@anthropic.com>
The custom generator output to src/generated/prisma caused persistent
Turbopack module resolution failures in CI. Switch to the standard
@prisma/client import path which all bundlers resolve correctly.
- Remove custom output from prisma schema generator
- Update all imports from ../generated/prisma to @prisma/client
- Add postinstall script to auto-run prisma generate after npm ci
- Remove generated files from git (no longer needed in source tree)
- Simplify CI workflow (remove verify step and --webpack workaround)
Co-Authored-By: Claude <noreply@anthropic.com>
Turbopack cannot resolve imports from src/generated/prisma even
with relative paths and committed files. Switch to --webpack for
CI build. Also add file verification step for debugging.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Turbopack cannot resolve @/generated/prisma path alias during
next build, even with the files committed and baseUrl set.
Switch to relative imports (../generated/prisma) which Turbopack
resolves without issues.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Turbopack skips gitignored directories during module resolution in
next build. Since src/generated/prisma was in .gitignore, the build
on CI failed with "Module not found: Can't resolve '@/generated/prisma'"
even though prisma generate created the files.
Fix: commit the generated client and remove it from .gitignore.
Run `npx prisma generate` after schema changes to update.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The standalone `npx tsc --noEmit` can't resolve @/ path aliases
for generated Prisma client files on CI, even with baseUrl set.
next build already runs TypeScript type checking and ESLint via
its own bundler which handles path aliases correctly.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add ls output after prisma generate to verify files exist
before tsc runs. This will show whether the generated client
is in src/generated/prisma/ or elsewhere.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>