Replace nodemailer SMTP with HTTP fetch to mail-api
container (http://mail-api:3200/api/mail/send) which
already holds the Brevo SMTP creds. Single source of
truth for mail credentials, no duplication across
electron-rare-site and mail-api.
Drop nodemailer + @types/nodemailer from deps. Restore
npm ci in Dockerfile since the lock no longer drifts.
Override defaults via env: MAIL_API_URL, MAIL_FROM,
MAIL_TO. mail-api intra-Docker network reachable
because both services are on the traefik network.
Replace Frappe/Dolibarr API with direct SMTP send via
nodemailer. Form posts to local /api/submit-lead, no
external proxy on api.lelectronrare.fr (which was down
since Frappe was retired ~13 days ago).
Add onClick handler on BMU/I2C/MOSFET 3D meshes that
redirects to /contact/. Cursor pointer on hover for
affordance.
Switch Dockerfile from npm ci to npm install --no-audit
since package-lock will regen with nodemailer added.
Container env vars to configure:
SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASS
MAIL_FROM (defaults to SMTP_USER)
MAIL_TO (defaults to contact@lelectronrare.fr)
- Three.js + React Three Fiber + postprocessing (bloom, chromatic aberration, glitch, scanlines)
- Nucleus with pulsing energy core, wireframe icosahedron shell
- 3 electron orbits with trail particles + energy arcs
- 600 particle cloud with organic movement
- Circular orbital text: title, countdown timer, subtitle curved on 3D rings
- Mouse interactions: camera parallax, atom speed boost, nucleus glow on proximity
- Camera smooth lerp follow with gentle auto-drift
- Font fix: woff2 → ttf for troika-three-text compatibility
- Logo: static mark instead of missing sprite frames
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>