Skip to content

Learning a new language has never been easier! ๐ŸŒ๐Ÿ’ฌ Snap pictures of signs, objects, or menus, and get instant translations and pronunciations with LingoSnap. ๐Ÿ“ธ๐Ÿ—ฃ๏ธ Practice on the go and master your language skills with fun quizzes, personalized lessons, and real-world learning moments. ๐ŸŒŸ Letโ€™s speak like a local!

License

Notifications You must be signed in to change notification settings

sergio11/lingosnap

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

20 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

LingoSnap ๐ŸŒ๐Ÿ“ธ๐Ÿ—ฃ๏ธ Turn real-world text into language lessons.

LingoSnap is an AI-powered app designed to help you understand and learn languages naturally. Traveling abroad? Seeing a sign in a language you donโ€™t understand? Take a photo and ask any question in your native language. LingoSnap will not only provide a translation but also explain key vocabulary and grammar concepts while guiding you through pronunciation. Every interaction is saved as a LingoSnap, allowing you to revisit it anytime for review.

This app, LingoSnap, includes images and resources designed by Freepik. We would like to thank Freepik for their incredible design resources. The images used in the app are provided with attribution, as required by Freepik's licensing terms. For more information on Freepik's resources, visit www.freepik.com.

Slides are built using the template from Previewed. I extend my gratitude to them for their remarkable work and contribution.

๐Ÿš€ Unlock New Experiences with These Jetpack Compose Apps

If you love innovation and high-quality mobile experiences, check out my other apps built with Jetpack Compose!

๐Ÿš€ Key Features

  • Instant Photo Translation ๐Ÿ“ธ๐ŸŒ: Capture images of signs, menus, or texts in any language and get an accurate translation.
  • AI-Powered Learning Assistant ๐Ÿค–๐Ÿ“š: Ask questions in your native language and receive detailed explanations about vocabulary and grammar.
  • Pronunciation Guide ๐Ÿ”Š๐Ÿ—ฃ๏ธ: Learn how to pronounce words and phrases detected in the image.
  • Saved Conversations (LingoSnaps) ๐Ÿ“–๐Ÿ’พ: Every interaction is stored so you can review it later and reinforce your learning.
  • Personalized Learning Path ๐ŸŽฏ๐Ÿ“–: The app suggests lessons and repetitions based on your previous queries and comprehension level.
  • Multi-Language Support ๐ŸŒŽ: Supports multiple languages for translation and learning.

๐Ÿง  How LingoSnap Works

  • Firestore ๐Ÿ”ฅ๐Ÿ“‚: Stores LingoSnaps (conversations) and each userโ€™s learning history.
  • Firestorage ๐Ÿ—„๏ธ๐Ÿ“ธ: Saves captured images for analysis and future reference.
  • Gemini SDK ๐ŸŒŸ๐Ÿค–: Analyzes images and responds with contextual translations and explanations.
  • Speech Analysis ๐ŸŽ™๏ธ๐Ÿ”: Allows users to compare their pronunciation with native speakers.

๐Ÿ“ฑ Home Screen Features

  • Quick Translate ๐Ÿ“ท: Instantly translate text from images.
  • Ask & Learn ๐Ÿ’ฌ: Ask questions about the image and get AI-powered explanations.
  • Saved LingoSnaps ๐Ÿ”„๐Ÿ“–: Access previous conversations and review lessons anytime.

โœจ Enhanced User Experience

  • Optimized Performance โšก: Instant translations and responses with cloud processing.
  • Intuitive UI ๐Ÿงญ: Designed with Jetpack Compose for a smooth and modern experience.
  • Smart Recommendations ๐Ÿค–: AI-based suggestions tailored to your progress.

๐Ÿ› ๏ธ Clean Architecture & MVI for a Robust Foundation

LingoSnap is built on Clean Architecture principles to ensure the app is scalable, maintainable, and testable, making it future-proof and easy to evolve. By following this architecture, we achieve a clear separation of concerns, with distinct layers for data, domain, and presentation. This design ensures that the business logic (language learning, translation, etc.) is isolated from the UI, making the app more modular and easier to modify or expand.

The app uses the Model-View-Intent (MVI) pattern for the UI layer. This pattern allows LingoSnap to maintain a unidirectional data flow, ensuring predictable behavior and a more stable and responsive user experience.

  • Domain-Centric Design ๐Ÿงฉ: All business logic related to language translation, pronunciation, and grammar analysis is encapsulated in the domain layer. The domain layer interacts with data sources (e.g., APIs, local storage) to manage the flow of information, ensuring the UI remains clean and responsive.
  • Seamless Integration with Gemini SDK ๐Ÿค–๐ŸŒ: The Clean Architecture ensures that the integration with the Gemini SDK (used for natural language processing and AI-powered translation) is seamless and efficient. It powers LingoSnapโ€™s core functionality, delivering high-quality learning experiences.

๐Ÿงฐ Technologies Used

LingoSnap is developed using modern technologies to ensure high performance, scalability, and a smooth user experience:

  • Kotlin ๐Ÿ’ป: The primary programming language for Android development, chosen for its expressiveness, safety features, and compatibility with modern libraries.
  • Jetpack Compose ๐ŸŽจ: A declarative UI toolkit for building user interfaces. It makes UI development simpler and faster while offering flexibility in designing interactive, dynamic layouts.
  • Gemini SDK ๐Ÿค–: The AI engine behind the app, providing advanced translation capabilities, pronunciation analysis, and context-sensitive feedback. It powers LingoSnapโ€™s core functionality, delivering high-quality learning experiences.
  • Firestore ๐Ÿ”ฅ: A real-time database that stores user-generated content (like questions, answers, and learning insights). Firestore enables smooth syncing across devices and fast access to data.
  • Firestorage ๐Ÿ“ธ: Manages the storage of images uploaded by users (e.g., snapshots of text, hand-written notes, or objects), allowing LingoSnap to provide translations or language learning insights based on the content in these images.
  • Coroutines โฑ๏ธ: Kotlinโ€™s asynchronous programming tool that helps manage background tasks efficiently. Coroutines allow LingoSnap to perform time-consuming operations (like image processing or API calls) without blocking the main thread, ensuring a smooth user experience.
  • Hilt/Dagger ๐Ÿ› ๏ธ: Dependency injection frameworks used for managing app components and their dependencies. Hilt ensures that modules are decoupled and scalable.
  • Retrofit ๐ŸŒ: Used for API interactions, particularly with external services that provide language data, translations, or other learning resources.
  • Coil ๐ŸŽจ: An image loading library for handling image display, especially for the photos that users upload. Coil ensures efficient image loading and caching, helping the app maintain high performance.
  • Room Database ๐Ÿ—„๏ธ: A local database solution for caching and storing user data, which allows LingoSnap to work offline and ensure that progress and insights are not lost when the user is disconnected.

Development with Brownie UI Library

๐Ÿซ Brownie: Jetpack Compose UI Library ๐Ÿš€

LingoSnap leverages Brownie to streamline UI development using pre-built components and best practices. Brownie facilitates state management and provides a consistent, flexible UI design, which is perfect for applications like LingoSnap, where a smooth user experience is essential.

Features ๐ŸŽ‰

  • Pre-defined Components: Brownie provides a set of ready-to-use UI components, such as buttons, lists, and cards. These components ensure a consistent and polished visual design, reducing the amount of time needed to create screens.
  • State Management: Brownie supports MVI or MVVM architecture, helping manage the UI state in a clean and reactive manner, which is crucial for apps like LingoSnap that involve real-time data and user interaction.
  • Customization: Components can be easily customized to fit LingoSnap's visual style, ensuring that the app's UI remains unique and in line with its branding.
  • Jetpack Compose Compatibility: Brownie components are fully integrated with Jetpack Compose, providing a smooth development experience and ensuring optimal performance.

Model-View-Intent (MVI) Architecture ๐Ÿ—๏ธ

Brownie promotes the use of MVI for effective screen state management. In this architecture:

  • Model: Represents the current state of the UI. Brownieโ€™s BrownieViewModel handles and manages this state, providing it to the UI components in a reactive way.
  • View: Renders the user interface based on the state provided by the ViewModel. Brownie components seamlessly integrate with Jetpack Compose for smooth and dynamic UI rendering.
  • Intent: Represents the actions or events that the user performs (e.g., asking for a translation, uploading a photo). These intents trigger state updates and initiate actions in the app.

For more information, visit the Brownie UI Library on GitHub and star it to show your support!

App Screenshots

Here are some screenshots to showcase LingoSnap's clean and intuitive UI, demonstrating how users can seamlessly interact with the app, take photos, and receive real-time translations and insights.

ย ย ย  ย ย ย 

ย ย ย  ย ย ย 

ย ย ย  ย ย ย 

ย ย ย  ย ย ย 

ย ย ย  ย ย ย 

ย ย ย  ย ย ย 

ย ย ย  ย ย ย 

ย ย ย 

Contribution

Contributions to LingoSnap are highly encouraged! If you're interested in adding new features, resolving bugs, or enhancing the project's functionality, please feel free to submit pull requests.

Credits

LingoSnap is developed and maintained by Sergio Sรกnchez Sรกnchez (Dream Software). Special thanks to the open-source community and the contributors who have made this project possible. If you have any questions, feedback, or suggestions, feel free to reach out at [email protected].

Acknowledgements ๐Ÿ™

Visitors Count

Please Share & Star the repository to keep me motivated.

License โš–๏ธ

This project is licensed under the MIT License, an open-source software license that allows developers to freely use, copy, modify, and distribute the software. ๐Ÿ› ๏ธ This includes use in both personal and commercial projects, with the only requirement being that the original copyright notice is retained. ๐Ÿ“„

Please note the following limitations:

  • The software is provided "as is", without any warranties, express or implied. ๐Ÿšซ๐Ÿ›ก๏ธ
  • If you distribute the software, whether in original or modified form, you must include the original copyright notice and license. ๐Ÿ“‘
  • The license allows for commercial use, but you cannot claim ownership over the software itself. ๐Ÿท๏ธ

The goal of this license is to maximize freedom for developers while maintaining recognition for the original creators.

MIT License

Copyright (c) 2025 Dream software - Sergio Sรกnchez 

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

About

Learning a new language has never been easier! ๐ŸŒ๐Ÿ’ฌ Snap pictures of signs, objects, or menus, and get instant translations and pronunciations with LingoSnap. ๐Ÿ“ธ๐Ÿ—ฃ๏ธ Practice on the go and master your language skills with fun quizzes, personalized lessons, and real-world learning moments. ๐ŸŒŸ Letโ€™s speak like a local!

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages