Inspiration

I'm half Korean and I really want to improve my fluency for a lot of reasons i.e. being able to communicate with my grandparents who aren't fluent in English and relieve myself of the regret of not learning it earlier in my life. For whatever reason and motivation there is out there, I understand that learning Korean does not come easy. Therefore, I want to use and develop Hanguru to offer more comprehensive resources for people looking to improve.

What it does

  1. Vocab Page: Users can create and edit personalized sets of Korean vocab using the Google Translation API
  2. Exercise Page: Users can select their set/vocab word(s) and ask generated questions, respond, and get feedback on their response based on the prompt. The idea is for the user to get in-context, randomized practice with the selected vocabulary and then receive feedback on their response.
  3. Audio Recording: Users can select their set/vocab word(s) and ask for generated text based on a chosen complexity (easy, medium, hard) and also listen to the text using the Google Text-to-Speech API. The user can then take that generated text and record themselves trying to read it. If not deleted, the user can go back anytime and select their recording (saved by name and date uploaded to Google Cloud) to listen to how they sounded given the text (which is also saved).
  4. Progress Checker: Right now this just checks the days the user has checked in and marks them to keep track of the consecutive count that the user has logged in. Consistency = key!
  5. Other: Basic register, login, and sign out features are implemented as well as an account settings page where the user can edit their credentials and change their profile picture. There's also a theme toggle button to switch between light and dark mode.

How we built it

  1. Backend Development: I chose Node.js combined with Express for our backend framework. This was supplemented with Passport.js to handle user authentication.
  2. Frontend Development: For the frontend, I utilized HTML for structuring the web content, accompanied by Chakra to create an intuitive and responsive user interface
  3. Database Management: I integrated MongoDB and Google Cloud for database management. MongoDB is the primary database because it suits the dynamic data sets encountered in language learning apps. Alongside MongoDB, I employed Google Cloud, which includes SQL capabilities, for its robust and scalable cloud database solutions.
  4. AI/ML + Korean Language Processing: I incorporated AI/ML from OpenAI and technology from Google Cloud (Speech-to-Text, Text-to-Speech, Translate). These tools enable Hanguru to process Korean language efficiently, whether it's in text generation or analysis. I also made wrappers for these models because in the future, when I want to upgrade to better LLMs, I can do so more easily.
  5. Containerization with Docker: The entire application is containerized using Docker, which simplifies deployment and ensures consistency across various development/production environments.

Challenges we ran into

School speaks for itself, but then getting sick and spilling water into my laptop weren't so fun. As for the technology side, it was my first time using many of them - I really only had comfortable experience with Node.js and HTML beforehand. Given that, I ran into problems everywhere, so nothing new with software development in that aspect. Also, the laptop did not make it out alive ;_;

Accomplishments that we're proud of

Getting this project to this point was the goal but I honestly was not sure given all of the circumstances listed above. I'm just really happy to have pushed past those obstacles and continue working on this project because I really do want to continue with it. I'm starting my online MSDS this January and going to Korea to enter a language program so I really feel like I can delve into this and bridge my interests here.

What we learned

I learned to be more grateful in the moment. I might be alone right now working on this project, going through all of its errors and shortcomings head-on, but I know that myself from last month and the years prior would be extremely proud. So, rather than just focusing on the destination, accepting the beauty that there may not be one has really helped me enjoy this process of building Hanguru to where it is now and hopefully even further down the line.

What's next for Hanguru

A lot. First off, I need to fix the Github Pages / Heroku deployment. Then, I would like to add more features (study group, real-time pronunciation feedback, ai-based study material recommendation, etc). I definitely want to polish the current features too. Another big update would be adding in more language models to cross-check each other. Most of all, I would like to expand Hanguru into a platform for more languages.

Update:

The project submission is over, but I've deployed the project successfully and it can be viewed at https://www.hanguru.me/#/

Built With

Share this project:

Updates