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.
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.
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.