Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/guest-portfolio.dev/llms.txt
Use this file to discover all available pages before exploring further.
Overview
These commands surface the actual portfolio content — bio, skills, career history, case studies, and a contact form — all rendered as rich React components inside the terminal window.
whoami / cat about.md
Syntax
Description
Both forms are handled by the same switch branch and render the AboutOutput component — a neofetch-inspired panel with an ASCII portrait on the left and a two-column info grid on the right.
Output
.----.
_.'__ '.
.--($)($$)---/#\
.' @ /###\ guest@portfolio.dev
: , ##### -------------------
'-..__.-' _.-\###/ OS: Arch Linux x86_64 (btw)
`;_: `"' Host: Human Body v1.0
.'""""". Uptime: 28 years, 4 months, 12 days
/, ya ,\\ Packages: 1337 (npm), 42 (pip)
// hack! \\ Shell: zsh 5.8
`-._______.-' Editor: nvim
___\_\__//___ Languages: TypeScript, Python, Rust, Go
/___/____\___\ Coffee: 4 cups/day
Sleep: Error: process not found
Below the info grid, a short bio paragraph is rendered in plain white text.
| Field | Value |
|---|
| OS | Arch Linux x86_64 (btw) |
| Host | Human Body v1.0 |
| Uptime | 28 years, 4 months, 12 days |
| Packages | 1337 (npm), 42 (pip) |
| Shell | zsh 5.8 |
| Editor | nvim |
| Languages | TypeScript, Python, Rust, Go |
| Coffee | 4 cups/day |
| Sleep | Error: process not found (rendered in red) |
./skills.sh
Syntax
Description
Executes the SkillsOutput component, which animates through 9 skills across three categories. Each bar appears one at a time at 150 ms intervals, giving a satisfying “loading” feel. Once all bars have rendered, a green completion message appears.
Skills Data
Each bar is 20 characters wide — filled blocks (█) for the proficiency level and dim empty blocks (░) for the remainder.
Languages
| Skill | Level | Bar |
|---|
| TypeScript | 90% | ██████████████████░░ |
| Python | 85% | █████████████████░░░ |
| Rust | 60% | ████████████░░░░░░░░ |
Frameworks
| Skill | Level | Bar |
|---|
| React | 95% | ███████████████████░ |
| Node.js | 85% | █████████████████░░░ |
| Next.js | 80% | ████████████████░░░░ |
Tools
| Skill | Level | Bar |
|---|
| Docker | 75% | ███████████████░░░░░ |
| Git | 90% | ██████████████████░░ |
| AWS | 70% | ██████████████░░░░░░ |
Example
Executing skills.sh...
[Languages]
TypeScript ██████████████████░░ 90%
Python █████████████████░░░ 85%
Rust ████████████░░░░░░░░ 60%
[Frameworks]
React ███████████████████░ 95%
Node.js █████████████████░░░ 85%
Next.js ████████████████░░░░ 80%
[Tools]
Docker ███████████████░░░░░ 75%
Git ██████████████████░░ 90%
AWS ██████████████░░░░░░ 70%
Script execution completed successfully.
git log
Syntax
Description
Renders the GitLogOutput component — three career entries formatted as authentic git commits, complete with hash, author, date, and an indented multi-line message body.
Only git log is handled. Any other git subcommand (e.g. git status, git diff) returns:
git: '<subcommand>' is not a git command. See 'git --help'.
Example
commit a1b2c3d
Author: guest <guest@portfolio.dev>
Date: Mon Oct 24 09:00:00 2023 -0400
feat(career): Senior Frontend Engineer at TechCorp
- Led migration from Vue to React
- Mentored 3 junior developers
- Reduced bundle size by 40%
commit e4f5g6h
Author: guest <guest@portfolio.dev>
Date: Wed Jun 15 10:30:00 2021 -0400
feat(career): Full Stack Developer at StartupInc
- Built MVP from scratch using Next.js and Node
- Implemented CI/CD pipelines
- Handled 10k daily active users
commit i7j8k9l
Author: guest <guest@portfolio.dev>
Date: Mon Jan 10 08:15:00 2019 -0500
feat(career): Junior Web Developer at AgencyLLC
- Developed WordPress themes
- Created responsive landing pages
- Learned the hard way not to force push to main
man [page]
Syntax
Description
Renders the ManOutput component for a named manual page. Currently one case study is available: migration-to-k8s, located at ~/case-studies/migration-to-k8s.
The rendered page follows the classic Unix man page structure with a header bar, and sections: NAME, SYNOPSIS, DESCRIPTION, and CHALLENGES.
Available Pages
| Page | Content |
|---|
migration-to-k8s | Case study — moving a Rails monolith to Kubernetes microservices |
Example
MIGRATION-TO-K8S(1) User Commands MIGRATION-TO-K8S(1)
NAME
migration-to-k8s - A case study on moving a monolith to Kubernetes
SYNOPSIS
migrate [OPTIONS] monolith microservices
DESCRIPTION
The migration-to-k8s project involved breaking down a 5-year-old
Ruby on Rails monolith into Go and Node.js microservices,
orchestrated via Kubernetes.
This resulted in a 40% reduction in infrastructure costs and
improved deployment frequency from bi-weekly to multiple times
a day.
CHALLENGES
- Zero-downtime database migration using the strangler fig pattern.
- Training the existing engineering team on container orchestration.
- Setting up robust observability with Prometheus and Grafana.
Error Cases
No argument:
What manual page do you want?
Unknown page:
No manual entry for unknown-topic
mail [subject]
Syntax
mail [subject]
mail Hello there
Description
Opens an in-terminal vim-style email composer rendered by the MailOutput component. The editor has two modes — INSERT and NORMAL — and shows a status bar at the bottom, just like Vim.
Modes & Key Bindings
| Key | Mode | Effect |
|---|
ESC | INSERT → NORMAL | Switch to normal mode; status bar clears |
i | NORMAL → INSERT | Switch to insert mode; status bar shows -- INSERT -- |
: | NORMAL | Begin a command (status bar shows :) |
:wq + Enter | NORMAL | Send the message; triggers SMTP simulation |
:q! + Enter | NORMAL | Abort; prints Message aborted. |
Backspace | NORMAL (in : cmd) | Delete last character of the command |
Sending a Message
After :wq, the SMTP simulation sequence plays before the final confirmation:
Resolving mx records for portfolio.dev...
Connecting to smtp.portfolio.dev:587...
TLS connection established.
Authenticating...
Sending message...
Please wait...
Then, after ~2 seconds:
Message queued for delivery. Thank you!
Example
┌─────────────────────────────────────────────────────┐
│ To: guest@portfolio.dev Subject: Saying hello │
│ │
│ _ │
│ │
│ │
│── INSERT ──────────── ESC for normal, :wq/:q! ──────│
└─────────────────────────────────────────────────────┘
theme [color]
Syntax
Description
Switches the terminal’s CSS colour theme by updating the --color-primary custom property. Two values are accepted:
| Value | Effect |
|---|
green | Classic green phosphor CRT look |
amber | Warm amber phosphor CRT look |
Example
Invalid value:
Usage: theme [green|amber]
clear
Syntax
Description
Empties the terminal’s history array, wiping all previous command output from the screen. The prompt reappears at the top, clean. This is the only command that does not push a new history entry — it calls clearHistory() and returns immediately.
help
Syntax
Description
Renders a two-column CSS grid that lists every available command on the left (in green bold) and a one-line description on the right. This is the fastest way to get a quick-reference overview without leaving the terminal.
Example
help Show this message
ls [dir] List directory contents
cd [dir] Change directory
cat [file] Read file content
whoami Display user info
./skills.sh Execute skills script
git log View work history
man [page] Read case study manual
mail Send a message
clear Clear terminal
theme [color] Change theme (green/amber)