Skip to content
View JasperVercammen's full-sized avatar
  • @MinzeHealth
  • Lier, Belgium

Block or report JasperVercammen

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
jaspervercammen/README.md

Jasper Vercammen — portfolio

A single-page portfolio that "writes itself": a macOS-style window holds a split view where a code editor types out jasper.tsx character by character while the right pane assembles the rendered CV section by section. The session stays open — opening a case study, toggling the theme or resizing the window appends new lines to the editor.

Vite + React + TypeScript, no runtime dependencies beyond React.

Getting started

npm install
npm run dev
ScriptWhat it does
npm run devDev server on http://localhost:5173
npm run buildTypecheck + production build
npm run previewServe the production build
npm run typecheckTypecheck only

Structure

src/
App.tsx window state: theme, size, minimize/close, open case study
components/ Window chrome, Terminal, ContentPane, CaseStudy, ConfirmDialog
components/sections/ one component per CV section
data/ the typed code + reveal map, CV copy, project case studies, assets
hooks/ useTypewriter, useTheme, useMediaQuery
styles.css design tokens + all component styles
design/ the original HTML design reference and its brief

How the typing drives the page

src/data/code.ts holds the source that gets typed and a trigger substring per section. Each trigger's end offset becomes that section's reveal threshold, so a section fades in exactly when its render(...) call finishes typing. useTypewriter owns the character index and exposes typeLine(), which the interactive bits use to append to the session.

Layout responds to two things: the real viewport (max-width: 820px → full-bleed, no window chrome, editor becomes a bottom sheet) and the green traffic light, which shrinks the window to a 400px phone preview. Both set data attributes on .desk; the CSS custom properties do the rest.

Theme lives in localStorage under jv-theme.

Pinned Loading

  1. react-native-date-time-spinnerreact-native-date-time-spinnerPublic

    TypeScript 10

  2. yarn-audit-reportyarn-audit-reportPublic

    This tool generates beautiful HTML or PDF reports from Yarn 4 audit results, helping you visualize and analyze security vulnerabilities in your project dependencies.

    HTML

  3. react-native-animation-demoreact-native-animation-demoPublic

    JavaScript 2

  4. morning-routingmorning-routingPublic

    TypeScript

  5. cultuurnet/uitpas-mobile-appcultuurnet/uitpas-mobile-appPublic

    UiTPAS mobile application

    TypeScript 2

  6. icapps/react-thunk-templateicapps/react-thunk-templatePublic

    JavaScript 2 1