Lume is a fully-built premium brand experience for a fictional architectural-lighting atelier in Tel Aviv. The project ships as a real working system mounted at /api/lume/* on the zbang-api service, persisting every interaction into PostgreSQL.
What you can do on the site
- Browse the catalogue — 9 hand-curated fixtures across pendants, sconces, floor, table, chandeliers and a bespoke commission slot — filterable by collection, each with full specifications, lead time, lumen output, color temperature, CRI and material breakdown.
- Tour realised projects — 6 published case studies (Ein Hod Residence, Hôtel Mirador, Bilu Gallery, Café Ostend, Kerem Residence, Atelier Rosenthal) — filterable by client type (residence, hospitality, restaurant, gallery, retail) with floor/room/fixture counts.
- Draw a lighting plan — interactive multi-step calculator: room type → dimensions → ceiling → style (ambient/task/accent/mixed) → mood (warm/balanced/cool) → returns a real specification with recommended lumens, kelvin, fixture mix and a budget in NIS. Results render an SVG bar chart with target lumens line.
- Open a commission — multi-field form (contact, project type, scope, budget band, timeline, rooms, fixture chips, brief) → posts to
/api/lume/inquiries, persists with estimated commission value, returns a hand-written-feeling reply. - Book a studio visit — calendar/time picker, visit type (showroom tour / private consultation / trade preview), party size → posts to
/api/lume/appointmentswith confirmation. - Subscribe to letters — newsletter form with interest segmentation (new collections / journal / trade) → persisted with upsert.
- Watch the studio live — privacy-respecting recent-activity feed in the atelier section, showing the last 8 events with anonymized initials.
Real backend, real persistence
- 7 PostgreSQL tables:
lume_fixtures,lume_projects,lume_inquiries,lume_appointments,lume_subscribers,lume_calculations,lume_settings. - 10 FastAPI endpoints under
/api/lume/*:health,settings,fixtures,fixtures/{slug},projects,projects/{slug},inquiries(POST),appointments(POST),newsletter(POST),calculator(POST),stats,recent-activity. - Real business logic in
services/lume.py: IESNA-derived lux targets per room type, style multipliers, ceiling-height utilisation factor, kelvin-by-mood mapping, fixture recommendation engine, scope/rooms-based commission value estimation. - Auto-seeded on first boot — 9 fixtures, 6 projects, default atelier settings.
Configurable
- Catalogue fixtures (name, family, dimensions, lumens, kelvin, CRI, material, lead time, price, signature flag, tags).
- Realised projects (client type, location, year, fixture list, architect, photographer, stats).
- Atelier settings (name, tagline, headquarters, instagram, accent color, next collection drop, response window, KPI counters).
Premium design
- 4 codex-generated atmospheric images (hero with brass pendant cluster at dusk, atelier workshop interior, signature Helios I pendant fixture, brand mark).
- Frank Ruhl Libre + IBM Plex Mono + Heebo + Instrument Serif typography stack.
- Warm-brass / aged-bronze / alabaster palette in 50–900 scale with semantic accents (ember, glow).
- Glassmorphic surfaces with backdrop-filter blur+saturate; floating orbs and grain overlay.
- Custom SVG fixture illustrations per collection type (pendant / sconce / floor / table / chandelier / bespoke).
- 4 KPI cards with sparkline + progress ring + meter charts driven by live
/api/lume/stats. - Lighting-plan SVG bar chart with target-lumens dashed line.
- 9 sections: hero · signature feature · KPIs · collections · projects · calculator · atelier story + live activity · commission form · studio visit form · journal · newsletter · press · footer.
- Responsive mobile-first across 540/720/1100/1440 breakpoints.
Real verified end-to-end
Every POST endpoint was exercised against the live production deployment before publication. The lume_inquiries, lume_appointments, lume_calculations, and lume_subscribers tables each contain real test rows. The live activity feed surfaces them with anonymised initials.
Stack
FastAPI · SQLAlchemy · PostgreSQL · Vanilla JS (no framework) · pure CSS with color-mix(), backdrop-filter, @media (prefers-reduced-motion) · Nginx alias mounted at /lume/ on ofir.zbang.net.