Art Gallery

Interactive virtual art gallery: zoomable historical timeline, art movement bands, one 3D hall per artist (dynamic wall layout, chronological wall order, golden influence lamps, canvas placeholders for missing works, influence-linked exits), painting detail with prev/next catalog browsing and fullscreen lightbox, 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 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:

    cd client && npm run build && cd ..
    npm run server
    

    Open http://localhost:3001

Development

Run API and Vite dev server separately:

npm run dev:server   # http://localhost: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%