Terminal
My portfolio as an Ubuntu terminal: every command is resolved on the server.
- Type
- Web
- Year
- Categories

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, andgit logtells my career. ls,cd,catandtreewalk a virtual file system built from the real content of the portfolio.jp2adraws pictures as text, andvi,nano,lessandmanopen 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.
Show the data: The 39 commands, by kind
| Category | Commands |
|---|---|
| Shell | 9 |
| Portfolio | 8 |
| Files | 7 |
| Visitor | 5 |
| Programs | 5 |
| Legal | 3 |
| Easter eggs | 2 |
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.

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.



