How I built this site: the decisions and the reasons
Contents
A personal site is the most honest space a developer gets: no client, no deadline, no excuses. Every decision is yours, the good ones and the ones you'll cringe at later. This post is a record of the decisions behind this site, and the reasons for them.
Why not an off-the-shelf service?
A ready-made linktree service would have been enough to gather my links; it takes ten minutes to set up. I built my own site anyway, because I wanted three things: my own design language, full ownership of my content, and a playground for trying new ideas. There's a quieter reason too: the domain itself is a résumé. Anyone landing on omerozturk.xyz sees not just my links, but how I work.
Technical choices
The site is built with Next.js 15 (App Router), React 19 and Tailwind CSS, deployed on Vercel. There is no database: links, projects and these posts live in TypeScript files, and everything compiles to static HTML at build time. At this scale, that's both the fastest and the lowest-maintenance path. No server costs, a tiny security surface, and git itself is the backup strategy.
Two languages, one file tree
Turkish is the default language, English secondary. It's not just the content that localizes; the addresses do too: /tr/hakkimda and /en/about are the same page. I solved this without duplicating the folder structure. The filesystem has a single path, and a middleware silently rewrites the English address onto it. Search engines are told via hreflang tags that the two URLs are two languages of one page, so the languages complement each other instead of competing.
The layer visitors never see
The most labor-intensive part of the site is the part nobody will ever notice: the contact form's spam protection (an origin check, a rate limit, and a hidden trap field only bots fill in), the sitemap, social-share images generated per language, redirection based on browser language. None of it goes in the shop window; but it's this layer, not the shop window, that decides whether a site feels professional.
Is it finished? No. A personal site is by nature a project that never ends. But it's live, it's fast, and every piece is where it belongs. The rest comes with time.