Skip to content
mreysei · Michael Reyes
Theme

Terminal

My portfolio as an Ubuntu terminal: every command is resolved on the server.

About the project

My portfolio turned into a fullscreen, Ubuntu-like terminal: the same information as the main site (who I am, my career, my projects and my articles) explored with commands.

Goal. To give developers and technical recruiters a way to get to know me that speaks their language and sticks, without giving up what matters: every command is resolved on the server and every answer is text, so it is indexed, read by screen readers and works without JavaScript.

What it does.

  • It starts with neofetch, and git log tells my career.
  • ls, cd, cat and tree walk a virtual file system built from the real content of the portfolio.
  • jp2a draws pictures as text, and vi, nano, less and man open files read-only.
  • 39 commands in all, eight colour themes, a language switch with locale, tab completion and suggestions when a command does not exist.
  • Two easter eggs waiting for whoever tries real commands.
  • From the backoffice I switch each command on or off, see which ones are used and collect as ideas the ones visitors type that do not exist yet.
The 39 commands, by kind Most are shell, portfolio or file commands.
Show the data: The 39 commands, by kind
The 39 commands, by kind
CategoryCommands
Shell9
Portfolio8
Files7
Visitor5
Programs5
Legal3
Easter eggs2

SEO. Only one page per language is indexed (Spanish, English and Japanese), with its own canonical, hreflang with x-default, a sitemap and robots. Its structured data (WebSite and WebPage) points to the person of the main portfolio, and command answers are never indexed.

Accessibility. It works without JavaScript: the command line is a real form. Focus stays on the line without trapping the keyboard, the history is a log region that screen readers announce, every text drawing has its description, and all eight themes pass a 4.5:1 contrast. It supports 400% zoom and honours the preference for reduced motion.

Performance. A single client component within a 25 kB budget, and the Ubuntu Mono typeface hosted on the site itself and trimmed to the characters it uses.

Security and privacy. Commands are interpreted on the server and never run a real shell. They have limits on length, words, chained commands and answer size, the content security policy uses a nonce per request, the origin is checked and requests are rate-limited. What is typed after sudo, su or passwd is never recorded.

The path of a command

Architecture and quality. Next.js with a hexagonal architecture in six modules and 55 test files, which pass with formatting, lint and types on GitHub Actions before every deployment. It reads the content from the platform's private API with a key of its own.

Status. Live since October 2026.

Technologies

Screenshots