Source for my personal site, tomca.be.
Built with Next.js (App Router) and TypeScript. Styling with Tailwind CSS v4, motion with Motion, and a few WebGL pieces with Three.js.
- Next.js 15 / React 19
- TypeScript
- Tailwind CSS v4
- Three.js (signature shaders in
/lab) - Motion
npm install
npm run devThe site runs at http://localhost:3000.
Two integrations read from environment variables. Both are optional: the site renders fine without them, the related widgets just stay quiet.
Copy the template and fill in what you need:
cp .env.example .env.localSPOTIFY_*powers the "now playing" status in the hero. Create an app at the Spotify dashboard for the client id and secret, then obtain a refresh token.GITHUB_TOKENraises the rate limit for the "latest commit" widget. A read-only fine-grained token on public data is enough. The widget falls back to the anonymous API when it is absent.
app/routes, layout, metadata, API routescomponents/UI, includinglab/andink/for the WebGL worklib/content and the server-side integration helperspublic/static assets
Code is under the MIT License: reuse it freely, just keep the copyright notice. A credit is appreciated.
Content is not. The text, design and images (including public/me.jpg) are
all rights reserved. Please do not pass the site off as your own.