Skip to content

Lucas Santhiago Portfolio

Live

Personal portfolio website with selected iOS and web projects.

OpenPrivate repository

Overview

This portfolio is built to the Human Interface Guidelines rather than to web convention: the 8pt grid, 17px body, 44px minimum target, inset grouped lists and spring physics are the iOS metrics, used as a design system. No phone mockups, no drawn bezels.

Problem

A scattered online presence made it hard to showcase product depth. This site centralizes projects, tech stack, and proof of execution.

Trade-off

It was a single-page app, which meant the initial HTML was an empty div: crawlers, Safari Reader and LLM crawlers saw nothing. Every route is now prerendered to static HTML. That cost the simplicity of one bundle and one entry point, and bought content that exists without JavaScript. For a site whose whole argument is content first, an empty document was not defensible.

What it does

iOS semantic colours, real values — three background levels, alpha-carrying labels and separators
Per-project tint: the accent is the tint colour of whatever you are reading
Inset grouped lists as the only layout primitive — no card grid anywhere
Spring physics throughout; not one cubic-bezier in the codebase
Static HTML per route, so the content exists before the JavaScript runs
Bilingual content (EN/PT-BR)

Stack

ReactTypeScriptTailwind CSSFramer MotionViteView Transitions API

What I took from it

Reading the HIG as a specification for a website, not as a theme. The tells that make an interface read as native are measurable — body size, target size, separator weight, spring constants — and most of them cost nothing to get right.

More web work

Work

Set in Uncut Sans and Commit Mono. Built to the iOS metrics: 8pt grid, 17px body, 44px targets, spring physics.

© 2026 Lucas Santhiago. All rights reserved.