Dictionary & Wordbook
The online dictionary covers over 650,000 English words. The wordbook extracts words from subtitles and aids users in the memorization process.
Table of ContentsTech Stack
Frontend: JavaScript, React, webpack
Backend: Ruby, Rails, Sidekiq, Python, SQLAlchemy, Postfix
Database: MariaDB, Redis, Memcached, Tkrzw
Web Server: NGINX
DevOps: Chef, Capistrano
Saas: Stripe, Mackerel, Amazon Polly
(In Evaluation Phase)
Backend: Text-to-Speech
Database: Aerospike
Backstory
While I watch TV shows or movies, I often find words that I do not know in subtitles. I have always wished for an app that can extract these words from subtitle files and help me keep track of my memorization progress. I wrote a detailed story on the project website.
Why and how I made a wordbook app
In the previous project "Wine Search", I put the frontend code into the backend code as I was used to doing. I had some struggles. It was hard to set up the webpack configuration with the Webpacker gem. Deploying the project affects both the front and the back sides. In this project, I separated the frontend and the backend.
Most Challenging Parts
Besides the Rails part, it was challenging most of the time. I am writing the challenges I have faced.
Progressive Web App
The frontend of the app has been developed using React with Redux-Saga. Implementing authentication, the browser back button and swipe screens was quite challenging. I spent some time working those out.
Opening the app across multiple tabs within a single browser disrupted the authentication process. The order of responses was troublesome. In asynchronous responses, it is possible for an API called later to respond before the former one. I needed to work on those issues.
The browser back button and app back button did not work well together. I ended up implementing a function to maintain the redirection history.
Integration of Swiper for a swipe function was complicated. I had to consider and plan to make it work carefully.
Dictionary
Creating a dictionary was much harder than I thought. Thanks to the efforts of those who have contributed to dictionary development in the past, I could overcome the challenge. I spent significant time reading documents about dictionaries, repeatedly revisiting them until I understood better.