All posts Looking back, dated two days after the last commit. Project · ¡Vamos!

¡Vamos!: a Spanish app in two days, offline and without an account

My school Spanish is B1 and getting rusty. So I built myself a small learning app that runs in the browser, works offline and doesn't ask you to sign up.

My Spanish is school Spanish, B1 on paper. For travelling and real conversations I wanted to bring it up towards B1/B2, with an app that works offline and doesn’t want an account. So on August 4 I built one myself.

Two days and 34 commits later, ¡Vamos! was live on GitHub Pages. Built on my own, with AI coding agents helping. A progressive web app in plain JavaScript, no framework. You can install it on your phone, it works offline, and everything it remembers stays in your own browser. No account, no server.

Here’s how the learning works. At its heart is spaced repetition, similar to Anki. Every word has its own due date. If you know it, it comes back later. If you don’t, it comes back soon. So you mostly practise what you can’t do yet, not what already sticks.

There are two ways to answer: multiple choice or typing it yourself. When you type, the app is lenient with accents. Writing “cafe” instead of “café” still counts as knowing the word. Hunting for accents on a phone keyboard shouldn’t decide right or wrong. Every word can be read out loud through the speech output the browser already has.

Then there’s the rest: grammar chapters, eight reading texts, a dictionary and verb tables for seven tenses. Stats and streaks. Export to Anki in case you’d rather keep learning there, and a backup you can export and import again. And an optional AI tutor. It runs with your own API key entirely in the browser, so the key never travels to a server of mine. I don’t have one.

The most important part is invisible. All content lives in 74 JSON files, and each file is registered through a manifest. A new chapter is a new file plus one line in the manifest. Nothing changes in the code. Content and code stay separate, and content can grow without programming.

What I’m taking away: for a personal tool, “no server” is a real feature. Nothing to maintain, nothing to pay for, no data I have to look after. And two days are enough for something you use yourself, as long as you cut the scope clearly beforehand.

Tools and skills: vanilla JavaScript, a service worker for offline use, localStorage, the Web Speech API, a spaced-repetition algorithm, a data-driven content structure with JSON manifests, and GitHub Pages.

The app is public. If you’re learning Spanish, just use it.