Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/apursley2012/windows-98/llms.txt

Use this file to discover all available pages before exploring further.

The Skills page lives at /skills and presents the portfolio owner’s technical abilities as an interactive MS-DOS terminal. On mount, the terminal auto-types a boot sequence that ends with a formatted skill readout. Once the boot sequence completes, the prompt becomes live and accepts typed commands including help, skills, clear, sudo hire-me, and exit.

Win98 Window configuration

PropertyValue
Window titleMS-DOS Prompt
Title bar iconterminal (Lucide), white
Width700 px
Height500 px
Interior backgroundBlack (#000000), text-[#5eead4] (cyan-teal)

Boot sequence

When the component mounts, a setInterval fires every 150 ms and appends lines from the Hs array one by one, producing a typewriter effect. The sequence ends with a C:\> prompt and the live input field becomes active.
// In main.js — Skills component boot lines (Hs array)
const Hs = [
  "Starting MS-DOS...",
  "HIMEM is testing extended memory...done.",
  "C:\\> systeminfo.exe",
  "",
  "Loading Developer Profile...",
  "=========================================",
  "FRONTEND: React, Vue, TypeScript, Tailwind",
  "BACKEND: Node.js, Python, PostgreSQL, Redis",
  "TOOLS: Git, Docker, AWS, Figma",
  "SOFT SKILLS: Communication, Problem Solving, Coffee Brewing",
  "=========================================",
  "",
  "Type 'help' for available commands.",
  "C:\\> ",
];

Available commands

Once the boot sequence completes, the terminal accepts the following commands:
CommandOutput
helpLists all available commands
skillsPrints Frontend: 95% | Backend: 85% | Design: 70%
clearResets terminal output to a single C:\> prompt
sudo hire-mePrints “ACCESS GRANTED. Initiating contact sequence…” then navigates to /contact after 1 500 ms
exitCalls navigate('/') to return to the desktop
Any unrecognised input prints Bad command or file name: [input], matching classic MS-DOS error messages.

Input and key handling

The live input is a transparent <input> element that blends visually into the terminal line. Pressing Enter triggers the command handler:
// In main.js — Skills component key handler
const handleKey = (e) => {
  if (e.key === "Enter" && !isBooting) {
    const cmd = input.trim().toLowerCase();
    // ... switch on cmd, update lines array, clear input
  }
};
Clicking anywhere on the terminal div focuses the hidden input via document.getElementById("terminal-input").focus().

Customizing the terminal

1

Edit the boot sequence

Find the Hs array in main.js and update the string entries. Add blank strings ("") for blank lines, or add more category rows following the KEY: value pattern already used.
2

Add a new command

In the handleKey function’s switch statement, add a new case with the command string and push response lines into the output array.
case "whoami":
  lines.push("Full-stack developer, coffee enthusiast.");
  break;
3

Change the boot interval speed

Find the setInterval call and change the 150 ms value. Lower numbers produce a faster typewriter effect; higher numbers slow it down for dramatic effect.
The sudo hire-me command navigates to /contact after a short delay. If you rename the contact route, update the navigate('/contact') call inside the sudo hire-me case to match.
The terminal output array is stored in component state (useState). Typing clear resets it to ["C:\\> "]. The state is not persisted — navigating away and back restarts the boot sequence from the beginning.

Win98Window

Props reference for the window wrapper used on this page.

Work

Work history page — a natural companion to the Skills page.

Theming

How to change retro color tokens including the terminal accent colors.

Architecture & Styling

Overview of Tailwind config, custom classes, and pixel font setup.

Build docs developers (and LLMs) love