Show HN: Cardinal – Memorize vocab and phrases in 7 languages Hey all, We are a team of two that just released an early version of our app, called Cardinal. It's a multi-language dictionary, phrasebook, and spaced repetition flashcard system in one. You can check it out here: https://play.google.com/store/apps/details?id=com.olsonmartin.dictionary_app&hl=en_US The idea originally started about a year ago when we couldn't find an attractive, accurate dictionary that let us persist our favorites across devices. Originally it was only going to be English, but the data from Wiktionary and Tatoeba allowed us to expand to many languages. Right now we are supporting seven: English, Spanish, French, Italian, Portuguese, German, and Catalan. The data for languages like Chinese, Japanese, Russian, and Swedish needed special attention, so we'll be adding those in order of highest request. -- A few details about how the app was built -- Backend: data was parsed and structured using Python, API was written in Go and heavily relies on PostgreSQL functions and procedures. Python takes quite a while to parse all of the data, so future improvements will be incorporating C/C++. Frontend app: built primarily in Dart for its cross-platform capabilities. Right now about 10% is Java for native integrations. Part of the reason we jumped in on this project was to experiment with Flutter/dart since we were mostly using Xamarin for cross-platform before. The experience with Flutter has been really good so far. The app grew to about 80K LOC by now, so even with a decent sized project we're finding Dart code is quite easy to manage and the Flutter framework feels very mature. We're using protobufs for communication between the server and the app, which turned out to be pretty great. When we make changes to the schema, or need to pass different data, having shared messaging definitions really helps sync the data between our different sides. It's also very fast and light. We're both happy to answer any questions! |