Inspiration
The purpose is to create a language learning companion that generates all learning content based on user needs. Users interact with the app, and based on that interaction, we provide personalized learning content by analyzing what the user is looking for. To understand user needs and gather input, we have an advanced dictionary with prefix search, translator, and grammar correction features.
What it does
Users can create custom dictionaries using 23 languages. They can translate words with prefix search and store them in their dictionaries. For all dictionaries user has a daily goal for how many words the user must save, helping their vocabulary grow consistently. All these stored words are then used for personalized games.
Games are grouped by skill: speaking, writing, reading, and listening. We track all mistakes and successes to understand what the user already knows and what they need to practice more for each skill. Users can also track all their gaming activities using charts in the insights tab.
How we built it
We built a native iOS client using Swift and SwiftUI with modern architecture patterns. The backend is implemented in Kotlin using the Ktor framework, providing a lightweight and efficient RESTful API. Data is managed with MySQL 8, while deployment is handled through Docker containers running on Hetzner Cloud Servers.
Challenges we ran into
The very first app build submission was rejected 7 times. We had issues with in-app purchases (our first experience with subscriptions) and initially only had one sign-in method. We learned to implement Sign in with Apple, fix paywall compliance issues, and properly handle subscription flows.
Another challenge is figuring out how to explain to users how the app works and encourage them to use dictionaries and save words - essentially getting them to actually engage with the app's core functionality.
Accomplishments that we're proud of
Building a great foundation for a scalable product using a robust backend and native mobile solution.
Pushing myself to record videos for social media platforms and learning about content creation. Most importantly, not giving up during difficult moments when I completely lost heart - perseverance through 58+ days of consistent development.
What we learned
The importance of building products for your target audience and getting continuous feedback. Technical skills in modern SwiftUI architecture, RevenueCat integration, and building in public. The value of consistency and community engagement in product development.
What's next for AavaLingo - Learn Languages
We still believe in our mission to make the best personal language learning app for any goal, person, or language level.
Next, we are planning to work on an Android version.
We'll also switch focus from ShipATon to marketing for our target audience and continue recording short and long videos on a weekly basis.
We are also planning to invest in creating an animated character named Aava, a little cute fox. She will be a helpful assistant for the language learning journey, checking user goals and progress, and helping users stay motivated just as we did during this Shipaton.
Shipaton was a great starting point for our marathon. Thank you!
Log in or sign up for Devpost to join the conversation.