ae6c35145fb0f0601cfc2fe72e45950ba8a508f8
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
npm install
npm run dev
The app runs on http://localhost:3000.
Data storage
By default records are stored in data/videoreg.json. Override the path with:
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 intomaster;.gitea/workflows/master.yml: quality gate, image build, push, and direct Swarm deploy frommaster.
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.
Languages
TypeScript
87.9%
Shell
5.4%
CSS
4.4%
JavaScript
2.2%