A calm, scalable link-tree / home page for Pedro Brito: online English lessons, teaching tools, and translation software. Built as a zero-build static site and styled with the Britx "Living Cosmos" design system (warm accents) with a light/dark theme that follows the visitor's system preference.
Plain HTML + CSS + JS. No build step, no dependencies to install — open
index.html or deploy the folder anywhere static (GitHub Pages, Netlify, etc.).
Fonts (Inter, IBM Plex Mono) and Bootstrap Icons load from CDNs.
| File | Purpose |
|---|---|
index.html |
Semantic skeleton, meta/OG tags, and the no-flash theme bootstrap. |
data.js |
Single source of truth — profile, primary CTA, and link sections. |
script.js |
Renders data.js, plus theme/language toggles and ambient motion. |
style.css |
Design tokens (dark + light) and all components. |
logo.png |
Logo / favicon / avatar / watermark. |
Edit data.js only — nothing else.
{
id: "newsletter", // unique id
icon: "bi-send", // any Bootstrap Icons class
label: { pt: "Newsletter", en: "Newsletter" },
note: { pt: "Inscreva-se", en: "Subscribe" }, // optional subtitle
href: "https://example.com",
}- Add a link: drop the object into the relevant section's
linksarray. - Add a section: add a new
{ id, label, links }object toSECTIONS. - Reorder: move objects around — render order follows array order.
- Email-style copy button: add
copy: "you@example.com"to amailto:link.
All text is bilingual via { pt, en }. The active language persists in
localStorage and defaults to the visitor's browser language (PT fallback).
- Loads in the visitor's system theme (
prefers-color-scheme); the header toggle overrides it and the choice persists inlocalStorage. - Tokens live in
:root/[data-theme="dark"]and[data-theme="light"]instyle.css. The design system specifies dark tokens; the light palette is a warm extension built from the same hues.
Semantic landmarks, keyboard-operable toggles, --rain focus rings, and a
prefers-reduced-motion fallback that quiets all animation.
python3 -m http.server 8000
# open http://localhost:8000Push to the default branch and enable Pages → "Deploy from branch" → root.