Moonlighters’ Dream: Linguathor utilizing ArangoDB
Michael W. Martin, Software Engineer, Linguathor
Two (of three) brothers building a suite of language-learning apps that provide “Instant Immersion, Enduring Remembrance and Accelerated Fluency”. We’ve been building our project with ArangoDB
in our spare time since November 2016 and we currently support nine languages.
We are building a dataset that allows users to fetch, contribute and verify translations for the vocabulary and phrases that comprise their scripts, against which we also track actions like listening, priming, mimicry or review.
A problem that ArangoDB solves for us
We work on this project nights and weekends, so we need a tool that enables us to spend more time thinking about how to improve our language learning framework, instead of building out infrastructure. Furthermore, we also need a tool that ensures our application data will always match our conceptual model by providing a straightforward query language.
With this in mind, I really like the readability of AQL as compared to e.g. Cypher when discussing this or that query, because it’s syntax is complementary to the “ubiquitous language” we are building along with our little ecosystem of digital artefacts.
Our experience with ArangoDB in production
We are currently running a standalone docker version of ArangoDB in a cloud environment, as well as using a Foxx microservice to provide oauth2-based user token access to our Apollo Server GraphQL API, which in turn uses the (most excellent!) ArangoJS driver for database access.
I’ve performed several upgrades of this instance, Foxx microservice deployments and dataset migrations across versioned collections and databases as the API involved. So far these operations have been straightforward and relatively easy, which gives me confidence that investing in a subscription and coupling with more capabilities will be worthwhile.
Importance of key characteristics
|Factor||not important||important||very important|
|AQL / JOINs||x|
A very big thanks to Michael for taking the time to share his experiences with the community!