const useScroll = () => { const [y, setY] = useState(0); useEffect(() => { … }, []); return y; };
.card { display: grid; place-items: center; container-type: inline-size; }
export default async function Page() { const data = await fetch('/api'); }
$ npm run build ✓ 128 modules transformed ✓ built in 1.2s
interface Dev { name: 'Kai'; loves: 'accessible UI'; }
> hello, world_

I'm Kai Reyes,a frontend developerwho ships.

I build fast, accessible interfaces with React, TypeScript and a lot of care for the details. Currently open to junior and mid-level roles.

// 01 skills

The toolbox.

Languages

  • TypeScript
  • JavaScript
  • HTML & CSS

Frameworks

  • React
  • Next.js
  • Tailwind

Tooling

  • Git & GitHub
  • Vite
  • Testing Library

Design sense

  • Accessibility
  • Figma
  • Motion
// 02 projects

Selected work.

project_01

TaskLane

A drag-and-drop kanban board with offline support, keyboard shortcuts and real-time sync. Demo project description, replace with yours.

ReactTypeScriptIndexedDB
project_02

Weatherly

A tiny weather app with a hand-drawn animated forecast and an accessible colour palette for every condition.

Next.jsSVGOpen API
project_03

Pixel Pals

A pixel-art avatar maker with palette swaps and PNG export, built with canvas and a small state machine.

CanvasViteZustand
kai@portfolio: ~/career
// 04 contact

Let's build something
together.

I'm available for junior and mid-level frontend roles and freelance projects.

A Scrollstory by Skooled · Moving pages