Live in the browser — no install

Every page is a shell command.

A terminal-first portfolio rendered with xterm.js. Explore a developer profile through a real shell — virtual filesystem, tab completion, command history, and daily GitHub data with zero runtime API calls.

❯ tidepool — visitor@real-fruit-snacks: ~
visitor@real-fruit-snacks:~ $ ls projects/ about.md contact.md resume.md skills.md visitor@real-fruit-snacks:~ $ cat about.md # A whole tiny operating system in a browser tab. visitor@real-fruit-snacks:~ $ repos ┌──────────────┬───────┬─────────────────────────┐ │ repo │ stars │ description │ ├──────────────┼───────┼─────────────────────────┤ │ Tidepool │ ★ 12 │ Terminal portfolio │ └──────────────┴───────┴─────────────────────────┘ visitor@real-fruit-snacks:~ $
14 commands · Tab completes · ↑↓ history · xterm.js

Capabilities

A real shell, not a gimmick.

Fourteen commands over a virtual Unix filesystem, rendered by xterm.js with 24-bit ANSI color — the same terminal engine VS Code uses.

Virtual terminal

Full xterm.js implementation with 24-bit ANSI color, 1000-line scrollback, and clickable links via addon-web-links.

Virtual filesystem

Navigate directories and read files with standard Unix semantics — ~, -, and .. all work as you'd expect.

14 core commands

From help to neofetch — a categorized catalog with aliases, so ls, dir, and ll all land somewhere sensible.

Data automation

A daily GitHub Action fetches repo data and commits it to github.json — no API tokens or runtime calls ever reach the frontend.

Deep linking

Every command is bookmarkable — #neofetch or #cat about.md in the URL auto-runs on page load.

Completion & history

Tab completes commands and file paths; arrow keys browse a 200-entry history persisted in localStorage on your device only.

Reference

The shell surface.

Every page in the portfolio is a command. Tab completes, arrows browse history, and the URL hash makes any of it permalinkable.

tidepool / commands
Shell
help · ?Categorized command listing
clear · clsClear the terminal
historyNumbered command history
whoamiDisplay current user
Filesystem
pwdPrint working directory
cdChange directory (~ · - · ..)
ls · dir · llList directory in grid or long form
cat · less · moreDisplay file contents
Portfolio
aboutAbout me
contact · email · socialsContact information
resume · cvView resume
skills · tech · stackSkills with progress bars
repos · projectsGitHub repositories table
neofetch · fetchSystem info with ASCII art
Keyboard
TabAutocomplete commands and file paths
↑ / ↓Browse command history
Ctrl+C · Ctrl+L · Ctrl+UCancel input · clear screen · clear line

Get started

Try it, run it, make it yours.

No install

Try it online

  1. Open the live demo.
  2. Type help to see the catalog.
  3. Try neofetch, repos, or cat about.md.

Run locally

  1. Clone Real-Fruit-Snacks/Tidepool (Node 20+).
  2. Run npm install.
  3. Run npm run dev and open the printed URL.

Make it your own

  1. Fork the repo and edit src/content.js with your bio, resume, and skills.
  2. Enable GitHub Pages (GitHub Actions source).
  3. Push — the included workflow builds and deploys, and refreshes GitHub data daily.