DK · Senior Software Engineer
lekker.dev
This website
The site you are on. A typed content model, a small React app, and static HTML so the words are not trapped in JavaScript.
Design and engineering. 2026. This deployment.
Open the live project · View the repository
Overview
lekker.dev is a personal site, so it should be cheap to run and obvious to change. The page is React, the words live in one TypeScript module, and the production build also writes a static page for each route. That static page is what you get with JavaScript off, and it is what a crawler can read without executing the app.
The problem
The previous site was one long component tree styled as glass cards, with a test that still looked for the Create React App starter, and with dates that shifted a day in US time zones. It did not have room for a real project write-up.
Architecture
Create React App and React Router, because that is the stack the repository already deployed to GitHub Pages. Content is a typed module imported by the screens and by the static HTML generator, so the visible copy and the no-JavaScript copy come from the same sentences. Design tokens are CSS variables. Light and dark are a data-theme attribute, set before paint from the saved choice or the system preference. Fonts are self-hosted. There is no analytics tag.
Decisions
- Stay on the existing React build rather than replatforming a one-person site.
- Write employment dates as labels, not as local Date parsing of a UTC midnight.
- Give each project a real URL with its own title, description, and text.
- Keep professional write-ups high level. Personal projects can be specific, because the source is public or the game is already on this domain.
Trade-offs
- Client-rendered React is not the fastest possible portfolio. The static HTML, the small dependency set, and the absence of a tag manager are the compromise.
- A print view stands in for a PDF. I did not want to check in a CV that would drift from this page.
Where it stands
One site, one content module, project pages, and a print-ready CV. Slidy Guy stays at /slidy-guy, published from its own project rather than copied into this repository.
Stack
- React
- TypeScript
- React Router
- CSS
- GitHub Pages
Back to lekker.dev