Building in public

Journey

Field notes from building Pangaea Labs in the open — the decisions, the dead-ends, and the things we’d tell our past selves.

The build so far

Milestones and notes from the build — the highlights link to a write-up.

  1. MilestoneJun 4, 2026We buy pangaea.id — and build the first (WebGL) homepageRead
  2. MilestoneJun 7, 2026Point the domain at CloudflareRead
  3. MilestoneJun 8, 2026Ship it — Git → CI/CD → PagesRead
  4. NoteJun 8, 2026One canonical address (root → www, 301)Read
  5. NoteJun 9, 2026Make it fast & safe — Cloudflare settingsRead
  6. NoteJun 9, 2026Email for sales@ — MX / SPF / DKIM / DMARCRead
  7. MilestoneJun 9, 2026Pangaea Labs — we start the journeyRead
  8. MilestoneJun 10, 2026The pivot — dark scroller → light staticRead
  9. MilestoneJun 10, 2026A two-hex design system
  10. MilestoneJun 10, 2026Bilingual from the start (EN/ID)
  11. MilestoneJun 10, 2026Every route prerendered (SSG)
  12. NoteJun 11, 2026Team roster + work portfolio
  13. MilestoneJun 11, 2026Light/dark theme + CSP hashing
  14. MilestoneJun 12, 2026Shipping on every pushRead
  15. MilestoneJun 14, 2026Self-audit — one h1, meta budget, FAQPageRead
  16. NoteJun 14, 2026Bahasa that reads written, not translatedRead
  17. MilestoneJun 15, 2026Entity corroboration — Wikidata + the loopRead

All entries

NoteEntry 017 · Day 0 · Jun 9, 2026

Email that proves itself

Email has two directions: MX (inbound) is read by the sender; SPF, DKIM and DMARC (outbound) are read by the recipient. Our identity, verified at the other end.

emailDNSdeliverability
Read entry
NoteEntry 016 · Day 0 · Jun 9, 2026

Make it fast and safe

Going live isn't just "it loads" — it's fast and safe. Two free, layered passes of Cloudflare settings: edge security (HTTPS, WAF, CSP, CAA) and CDN caching.

Cloudflaresecurityperformance
Read entry
NoteEntry 015 · Day -1 · Jun 8, 2026

One address, not two (root → www)

pangaea.id and www.pangaea.id look the same to you — but to Google they're two sites. We 301 the bare domain to the canonical www, so all the SEO credit lands on one URL.

SEODNScanonical
Read entry
MilestoneEntry 014 · Day -1 · Jun 8, 2026

Ship the website: Git → CI/CD → Pages

Hostinger VPS + nginx, or Cloudflare Pages? A prerendered SPA needs no SSR — just files. The build-vs-buy call, and how a git push to main ships the site.

deployCI/CDCloudflare
Read entry
MilestoneEntry 013 · Day -2 · Jun 7, 2026

Point the domain at Cloudflare

Moving pangaea.id from Hostinger's nameservers to Cloudflare: why (fast propagation, free CDN/TLS/DDoS, AI crawlers welcome) and the trip-wires that break a move.

deployDNSCloudflare
Read entry
MilestoneEntry 012 · Day -5 · Jun 4, 2026

Before day zero: a domain and a WebGL homepage

Five days before launch we bought pangaea.id from Hostinger and built step one locally: a single-page, dark WebGL site — an animated agent constellation for the AI work ahead.

domainWebGLorigin
Read entry
MilestoneEntry 011 · Day 6 · Jun 15, 2026

We gave ourselves a Wikidata item (and closed the loop)

Off-site corroboration, end to end: scripted the Wikidata writes (org + founder), wired sameAs both ways, surfaced it on /proof. Citation Possibility Score ~46%→~60%. The plain-English why is in our new article.

GEOentitywikidata
Read entry
NoteEntry 010 · Day 5 · Jun 14, 2026

Our Indonesian read translated — so we wrote rules

The site is bilingual, but the Indonesian read translated — right words, wrong feel. The tells (English word order, invented verbs, literal idioms) and the cheap fix: a rulebook, a scan before any rewrite, and one rendering per term.

i18nbahasacraft
Read entry
MilestoneEntry 009 · Day 5 · Jun 14, 2026

We graded our own homework — and found seven failures

We sell evaluation, so we ran it on ourselves. The audit caught seven pages with no h1 and titles overflowing the search result. The fix was a good day: per-service FAQs, breadcrumbs, Crunchbase.

SEOGEOaudit
Read entry
MilestoneEntry 008 · Day 4 · Jun 13, 2026

The polish nobody sees (until it’s missing)

Shipping the revamp was the headline; the week after decided whether it felt built — focus rings, a reading column, a named testimonial, share buttons, and finally a diary to write it all down.

craftdesignaccessibility
Read entry
NoteEntry 007 · Day 1 · Jun 10, 2026

We measured without selling anyone out

A sales site needs to know what converts; a privacy-first one can’t drop cookies on arrival. Consent denied by default, GA4 via gtag (never GTM), and one env var in exactly the wrong place.

analyticsprivacyconsent
Read entry
MilestoneEntry 006 · Day 1 · Jun 10, 2026

Sitemap is the map. IndexNow is the doorbell.

Getting found by AI answer engines starts somewhere unglamorous: Bing’s index — it’s what ChatGPT searches. Verify, submit the sitemap, then ring the doorbell on every deploy.

SEOGEOindexing
Read entry
NoteEntry 005 · Day 0 · Jun 9, 2026

Moving the phone book without dropping the mail

Migrating DNS to Cloudflare is mostly painless — except the one silent way it bites: email. MX, SPF, DKIM, DMARC, and a CAA record that breaks your padlock weeks later if you get it wrong.

DNSemailinfra
Read entry
MilestoneEntry 004 · Day 0 · Jun 9, 2026

We almost let our own CDN block the robots we invited

We wrote JSON-LD and llms.txt so ChatGPT and Claude would quote us — then learned our CDN blocks AI crawlers by default. The friendly robots.txt isn’t the gate; the edge is.

GEOinfracrawlers
Read entry
MilestoneEntry 003 · Day 3 · Jun 12, 2026

Shipping on every push

No server to SSH into. Every push to main rebuilds every static page and ships them — then pings the search engines.

CI/CDinfra
Read entry
NoteEntry 002 · Day 2 · Jun 11, 2026

Teaching the site who we are

Crawlers index pages; answer engines index entities. How one JSON-LD graph makes "Pangaea Labs" a thing, not a string.

SEOGEOstructured-data
Read entry
MilestoneEntry 001 · Day 1 · Jun 10, 2026

We deleted the cool homepage

We reached for the obvious dark, WebGL, scroll-driven hero — then shipped the opposite. Why a light, multi-page static site won.

decisionperformanceSEO
Read entry
MilestoneEntry 000 · Day 0 · Jun 9, 2026

Now we build our own

A decade building software for others. Today we launch Pangaea Labs — and start documenting the journey, in public.

launchmission
Read entry