38 lines
1.1 KiB
Markdown
38 lines
1.1 KiB
Markdown
## videoreg.ru
|
|
|
|
Small Next.js video registry using TypeScript, App Router, FSD-oriented folders, and a primitive file-backed JSON database.
|
|
|
|
### 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.
|