Danila Khodjaef 7f26696328 Shorten painting image filenames that exceeded Windows path limits.
Rename Fra Angelico predella and Hieronymus Bosch diptych files so they can be tracked on Windows and committed reliably.
2026-07-03 14:29:23 +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, 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.

Documentation

Document Purpose
Documentation/basics.md Architecture, layout, user flow
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.

  2. Install dependencies:

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

    npm run migrate
    npm run seed
    
  4. Enrich the catalog (recommended after seed):

    npm run fetch-artist-bios    # Wikipedia biographies for all artists
    npm run expand-catalog       # add famous works for artists with thin catalogs
    npm run update-influences    # art-history lineage links between paintings
    npm run migrate:artist-palette   # optional: JSONB column for PainterPalette enrichment
    npm run import-painter-palette   # optional: metadata + influence links from Inputs/PainterPalette.csv
    npm run migrate:checkup-flags # review/fixed flags for Checkup + debug mode (paintings)
    npm run migrate:artist-checkup-flags # same flags for artist portraits (bio debug)
    npm run migrate:painting-annotations # art-history notes on painting detail
    npm run update-painting-annotations  # load curated notes (+ optional --wikipedia)
    npm run fetch-images -- --limit=50         # random batch of missing images (10s per work)
    npm run fetch-images -- --artist="Claude Monet"   # one artist in catalog order
    
  5. Build the client and start the server:

    npm run start:prod
    

    Production URLs:

    See Documentation/setup.md for nginx/systemd configs in deploy/.

Development

Run API and Vite dev server separately:

npm run dev:server   # API — PORT from .env (3520 or 3001)
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%