This folder is the website. Copy its contents to a Git repo, push, and point a host at it. No build step, no framework. Below is the full first-deploy walkthrough.
index.html ← main page (X feed + waitlist) — site entry point
Sobre.html Fontes.html Contato.html FAQ.html
of-tokens.css ← design system (shared by every page)
tweets.json ← posts the feed renders (auto-refreshed — step 4)
x-fetcher/ ← the hourly tweet updater (tooling, not a served page)
README.md ← this file
These are the only things that need editing. You can deploy first and add them after; until
then the forms work in demo mode (validate + show success but send nothing) and tweets are
whatever is in tweets.json right now.
- Web3Forms key (captures waitlist + contact emails) — get a free key at
https://web3forms.com (just type your email, no signup). Paste it into the
WEB3FORMS_KEY = ''line in bothindex.htmlandContato.html. - RapidAPI key (refreshes tweets) — from https://rapidapi.com/alexanderxbx/api/twitter-api45, subscribe to the free plan, copy the key. This one goes in a repo secret (step 4), not in the files.
From inside this site/ folder:
git init
git add .
git commit -m "Olhar Factual — initial site"
git branch -M main
git remote add origin https://github.com/<voce>/<repo>.git
git push -u origin main(Everything in this folder goes to the repo root — index.html at the top level.)
Repo → Settings → Pages → Source: Deploy from a branch → Branch: main / /(root)
→ Save. After ~1 minute your site is live at https://<voce>.github.io/<repo>/.
Settings → Pages → Custom domain → type your domain → Save. Then at your domain registrar:
- subdomain (e.g.
www): add a CNAME record pointing to<voce>.github.io - apex (e.g.
olharfactual.com.br): add GitHub's A records (shown on that Pages screen)
GitHub adds a CNAME file and provisions HTTPS automatically.
- Move the workflow into place:
x-fetcher/fetch-x.yml→.github/workflows/fetch-x.yml(leavex-fetcher/fetch.mjswhere it is). - Repo → Settings → Secrets and variables → Actions → New repository secret:
name
RAPIDAPI_KEY, value = your key from step "Before you start". - Commit & push. Then Actions tab → Fetch X posts → Run workflow to fill
tweets.jsonimmediately. After that it runs hourly on its own and commits the file — Pages redeploys automatically.
Details / troubleshooting: x-fetcher/README.md.
-
WEB3FORMS_KEYset inindex.htmlandContato.html - Files pushed to the repo root;
index.htmlloads at the Pages URL - (optional) Custom domain + DNS configured
-
fetch-x.ymlmoved to.github/workflows/ -
RAPIDAPI_KEYsecret added; workflow ran once and updatedtweets.json - Submit a test on the waitlist + contact forms → confirm the email arrives in your inbox
- Cloudflare Pages works too: connect the repo, build command = none, output dir =
/. The GitHub Action still updates tweets (Cloudflare redeploys on each commit). - Cover images load from X's CDN, so they appear once the site is served over the web.
- Free-tier limits to keep in mind: Web3Forms ~250 submissions/month; RapidAPI 1000 requests/month (hourly ≈ 720, safely under).