# Photographing the interface `stub-server.mjs` stands in for the auth and protocols services and serves a small mailbox that is entirely invented (names, addresses on reserved example domains, messages). It exists so the webmail can be run, worked on and photographed without a mail server or anyone's real mail. node scripts/screenshots/stub-server.mjs # listens on :4001 cd services/webmail AUTH_SERVICE_URL=http://127.0.0.1:4001 \ PROTOCOLS_SERVICE_URL=http://127.0.0.1:4001 npx next dev -p 3100 Open `http://localhost:3100/user/mail/inbox` with a cookie named `lm_user_session` holding any token with the claims the middleware reads (the capture script builds one). `capture.mjs` writes the pictures the README uses into `docs/img/`, in English and Portuguese, dark and light: cd scripts/screenshots && npm install --no-save puppeteer-core CHROME_PATH=/path/to/chrome node capture.mjs It needs a Chrome, and the webmail running as above. The stub keeps its state in memory (opening a message marks it read); the script resets it before every picture through `/__reset`, so each one starts from the same mailbox.