Skip to content
Anton Van Eechaute, home

Projects

Tadoku

2019–presentVisit siteGitHub

Tadoku is a friendly foreign-language immersion contest and tracking platform aimed at building a habit of reading and listening in your non-native languages.

A minimal viable product was tested in 2019 and the website officially launched in 2020. Since then it has hosted 40+ official contest rounds, with up to 130 participants in a single round.

How it's built

The frontend is a set of TypeScript apps built with Next.js and TanStack Start, styled with TailwindCSS. There's also a design system.

The backend is a Go API on PostgreSQL, with Valkey caching the leaderboards. Everything lives in one Bazel monorepo and is deployed to Kubernetes on Linode via Argo CD.

  • Go
  • PostgreSQL
  • sqlc
  • Valkey
  • OpenAPI
  • Kubernetes
  • Docker
  • Argo CD
  • Bazel
  • TypeScript
  • React
  • Next.js
  • TanStack
  • TailwindCSS
  • Data visualization

hsfp.tokyo

2026Visit siteGitHub

A calculator to estimate your points for the Highly Skilled Foreign Professional visa in Japan.

Available in four languages: English, Japanese, Simplified Chinese, and Traditional Chinese.

  • TypeScript
  • Next.js
  • React
  • Tailwind CSS
  • next-i18n

dev-cli

2026GitHub

A command-line tool for trying a branch on a Kubernetes cluster that already runs every service. It deploys only the services the branch changed and gives the branch its own URL. Requests to services the branch didn't touch go to the copies already running, so the branch behaves like the full app.

Development mode is for working on a branch. Frontend edits sync into a running dev server with hot reloading, and backends are rebuilt with Bazel and restarted in place as you edit.

Production mode is for trying a finished change against real infrastructure before it ships. It deploys a pushed commit as release-identical images beside production, on the branch's own hosts. Tadoku uses it to deploy labelled pull requests with their own test tenant. Branches with database migrations are refused, and each deploy expires after a few hours.

  • Go
  • Kubernetes
  • Bazel
  • Developer tooling

Want to see more? Let's have a chat.