Euskal Abizenak
What your Basque surname means, root by root, in Spanish, English, Basque and French. A paid app with no backend, built for the diaspora.
- Own product
- 2026
- iOS & Android
- Role: everything
- Status: live on Google Play



Most Basque surnames are the name of a house: Etxeberria is the new house, Goikoetxea the upper house, Zubizarreta the old bridges. Millions of people in Argentina, Uruguay, Chile, Mexico and the United States carry one, usually in a Spanish or French spelling, and most of them have never been told what it means.
Euskal Abizenak answers that in one search. It is a dictionary of 570 surnames and 193 roots with the meaning, the composition root by root, the spellings used in Spain, France and the diaspora, and a note on how certain the reading is. It is the second ZubiLabs product, and a deliberately small one: a content app that had to be finished, published and left alone.
Three things made this harder than a list. The same surname is written in many ways: Echeverría, Etcheverry and Etxeberria are one word, and a search has to know that without the user knowing the standard spelling. Etymology is not settled: philologists disagree on many surnames, and an app that presents a folk etymology as fact is worse than no app. And the dictionary can never be complete: whoever searches for a surname that is not there should still get something useful, honestly labelled.
On the business side, the app had to work as a one-time purchase with no running costs: no server, no accounts, no analytics to maintain, in four languages from day one.
A React Native app for iOS and Android with the entire dictionary compiled into the binary. Search normalises both the query and the dictionary to the same key, collapsing ch, tch and tx, v and b, c and k, silent h, accents and double letters, so any spelling lands on the right entry. Each entry shows the meaning, the roots as tappable cards, the certainty (solid, probable or disputed, with a note when the experts disagree), the other spellings and the surnames that share a root.
For surnames not in the list, an automatic reading decomposes the name into known roots with dynamic programming and shows the literal reading, always labelled as tentative. Around that: a surname of the day, a glossary of roots by category, favourites, and sharing as text or as a 4:5 image card. The interface speaks Spanish, English, Basque and French and follows the device language.
Everything, including the content. Research and writing of the dictionary with its editorial rule, product and interaction design, brand (an ikurriña with a carved stone lintel, because the name of the house over the door is where most surnames come from), the React Native app, the search and decomposition engine, the data validation tooling, store assets and publishing with EAS.
Key decisions, and why:
- No backend at all. The dictionary is TypeScript data compiled into the app. No server, no account, no analytics, and the only thing stored on the device is the chosen language and the favourites. A one-time purchase cannot carry monthly costs, and a reference app should work on a plane.
- One normalisation for the query and the dictionary. Instead of listing every spelling of every surname, one function collapses spellings into a key that is applied to both sides. It only has to be consistent, not reversible, which keeps it small and testable.
- Editorial honesty as a data field. Every entry carries a certainty level and, when the reading is disputed, a note saying so. The automatic reading is a separate screen with its own label, so a guess is never mistaken for an entry.
- The content is validated like code. A script checks duplicate ids, roots that do not exist, missing translations and a set of search and decomposition cases. It runs before every commit, so adding a surname is one line and cannot silently break search.
- Decomposing without nonsense. A naive split finds roots everywhere. Short roots pay a penalty, some suffixes only fit at the end, and ties go to the root listed first, so the reading prefers the same analysis a philologist would try first.
- Four languages of content, not just UI. Every meaning, gloss and note exists in Spanish, English, Basque and French. The types make a missing translation a build error instead of an English fallback.
- A brand from one script. Icon, Android adaptive layers, splash, favicon and the in-app mark are drawn by one script, so the ikurriña and the lintel stay identical everywhere and can be regenerated in seconds.
A finished product: 570 surnames, 193 roots, four languages, search that forgives any spelling and an honest fallback for what is missing, packaged as an app that costs nothing to run. For ZubiLabs it shows the other end of the spectrum from Story256: not a platform, but a small, complete, well-made thing shipped quickly.
- Scope is the product. Saying no to accounts, sync and analytics is what made the app finishable and cheap to keep alive.
- Content deserves tests. The dictionary broke search more often than the code did. Validating data on every change paid for itself the first week.
- Say what you do not know. Users trust an app more when it marks a reading as disputed than when it sounds sure about everything.