Align package.json scripts and their references across scripts/, infra/, and db/ SQL with the dev-first workflow naming scheme. Co-authored-by: Cursor <cursoragent@cursor.com>
Art Gallery
Interactive virtual art gallery: zoomable historical timeline with era click-to-zoom, major event markers (vertical guides into the movement flow), branching art-movement streams (click a movement name to enter its 3D movement gallery — photorealistic period interiors with painted walls, stone, and wood textures; chronological wings with up to ~55 works each, side-wall windows, wing navigator), one 3D hall per artist (parquet floor, movement-tinted walls, black/gold frames by review status, corridor layout for large catalogs, museum-style exit doors, golden influence lamps, canvas placeholders for missing works, influence-linked exits), painting detail with art-history annotations, prev/next catalog browsing and fullscreen lightbox, curator-gated debug-mode image audit on painting detail and artist bio (Checked / Fix it / More / Clear / Upload; painting detail also Remove entry), optional Show more auto-opens the search picker, Checkup page, preserved gallery camera on return, and Wikipedia-sourced artist biographies. Anonymous visitors browse freely; curators sign in via Curator login in the header.
Documentation
| Document | Purpose |
|---|---|
| Documentation/basics.md | Architecture, layout, user flow |
| Documentation/FAC.md | Command cheat sheet — start/stop, import, deploy |
| Documentation/environments.md | Dev/prod URLs, DB split, deploy, sync |
| Documentation/setup.md | Install, env, npm scripts |
| Documentation/DB_structure.md | PostgreSQL tables |
| Documentation/API.md | REST endpoints |
| Documentation/data-and-images.md | Catalog, bios, seeding, image pipeline |
Stack
- Backend: Node.js, Express, PostgreSQL
- Frontend: React, Vite, Three.js (
@react-three/fiber,@react-three/drei)
Setup
-
Copy
.env.exampleto.envand set database credentials (DB_NAME=gallery_devafter one-time split). SetSESSION_SECRET,CURATOR_USERNAME, andCURATOR_PASSWORDfor curator login (see setup.md). -
Install dependencies:
npm install cd client && npm install && cd .. -
Apply database schema (requires PostgreSQL superuser for first-time setup):
npm run dev:migrate npm run dev:seed -
Enrich the catalog (recommended after seed):
npm run dev:sync-image-paths # import paintings from data/images/paintings/ when present npm run dev:fetch-artist-images # link or download artist portraits npm run dev:fetch-artist-bios # Wikipedia biographies for all artists npm run dev:expand-catalog # add famous works for artists with thin catalogs npm run dev:update-influences # art-history lineage links (detail panels + 3D hall) npm run dev:migrate:artist-palette # optional: JSONB column for PainterPalette enrichment npm run dev:import-painter-palette # optional: metadata + influence links from Inputs/PainterPalette.csv npm run dev:migrate:checkup-flags # review/fixed flags for Checkup + debug mode (paintings) npm run dev:migrate:artist-checkup-flags # same flags for artist portraits (bio debug) npm run dev:migrate:painting-annotations # art-history notes on painting detail npm run dev:update-painting-annotations # load curated notes (+ optional --wikipedia) npm run dev:fetch-images -- --limit=50 # random batch of missing images (10s per work) npm run dev:fetch-images -- --artist="Claude Monet" # one artist in catalog order -
Development (public URL):
npm run dev:webOpen https://devgallery.mysuperlab.netcraze.pro (or http://localhost:5173 locally).
Production: https://gallery.mysuperlab.netcraze.pro — see Documentation/environments.md and infra/docker/DEPLOY-truenas.md.
Deployed URLs
| Environment | URL | Host |
|---|---|---|
| Development | https://devgallery.mysuperlab.netcraze.pro | Dev PC :5173 (Vite) + :3451 (API) |
| Production | https://gallery.mysuperlab.netcraze.pro | TrueNAS Docker :5173 |
Operator guide: Documentation/environments.md.
Development
Workflow: All changes are made and tested on dev (gallery_dev, https://devgallery.mysuperlab.netcraze.pro). Production is updated on a scheduled release (~weekly): promote DB/images, build/push the Docker image, restart TrueNAS. See Documentation/environments.md.
Public dev (Keenetic):
npm run dev:web # Vite :5173, API :3451
Local HMR:
npm run dev:server # API — PORT from .env
npm run dev:client # http://localhost:5173 (proxies /api and /images)