Dialekt

Language learning web app.

Screenshot of the landing page
Screenshot of the landing page

I wanted to learn more about rails and react, so I’ve decided to start this project to finally do it.

I’ve used a bunch of websites and apps to learn languages before, like duolingo and memrise for instance and of course the reputable anki (my german is still pretty bad though, unfortunately). There’s a lot of innovation in the field but I wanted to introduce some ideas related to gamification in my approach. And I already had some baseline ruby code I made for another app that could be adapted to the rails backend without a lot of work.

Rails was every bit as comfy as I’d imagined it would be. It’s pretty similar to django which I’m more familiar with and it favours convention over configuration. I’ve decided to completely segregate the backend from the frontend so rails is there to provide a restful api only, using jwt for authentication and the pundit gem to deal with authorization.

React and particularly redux had a greater learning curve for me, I found. They tend to favour a more functional programming style that I wasn’t used to coming from more traditional object-oriented frameworks like angular. But the amount of control they offer for the application’s state really is impressive and once the pieces started falling together I’ve became a fan. I’ve coupled them with axios and normalizr.

Dan Abramov is the original author of redux and he made a series of tutorials on egghead that were of great help in understanding how it works and the rationale behind its design choices.

State changes logged in console during a debug session, courtesy of redux-logger
State changes logged in console during a debug session, courtesy of redux-logger

The project is still in an early phase and I’m trying to do everything by the book, with both the frontend and the backend being under test using minitest and jest. I’m keeping a public repository in gitlab if you’d like to check it out.