The story of the Portfolio — from Mission Control to sci-fi with 529 commits and 218 tests
Portfolio·

The story of the Portfolio — from Mission Control to sci-fi with 529 commits and 218 tests

The portfolio that became a spaceship

There’s an unwritten rule in the dev job market: your portfolio must be as good as the code you ship. But in May 2026, mine was just a generic “Mission Control Portfolio” with a grid of projects.

Today it’s an interactive spaceship: multi-layer parallax scene with SVG cockpit, 5 playable mini-games, a terminal with 15+ commands, full PT/EN i18n and 218 tests holding it all together. All with a cinematic cyan+black theme — no template.

Context — from template to playground

The initial commit (06/05/2026) was modest:

607df2d  Initial commit: Mission Control Portfolio

Next.js + React + Tailwind, the basics of every portfolio. But the visual identity changed fast: the Treasure Planet theme was archived in June and the sci-fi cyan+black aesthetic with parallax layers (L0-L3) and animated SVG cockpit was born.

The conceptual shift: instead of showing my projects in static cards, I wanted visitors to interact with the portfolio as if they were inside a spaceship cockpit. That’s where the 5 mini-games came from.

The struggle — games, animations, and the deploy that broke

The 5 mini-games

Each game is an experiment: Snake, Pong, a puzzle and others — embedded via iframe with React loaded from CDN (unpkg). That brought the first classic problem:

// src/components/MiniGames/ — real loading state
const [loading, setLoading] = useState(true)
// spinner + "Loading game..." while the iframe loads React + Babel from CDN

Without the loading state, the iframes appeared blank for seconds. And on mobile, the game cards scrolled vertically instead of staying fixed — the fix was overflow-y-hidden + min-h-[160px] to lock the layout.

The entry animation that almost never ran

GSAP was the villain: it broke the build on Vercel because it wasn’t in dependencies — only devDependencies. The local build passed, the deploy broke. It was the first of many “works here but not there” moments.

# The 17/06 fix — GSAP to real dependencies
npm install gsap --save-prod

The manual deploy that became routine

The Portfolio lives in three environments: Vercel (production), self-hosted on 3001, and staging on 3000 through Capivara’s proxy. The Vercel deploy was manual for a long time — vercel --token "$VERCEL_TOKEN" --prod — until CI/CD automated it.

Resolution — the showcase that answers commands

The coolest moment: the interactive terminal. Type help and see 15+ commands; projects lists the projects; contact opens the form. It’s the portfolio talking to the visitor.

The contact form also became robust: validation + rate-limit + LGPD + Resend integration for email. And the Cookie Banner with LGPD consent — because a public portfolio with analytics needs to respect the law.

The final architecture:

  • Parallax scene — grid + SVG cockpit + HUD panels + particles form the entrance
  • 5 mini-games — tabs with one at a time + “view all” toggle
  • Terminal — 15+ commands, keyboard shortcuts on desktop
  • i18n PT/EN — every component translated
  • Umami Analytics — events, pageviews, heatmaps (self-hosted on 3100)

Metrics

Metric 06/05 (birth) Today
Commits 1 529
Tests 0 218+
Mini-games 0 5
Terminal commands 0 15+
Environments 1 3 (Vercel + 3001 + 3000)
Lint errors 0
Parallax layers 0 4 (L0-L3)

Lessons

The Portfolio taught me that brand experience is code. A portfolio doesn’t just show what you know — it demonstrates it. Every mini-game, every animation, every terminal command is a silent job interview happening in real time.

And the practical lesson: always test the build in the deploy environment. GSAP in devDependencies broke production three times until I understood that “works locally” doesn’t mean “works on Vercel”.

~/lifelog — bash
$cat about.txt
╔══════════════════════════════════════╗
║  Samuel Medeiros                    ║
║  Senior Software Engineer           ║
║  Stack: Python · TypeScript · Rust  ║
║  Projetos: Arachne, Dogwalk,        ║
║            Capivara, TatuEngine      ║
╚══════════════════════════════════════╝
      
$