Uses
Hardware, software, and services I lean on day-to-day. This list is the exact stack running yigittanriverdi.com — if it works for my site, it's on this page.
inspired by uses.tech · updated
Editor & AI
What I'm looking at for 8 hours a day.
- VS Code ↗Default editor. Nothing fancy in the config — tabs = 2, format on save, that is it.
- Claude Code ↗This entire site was rebuilt in a Claude Code session. I use it for real engineering work now, not as autocomplete.
- GitHub CopilotTODO: on or off? (I have it off when Claude Code is driving.)
OS & terminal
- Windows 11Primary workstation. WSL2 for Linux-flavoured tooling when something insists.
- Git BashMy default shell. Unix-style commands on a Windows box without the WSL tax.
- PowerShell 7When I want a native terminal.
- Windows Terminal ↗Tabbed terminal host for Git Bash + PowerShell + the occasional wrangler tail.
Languages & runtimes
- TypeScriptDefault language for anything bigger than a throwaway script.
- Node.js 22 LTSRuntime for CLIs and local dev.
- pnpm ↗Package manager. Fast, disk-efficient, strict about peer deps.
- Wrangler ↗Cloudflare CLI. deploy / dev / tail / d1 execute is 90% of my day.
Web stack (this site)
Literally what yigittanriverdi.com runs on.
- Astro 6 ↗SSR mode, Cloudflare adapter, zero JS on blog pages. Islands only when interactivity actually matters.
- Tailwind CSS v4 ↗CSS-first @theme tokens, no config file needed for small projects.
- Drizzle ORM ↗Typed queries over D1. Migrations as plain SQL files. Tiny footprint.
- Zod v4 ↗Validation at every API boundary. Strict schemas, no free text.
- Marked + rehype-sanitize + ShikiMarkdown pipeline for the blog. Parse, sanitise, syntax-highlight, done.
Testing & tooling
- Vitest + @cloudflare/vitest-pool-workers ↗Tests run inside a real Workers runtime with an in-memory D1. No mocks of Cloudflare APIs — they are the Cloudflare APIs.
- Biome ↗Lint + format in one tool. Fast, opinionated, zero config drift with ESLint + Prettier.
- TypeScript strict + noUncheckedIndexedAccessThe combination that makes the type system actually earn its keep.
Hosting & infra
One cloud. Everything runs on it.
- Cloudflare Workers + Static Assets ↗Single deployment unit. SSR HTML + API + static files out of one wrangler.toml.
- Cloudflare D1 ↗SQLite at the edge for posts, projects, settings, login-attempts.
- Cloudflare R2 ↗S3-compatible object storage for blog images + the CV PDF.
- Cloudflare Web AnalyticsFree, privacy-friendly, no cookies, no consent banner. Core Web Vitals for free.
- Cloudflare DNSSame dashboard, same auth, same proxy. I stopped bothering with Route 53 or NS1 for personal stuff.
Fonts I actually look at
Same fonts in the site and my editor.
- Hanken Grotesk ↗Body + UI sans across the whole site. A touch more character than the usual grotesques.
- JetBrains Mono ↗Editor font, and every mono caption, nav item, tag, and code block on the site.
- Bricolage Grotesque ↗The big display face on the hero and page titles. Loads of personality without leaving the grotesque family.
Hardware
The physical layer.
- LaptopTODO: make/model.
- KeyboardTODO: make/model — mechanical?
- MonitorTODO: size / refresh.
- HeadphonesTODO: brand/model.
- MicTODO: brand/model.
What I'd pick again
If I were starting a new project tomorrow.
- Cloudflare Workers over VercelSame DX, half the cost at the traffic sizes I operate at, genuinely fullstack (D1 / R2 / KV), no cold starts worth mentioning.
- Astro over Next.js for content-heavy sitesZero-JS-by-default is load-bearing for SEO + LCP. Islands when I need interactivity.
- Drizzle over Prisma for new projectsLighter runtime, no separate query engine, SQL-native. Prisma still wins for teams that need migrations as a service.
- Biome over ESLint + PrettierOne config, one binary, 10x faster. Haven't missed any rules.
- Claude Code as a pairing surfaceNot autocomplete. Actual engineering-level pairing. Changed how I scope side projects.