Portfolio MMXXVI

Kaine

Building at the intersection of code and culture.

A portfolio that
deploys itself.

Tag a GitHub repository portfolio and it gets picked up, built, and deployed automatically — no manual steps required.

Access is tiered: some projects are public, others require signing in. Specific projects can also be shared directly with individuals regardless of their tier.

Everything runs on a Synology NAS, a Cloudflare Tunnel, and Netlify — keeping costs near zero while staying fully self-hosted.

System
Architecture

01 GitHub Repository tagged "portfolio" topic
02 NAS Build Script clone → npm build → dist/
03 Portfolio Repository committed to public/projects/
04 Netlify builds & serves kaine.life
01 Visitor browses kaine.life
02 Astro SSR Netlify Edge · per-user render
03 PocketBase API api.kaine.life · users, tiers, projects
04 Synology NAS PocketBase running in Docker

The build pipeline and runtime share Netlify as their anchor —
one deploys the site, the other serves it.

Tech
Stack

01 Astro
SSR Framework v5, Netlify adapter
+

Modern web framework built around the concept of islands architecture — renders HTML server-side and ships zero JavaScript by default. This site uses Astro 5 with the Netlify SSR adapter for per-request rendering and cookie-based auth.
docs.astro.build →

02 PocketBase
Database & Auth Self-hosted on NAS
+

Open-source backend packaged as a single Go binary. Provides a SQLite-backed database, real-time subscriptions, built-in authentication, and an admin dashboard — all self-hosted on a Synology NAS, exposed through a Cloudflare Tunnel.
pocketbase.io/docs →

03 Netlify
Hosting & CI/CD Edge functions, auto-deploy
+

Platform for deploying and hosting web projects. Triggers a full site rebuild on every git push to the portfolio repository, handles automatic HTTPS, and runs Astro's SSR via Netlify Edge Functions for low-latency per-user rendering.
docs.netlify.com →

04 Cloudflare
Tunnel & DNS Zero-trust NAS exposure
+

Network infrastructure and security platform. The Tunnel feature creates an outbound-only encrypted connection from the NAS to Cloudflare's edge, making PocketBase reachable at api.kaine.life without opening any firewall ports.
developers.cloudflare.com →

05 GSAP
Animations ScrollTrigger, timelines
+

Professional-grade JavaScript animation library with a minimal footprint. Used throughout this page for the hero entrance timeline, scroll-triggered stagger reveals on architecture rows, and the smooth stack row animations on load.
gsap.com/docs →

06 GitHub API
Live Metadata Stars, forks, topics
+

REST API for accessing repository data. Used server-side at request time to fetch live star counts, fork numbers, language breakdowns, and the "portfolio" topic tag that triggers automatic inclusion of a repo in this site.
docs.github.com/rest →