A small static site for Isaac Liem at ikeanalytics.com.
Built with Astro and the same Ike color brands and component
vocabulary that ship in PSP. The site is
authored as markdown articles served as a true static dist/, hosted on a
Raspberry Pi 5 behind a Cloudflare Tunnel.
npm install
npm run dev # dev server on http://localhost:4321 (hot reload)
npm run build # static dist/
npm run preview # serves dist/ on http://localhost:4321ikeanalytics-com/
├── astro.config.mjs # integrations: tailwind, sitemap, mdx
├── tailwind.config.js # Ike palette (gold / red / teal)
├── src/
│ ├── styles/globals.css # ike-card, ike-btn-*, text-gradient-*, glass
│ ├── content/blog/ # markdown articles
│ ├── components/ # Nav, Footer, Hero, ArticleCard, SocialLinks
│ ├── layouts/ # BaseLayout.astro (head, JSON-LD, RSS)
│ └── pages/ # /, /articles, /articles/[...slug], /about, /now, /404
├── public/brand/ # logos (decoupled from PSP)
└── deploy/ # nginx + cloudflared configs + deploy script
Drop a markdown file into src/content/blog/:
---title: "Your title"description: "One-sentence summary that goes in OG, RSS, and the meta description."pubDate: 2026-07-15tags: ["aip", "protocols"]---
Body in markdown. Headings, lists, code blocks all work. The article URL is
auto-generated from the filename (`your-title.md` → `/articles/your-title/`).Frontmatter is validated by the Zod schema in src/content/config.ts. The
homepage and /articles index pick the new post up automatically on the next
build.
The site is static. dist/ ships to the Pi, nginx serves it on
127.0.0.1:8080, and cloudflared tunnels public traffic to that port.
The Pi does not need a public IP - cloudflared opens an outbound
TCP 443 connection to Cloudflare's edge.
./deploy/deploy.ps1 # target comes from deploy/pi-host.txt (see deploy.ps1)That runs npm run build, scp -r dist/* to the Pi, and reloads nginx.
The Pi's nginx config is in deploy/nginx-ikeanalytics.com.conf -
install it at /etc/nginx/sites-available/ikeanalytics.com and symlink
to sites-enabled/. The Cloudflare Tunnel config is in
deploy/cloudflared-config.yml.example - see the comments in that file
for the one-time setup (cloudflared tunnel login, tunnel create,
tunnel route dns, service install).
Auth: SSH key only. The Pi's pi user must have your public key in
~/.ssh/authorized_keys. The deploy script defaults to
$env:USERPROFILE\.ssh\id_ed25519; pass -SshKey <path> to override.
From the PSP design system, with PSP-specific shims removed:
| Token | Hex | Use |
|---|---|---|
ike-gold | #D4A017 | Primary surface accent |
ike-gold-light | #E8C547 | Hover state |
ike-gold-dark | #A07810 | Deep accent |
ike-red | #C41E3A | Signal - personal data boundary, accent bar |
ike-teal | #1A9B8A | Verified / live / coordinated state |
surface-dark | #0D0D0D | Canvas |
surface-card | #141414 | Card surface |
surface-border | #2A2A2A | Hairline borders |
Component classes: ike-card, ike-card-gold/teal/red, ike-btn-gold/red/ghost,
ike-label, ike-badge-gold/teal/red, text-gradient-gold, text-gradient-ike,
glass, ike-accent-bar, ike-accent-bar-gold.
Fonts: Inter (sans), Syne (display), JetBrains Mono (mono). Loaded once via
Google Fonts in BaseLayout.astro.
- No employer name anywhere. This is a public constraint inherited from the
AIP launch state - see
about.astroand the article copy. - AIP is a brand, Ike Analytics is a brand, this site is the Ike Analytics surface. The protocol has its own surface (the GitHub repo + whitepaper). Don't conflate them in copy. The footer carries an "Apache-2.0" tag near the AIP link as a reminder that the protocol is openly licensed for adoption.
- Dark-only. No light mode. This matches PSP and the protocol aesthetic.
This site is the personal surface for Isaac Liem. The article text and the site code are © Isaac Liem. The AIP protocol is dual-licensed: the spec is under CC BY 4.0 and the reference implementation is under Apache License 2.0 - the most adoption-friendly strong-copyleft that's still open source by the OSI, with the explicit patent grant. See github.com/githubscum/aip-protocol. ike OS (the reference runtime that ships AIP) is under AGPL-3.0-or-later; see github.com/githubscum/psp. The protocol and the runtime are licensed differently on purpose: AIP is meant to be adopted by anyone, including closed-source products, while ike OS itself stays copyleft to keep forks of the runtime accountable.