webofbits

webofbits

Dialekt - AI-powered (spoken) language learning

Dialekt is an AI-powered language learning application that provides real-time conversational practice with adaptive feedback.

What it does

Dialekt pairs learners with an AI tutor (powered by Claude) that adjusts its responses based on the learner’s CEFR level (A1-C2) and chosen register (formal/informal). The tutor provides intelligent, context-aware feedback depending on how the learner communicates:

  • Writing in native language: Shows the translation in the target language with IPA
    transcription and phonetic guides
  • Practicing target language: Provides corrections and encouragement with
    grammatical feedback

Key features

  • 70+ language pairs: Choose any combination of native and target language
  • CEFR-based adaptation: Vocabulary and grammar automatically adjust to A1-C2
    levels
  • Real-time feedback: Built with Phoenix LiveView for instant tutor responses
  • Dynamic conversation starters: AI generates contextually appropriate prompts
    based on your learning configuration
  • Phonetic support: IPA transcriptions use native language phonetic conventions

How it works

The app uses Claude Sonnet 4.6 via the Anthropic API to power the tutoring experience. The system prompt is carefully designed to enforce CEFR level constraints, maintain register consistency, and provide differentiated feedback based on whether the learner is practicing or just asking for translations.

Motivation

I built this mostly as a tool to help me learn new languages without the hassle of finding pronunciation guides and conversation partners. It’s just a pet project I made for fun, but I’d appreciate any feedback if you find it helpful or have ideas to improve it.

Requires an Anthropic API key to run.

https://github.com/ccarvalho-eng/dialekt

Most Liked

webofbits

webofbits

Just added persistence layer to this! Now, we can create multiple learning configs and have multiple chats persisted.

webofbits

webofbits

  • Added dark mode toggle
  • Fixed bug where when clicking the conversation starter buttons, no visual feedback was shown on the sreen

Where Next?

Popular in Announcing Top

tmbb
I’ve published the first version of my Makeup library. It’s a syntax highlighter for Elixir in the spirit of Pygments, Currently it highl...
New
josevalim
Hi everyone, We would like to announce that Plataformatec is working on a new MySQL driver called MyXQL. Our goal is to eventually integ...
New
ostinelli
Let’s write a database! Well not really, but I think it’s a little sad that there doesn’t seem to be a simple in-memory distributed KV da...
New
dominicletz
Hi, I thought I had posted my library before but seems I hadn’t. The project is still in early stages but it’s growing and so I think it...
New
msaraiva
Surface is an experimental library built on top of Phoenix LiveView and its new LiveComponent API that aims to provide a more declarative...
564 43622 214
New
josevalim
EDIT: since Ecto 3.0 final version is out, this post was amended to use the final versions in the instructions below. Hi everyone, We a...
New
tmbb
I’ve been working on two packages (not on hex.pm yet) to build admin interfaces for phoenix apps: bureaucrat - which contains a bunch ...
New
MRdotB
I needed to reuse React components from my Chrome extension in my Phoenix/LiveView backend. I noticed that for Svelte/Vue, there are live...
New
handnot2
Samly can be used to enable SAML 2.0 Single Sign On in a Plug/Phoenix application. This library uses Erlang esaml to provide plug enabl...
New
New

Other popular topics Top

mcarvalho
What is the difference between System.get_env and Application.get_env? For example, what are best practices to use one versus another.
New
JeremM34
Hello, how can I check the Phoenix version ? Thanks !
New
stefanchrobot
What’s the safe way to decode a JSON string into a struct? I want to avoid calling String.to_atom. Jason.decode can give me a map with st...
New
jay1
Why is it that the mnesia database isn’t the most preferred database for use in Elixir/Phoenix?
New
grych
Hi folks, Few months ago I have announced the proof-of-concept of the library to manipulate the browsers DOM objects directly from Elixi...
639 52341 488
New
sergio_101
I am VERY much an elixir newbie. I have taken one elixir course and one phoenix course on Udemy. During that course, I saw the instructor...
New
Qqwy
Original source of discussion: This topic on the Pragmatic Programmers’ Functional Web Development with Elixir, OTP, and Phoenix forum. ...
New
Brian
What is the proper way to load a module from a file in to IEX? In the python world, doing something like this pretty standard: from ....
New
marick
I had some trouble figuring out how to make many-to-many associations work. Once I got it working, I wrote a blog post. Because I’m a nov...
New
dogweather
I wrote this comment on r/haskell, and it’s not popular there. :wink: But I think I’m on to something… Haskell reminds me of Java, and e...
New

We're in Beta

About us Mission Statement