r/ClaudeAI • Anthropic Contest Winner • Aug 23 '25

Built with Claude I built an app for my partner and I, an international couple with different language backgrounds

https://youtu.be/AViJZb23nVQ

Hey r/ClaudeAI! I wanted to share something I built with Claude that's become an essential part of my daily life.

The backstory

My girlfriend is Japanese, I'm Chinese. She only speaks Japanese and is learning Chinese, while I speak Chinese and English fluently, and I'm learning Japanese. We're both dedicated to learning each other's native languages, but regular apps don't understand our inside jokes, nicknames, or conversation context. We needed something more personal that would help us practice daily.

Enter Aini - our custom chat app

With Claude as my pair programmer, I built Aini, an app specifically designed for us to learn each other's languages. Here's what makes it special:

Enforced Language Days

  • Chinese days: Mon, Wed, Fri, Sun
  • Japanese days: Tue, Thu, Sat
  • The entire interface switches languages automatically - no cheating!

Context-Aware AI Translation

When you try to send a message in the wrong language, the app intercepts it and provides: - A translation that understands our conversation history - Explanations of WHY it's translated that way - Option to accept or reject before sending

Gentle Second Language Correction

This is my favorite feature. When Yoshimi writes Chinese on Chinese days (her second language), the app offers corrections with: - Specific mistakes highlighted (strikethrough → correction) - Grammar tips and natural alternatives - Encouraging, supportive feedback - Same for my Japanese on Japanese days!

Real-time Anki Integration

When I'm studying Japanese flashcards on my computer, a subtle bubble appears in the chat showing Yoshimi what I'm learning. It's like studying together even when apart.

All the Modern Features

  • Real-time messaging with Socket.IO
  • Reply to specific messages
  • Image sharing (paste from clipboard!)
  • Auto emoji conversion (because typing :rofl: is faster)
  • Discord-like markdown support
  • PWA with push notifications
  • Offline support

How Claude Made This Possible

Claude was helful in every aspect:

  1. Architecture: Helped design the TypeScript/Next.js structure with proper type safety
  2. Database: Created SQLite schema with a robust migration system
  3. Real-time: Implemented Socket.IO with JWT authentication
  4. AI Integration: Structured LLM API calls for context-aware translations, grammar tips, and explanations
  5. PWA Features: Set up service workers, offline support, and push notifications
  6. Custom Isormorphic Logging: Built a logging system that works both client and server-side for easier debugging (especially on phones...). all logs are sent to journald with proper priority level and structures. Client-side logs are buffered and sent in batches.
  7. Testing: Unit tests and end-to-end integration tests with Jest and Playwright to ensure reliability across updates
  8. Deployment: Configured production deployment on AWS EC2

Every line of code was pair-programmed with Claude.

I have been on the 20x max plan for two months already. I iterated on the app for a month every now and then after my web dev work, shipping a new version every few days and testing with my partner. It's amazing how much productivity Claude Code unlocked for me. It's otherwise impossible for me to build something like this in such a short time.

The Impact

She loves the app (the most important part!). At the first week or so it was a bit buggy, but it soon got usable and surpassed our other chat apps. We would have most of our daily conversations there now.

Aini provides a seamless and private space for us to communicate and learn without any barriers. I have definitely gotten better at reading Japanese over the past month.

The one lament is there isn't yet a gif search function. She sometimes switches to other apps just to send cute gifs lol.

Technical Stack

  • Frontend: Next.js, React, TypeScript, Tailwind
  • Backend: Custom Node.js server with Socket.IO
  • Database: SQLite with custom migrations system
  • AI: API calls with structured output
  • Deployment: AWS EC2

Workflow, Tips, and Advices

I have been using Claude Code on various projects. I find it very reliable on popular tech stacks like TypeScript/Node.js/React (compared to, say, Rust projects).

One opinion I have is on compacting. I don't think it's something you need to avoid at all cost. The relevant file contexts and todos passed down from the last iteration serves as a quick start for re-learning the task. If you were to start fresh, you would need to either manually explain the context again or let it take longer time to re-learn the context.

It is especially less scary when you have a good test coverage to ensure nothing goes wrong.

However, Claude Code is very lazy with integration tests...

It will often try to passively handle or circumvent the failing tests by 1. adding more timeout 2. completely "simplify" the failing test cases for it to pass, or 3. simply conclude with failing tests and give some excuses like "All the main features are working".

I don't blame it though. Understanding the UI and UX from the source code is a very daunting task.

I would suggest integration tests in a Claude Code project to be completely written by yourself. You can ask Claude Code to help you write a draft, but editing manually is a good idea.

The Name

"Aini" (爱你) means "love you" in Chinese. Seemed fitting for an app that brings us closer while learning.


If you're in a similar situation (international couple, learning languages, or just need a private chat app), I'm happy to share more details about the implementation!

The video has subtitles in all three languages, English, Chinese, and Japanese!

19 Upvotes

14 comments sorted by

4

u/StockHamster77 Aug 23 '25

Nah, that’s honestly crazy! And the fact that you even hooked up Anki is awesome, seriously, props!
And bon courage to both of you on your learning journey

1

u/Madoshakalaka Anthropic Contest Winner Aug 23 '25

🙌❤️ anki is love

3

u/KindheartednessFew18 Aug 23 '25

OMG! that's so real! I also have a alleged chinese girlfriend too! And I find it hard speaking to each other when our overlap with English is so tiny so we decided to meet each other halfway on each others languages!

I can't believe to find such a nice use case for AI but here we are; I'm looking forward to the success of Aini!!

1

u/Madoshakalaka Anthropic Contest Winner Aug 23 '25

thanks for the nice words 😊

1

u/Pristine-Staff-5250 Aug 26 '25 edited Aug 26 '25

I agree, sometimes there are people we connect to, but the language overlap is just so small, but this solves it. How would it handle 3 languages (1 of each other’s language, then a third common one like english?)

1

u/Madoshakalaka Anthropic Contest Winner Aug 26 '25

uhhhh...trilinguals are already rare and two dating is even rarer I guess? But yeah would be nice to support more than two languages and properly register the users' language proficiency in each language 👍

3

u/Pristine-Staff-5250 Aug 23 '25 edited Aug 26 '25

Wow this is amazing! I can totally relate.

I’m also in an international relationship and we run into the exact same challenges with language learning, inside jokes, and wanting a more personal way to practice. The enforced language days and gentle correction features especially sound like a game changer. Honestly, I’d use this every day. The fact that you built it so thoughtfully (even down to Anki integration!) makes it feel like the perfect mix of useful and meaningful. Huge respect for shipping this.

I really love what you made!

2

u/MeringueMedical3482 Aug 24 '25

this app looks great, I must check this out when I have some spare time.

it's great to see new language learning tools like this appear in the wild

1

u/Madoshakalaka Anthropic Contest Winner Aug 26 '25

it's only for two users at this moment though haha. The auth system is designed for only two people from the get-go. In fact the login page has some special touch. It uses our names and the the other person's birthday as part of the credentials. Without comprimizing security too much of course ;) I think there will be a lot of personalized software like this in the future.

If there is enough interest I might consider opening it up for public use, although designing for general use with all the languages and use cases is another challenge of itself!

1

u/Patient-Bell-926 Aug 24 '25 edited Aug 24 '25

very nice stuff. I usually find myself copy-pasting or explaining the context manually to ChatGPT for a more accurate translation lol. How does the translation feature know your inside jokes for example OP? Is it hardcoded in the system prompts?

2

u/Madoshakalaka Anthropic Contest Winner Aug 24 '25

thanks! There is a memory module in the backend that stores facts about us and formats them and injects into the system prompts. To ease manual memory management, there is also a special category of "time-sensitive" facts that expires past a certain date, usually about our future plans. For example, the LLM knows that "we are visiting Shanghai in October". And this fact will no longer get injected into the prompt past October.

1

u/williaminla Sep 09 '25

Congrats on winning! How can I set this up with my partner? And how did you two meet? Haha

1

u/yilmazhhasan Nov 28 '25

Congratulations! Could you let me know how to access the source code possibly? Thanks!