SSH Portfolio
A portfolio that lives on an SSH port. No browser, no HTML. You connect with ssh and get a React-rendered TUI streamed back over the channel.
2026SoloNodessh2InkReactfiglet
npm start # SSH server on port 2222
ssh localhost -p 2222
An ASCII portrait, a figlet banner, a one-line bio, and a tab menu: home, creations, skills, reflections, contacts. Arrow keys switch tabs; on Creations, up and down move through the project list and the detail panel updates live. q quits.
How it works
ssh2accepts a TCP connection and negotiates an SSH session.- When the client requests a PTY and a shell, the server hands the data stream to Ink's
render()as bothstdinandstdout. - Ink renders React components by writing ANSI escape sequences to that stream. The client's terminal interprets them.
- Keystrokes flow back through the stream and reach
useInputhooks inside React components.
The SSH stream is not a real PTY, so server.js stubs isTTY, setRawMode, ref and unref, and translates \n to \r\n because there is no kernel ONLCR to do it.
Content is separated from layout: projects, skills, education and contacts are plain data files, so changing what visitors see needs no JSX.