Danila KhodjaefandCursor f20f811f21 Align influence lamps 40cm above the tallest hall frame.
Compute the highest allocated frame top per hall and place every influence lamp on that shared rail so markers line up across different canvas sizes.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-09 22:42:23 +03:00
2026-08-03 22:50:07 +03:00
2026-07-27 13:25:43 +03:00
2026-08-03 22:50:07 +03:00

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

  1. Copy .env.example to .env and set database credentials (DB_NAME=gallery_dev after one-time split). Set SESSION_SECRET, CURATOR_USERNAME, and CURATOR_PASSWORD for curator login (see setup.md).

  2. Install dependencies:

    npm install
    cd client && npm install && cd ..
    
  3. Apply database schema (requires PostgreSQL superuser for first-time setup):

    npm run dev:migrate
    npm run dev:seed
    
  4. 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
    
  5. Development (public URL):

    npm run dev:web
    

    Open 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)
S
Description
No description provided
Readme
12 GiB
Languages
TypeScript 49.8%
JavaScript 38.7%
CSS 7.8%
PowerShell 3.1%
PLpgSQL 0.3%
Other 0.3%