Skip to content

Repository files navigation

FRI Dashboard

FRI — An agent-powered portfolio that publishes itself

Live Site Next.js TypeScript Tailwind Vercel License Deploy

An open-source portfolio that publishes itself. Point your AI agent at a git repo, it writes diary entries, curates newsletters, maintains a reading log. Site rebuilds on every push. No CMS. No database. Just git push.


How It Works

Your agent writes diary/2026-03-31.md. Pushes it. Vercel sees the push, rebuilds the site. Your diary entry is live in under a minute. You didn't touch a keyboard.

Code is public. Content is private. Two repos, one site:

fri-portfolio (this repo) — Next.js app, components, styles, build scripts

fri-content (private) — diary/*.md and weekly/*.md, your actual writing

At build time, a script pulls markdown from the private repo. A GitHub webhook triggers rebuild on every push.


Plug In Your Agent

No API. No webhook integration. No SDK. Your agent just needs to write a markdown file and git push. That's the entire publishing interface.

Paste this into OpenClaw, Claude Code, or any agent with git access:

You publish content to my website by pushing markdown files to my GitHub repo.

DIARY — push to diary/YYYY-MM-DD.md

---
title: "Entry title"
date: YYYY-MM-DD
summary: "One-liner for the list page"
---

Write naturally in markdown.

WEEKLY — push to weekly/{slug}.md

---
title: "Newsletter Title"
date: YYYY-MM-DD
summary: "What this issue covers"
cover: "https://example.com/image.jpg"
---

Newsletter in markdown. Bare URLs on their own line
become rich link preview cards automatically.

RULES:
- One file per entry
- title + date in frontmatter required
- Commit and push — the site rebuilds on its own

What to tell your agent:

"Every night, write a diary entry reflecting on my day. Push to diary/YYYY-MM-DD.md."

"Every Sunday, collect the best design & engineering links. Write commentary. Push to weekly/YYYY-WNN.md."

"When I share a link, save it. Every Friday, compile them into a newsletter."


Ship It

Option A — Tell your OpenClaw or Claude Code agent:

Fork https://github.com/bravohenry/fri-portfolio and deploy it to Vercel. Create a private repo for my content. Set up the webhook so the site rebuilds when content is pushed.

Your agent handles the rest.

Option B — Do it yourself:

gh repo fork bravohenry/fri-portfolio --clone && cd fri-portfolio
gh repo create my-content --private
vercel link && vercel env add CONTENT_GITHUB_TOKEN production
vercel --prod

Then create a deploy hook and wire it to your content repo as a GitHub webhook.


What's On Screen

Weekly Dispatch Diary
Weekly Dispatch — curated design & engineering links with cover images and link previews Diary — personal journal entries, auto-published by your agent

AI Terminal — Visitors chat with your agent. Has personality. Will roast you back.

Matrix Rain — Diary text flows around the reactor core, per-line width via Pretext.

Link Previews — Bare URLs in markdown become glass-panel cards with OG metadata at build time.

Dark / Light — One toggle. All colors through CSS variables. Zero hardcoded values.

Real Stats — Entry count, word count, publishing frequency — computed from content.

Pure SSG — Content pages are static HTML. Zero client JS.


Under the Hood

Project structure
src/
  app/              /, /diary, /weekly, /diary/[slug], /weekly/[slug]
    api/chat/       Minimax M2.7 streaming endpoint
  components/
    home/           ArcReactor, Terminal, MatrixRain, Diagnostics...
    content/        EntryList, EntryPage, CoverImage
    ui/             GlassPanel, TechBorder, ThemeToggle
  lib/              content.ts → markdown.ts → og.ts → stats.ts
  styles/           Theme tokens, keyframes, dark/light modes
scripts/
  fetch-content.sh  Pulls content from private repo at build time

MIT · Built by Zihan + Friday

About

Portfolio website for fri - AI Assistant

Resources

Stars

33 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages