A Language Learning Chat App

React FastAPI LLM Typescript

Chat app screenshot

Overview

I created this app in an evening to prototype an idea I’ve been thinking about for a while—a chat-based language learning tool. It’s still early, but I’m keen to keep building on it.

I’ve been learning Indonesian for nearly two years with a teacher. I can hold basic conversations and read simple news articles, but I struggle with long-term vocabulary retention. This project is an attempt to solve that by encouraging active use of new words in a conversational setting.

Future Goals

There’s a “Vocabulary” section in the app where users can save words. Originally, I thought about having the LLM extract and add new words from the conversation automatically—but I’m rethinking that. It might be more effective to make vocabulary building an intentional action, giving users a better sense of control.

I also want to experiment with features like partial translation—allowing users to translate specific words or phrases instead of entire messages. That might strike a balance between guidance and challenge.

Tech Stack

  • Frontend: React + TypeScript, styled using shadcn/ui.
  • Backend: FastAPI + Python, using LiteLLM to access the OpenAI API.
  • State: No persistence layer yet—data is stored in memory via a Python dictionary.

I started the UI in bolt.new, then moved into Windsurf IDE for iteration. FastAPI is great to work with—lightweight, structured, and refreshing compared to Django (which I use at my day job).

Conclusion

This is an ongoing experiment, and I’m excited to see where it goes. Whether it turns into something useful for others or just remains a playground for ideas, I’ll keep sharing progress on Bluesky and beyond.