## videoreg.ru Small video registry using TypeScript, a Next.js web frontend, App Router, FSD-oriented folders, and a primitive file-backed JSON database. The Next.js app lives under `web-front/`. Ingestion code lives under `ingestion/`. ### Local development ```bash npm install npm run dev ``` The app runs on [http://localhost:3000](http://localhost:3000). ### Data storage By default records are stored in `data/videoreg.json`. Override the path with: ```bash VIDEOREG_DB_FILE=/absolute/path/videoreg.json npm run dev ``` Reads are intentionally cached aggressively: - process memory cache for the primitive JSON database; - Next.js cache tag for dashboard/API reads; - long HTTP cache headers on the read API. Writes call `revalidateTag` and update the process cache. ### Deployment Gitea Actions runs: - `.gitea/workflows/pr.yml`: quality gate for pull requests into `master`; - `.gitea/workflows/master.yml`: quality gate, image build, push, and direct Swarm deploy from `master`. The Swarm stack defaults to one replica on a manager node because the primitive database is a mounted JSON file. Use a real database before raising replicas above one or spreading the service across nodes.