This repository contains the public website and documentation for LGS1920 Studio.
It is built with Eleventy and Vite. The code here generates the public site, the multilingual pages, and the user guide for the Studio.
Site changes are recorded in the local CHANGELOG.md with their date, commit identifier, title, and summary.
- Font Awesome
- Web Awesome
- Eleventy
- Vite
This repository includes project skills for maintaining the public site and its documentation:
- Component UI deployment
- Content maintenance
- Content review
- Documentation authoring
- Eleventy maintenance
- Multilingual content
- Site QA
- Release preparation
- Contact mail
The local development server uses the local backend at http://localhost:3333
by default. Production and staging builds use the Studio reverse proxy and
their configured backend target from ../studio/deployment/deploy.yml:
bun run devThe site is served at Eleventy’s default address, http://localhost:8080.
Override the API address for another backend environment when building or serving the site if needed:
LGS1920_COUNT_API_URL="http://api.lgs1920.fr:3334" bun run devProduction and non-development builds use the public backend domain from the
Studio deployment configuration. LGS1920_COUNT_API_URL remains available as
an explicit override.
The site includes English and French launch-registration forms for first name,
last name, and email address. Submissions are sent to POST /launch-registration
on the backend. The form uses LGS1920_LAUNCH_REGISTRATION_API_URL when it is
set, then falls back to the legacy LGS1920_REGISTRATION_API_URL, and finally
uses the same API URL as the statistics feature.
The backend normalizes registration email addresses and keeps new submissions
pending until the visitor confirms the link sent by email. If the address is
already pending, the form explains that a confirmation email is waiting and
offers a resend action. Confirmed registrations are then moved to the active
registration file. The backend also limits repeated registration requests and
may return HTTP 429; the form keeps the failure message generic.
Each registration request includes form: "launch-registration", its page
locale, the opaque contact target key, and a rendered Markdown confirmation
message selected from the site catalog. The backend validates the metadata,
injects the single-use confirmation URL, and sends the message to the visitor.
After confirmation it sends the final visitor acknowledgement and the Studio
notification.
The English and French contact pages collect a name, email address, subject,
message, and explicit consent before sending the request to POST /contact on
the backend. The form uses LGS1920_CONTACT_API_URL when it is set; otherwise
it uses the same API URL as the statistics feature. Before submitting, the
form requests a short-lived backend token and sends only an opaque contact
target key, for example C4P7Z2. The backend may answer with HTTP 429 when
the token or submission limit is reached; the site keeps that response generic
and does not reveal delivery details. SMTP credentials and recipient addresses
remain server-side in the backend and are never exposed to the site.
Both forms use the site-owned Markdown catalogs under
src/_includes/form-mail/: one acknowledgement template and one Studio
notification template per form and locale. The browser selects both templates
from the form identity and locale, replaces the allowed placeholders with
escaped submitted values, and sends renderedMessage for the visitor plus
supportRenderedMessage for Studio alongside the validated form fields. The
backend adds the generic horizontal LGS1920 logo footer after receiving each
rendered message; the localized templates do not duplicate that shared footer.
The target key is configured in the site build with
LGS1920_CONTACT_TARGET and mapped to the real recipient only by the backend.
The mapping must never be copied into this repository or the generated browser
bundle.