Skip to content

Repository files navigation

ikeanalytics.com - personal site

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.

Quick start

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:4321

Project layout

ikeanalytics-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

Authoring an article

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-15
tags: ["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.

Deploy

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.

The Ike color brands

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.

Constraints

  • No employer name anywhere. This is a public constraint inherited from the AIP launch state - see about.astro and 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.

License

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.

About

ikeanalytics.com - Astro site, dark editorial system

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages