Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/sergio11/inquize_android

Inquize transforms your camera into a magical learning companion, giving you instant, detailed insights about the world around you ๐ŸŒ๐Ÿ“ธโœจ. Powered by cutting-edge AI, it turns every discovery into a fun and interactive adventure ๐Ÿš€๐Ÿ”๐Ÿ’ก!
https://github.com/sergio11/inquize_android

android clean-architecture datastore-android firebase-auth firesbase firestorage firestore-database gemini gemini-flash geminiai jetpack-compose jetpack-compose-navigation jetpack-lifecycle-components material3 material3-components

Last synced: 12 days ago
JSON representation

Inquize transforms your camera into a magical learning companion, giving you instant, detailed insights about the world around you ๐ŸŒ๐Ÿ“ธโœจ. Powered by cutting-edge AI, it turns every discovery into a fun and interactive adventure ๐Ÿš€๐Ÿ”๐Ÿ’ก!

Awesome Lists containing this project

README

        

# Inquize - Capture Curiosity. Unlock Knowledge. ๐Ÿ”๐Ÿ“š๐Ÿ’ก

**Inquize** is a groundbreaking mobile application that redefines how you engage with your surroundings. With the power of the **Gemini SDK**'s advanced AI, Inquize transforms your device into a gateway to knowledge, allowing you to ask questions about any object, place, or concept captured by your camera. Receive precise, real-time answers, turning every moment of curiosity into a learning experience.

Whether you're at a museum ๐Ÿ–ผ๏ธ, exploring nature ๐ŸŒณ, or simply at home ๐Ÿ , **Inquize** offers instant access to enriched information, making knowledge discovery as easy as point, ask, and learn! ๐Ÿ“ฑโœจ














Slides are built using the template from [Previewed](https://previewed.app/template/AFC0B4CB). I extend my gratitude to them for their remarkable work and contribution.

## ๐Ÿš€ Key Features

- **AI-Powered Visual Exploration** ๐Ÿค–๐Ÿ“ท: Leverage the Gemini SDK to recognize objects, places, and concepts through your camera and obtain instant, accurate information.
- **Natural Language Interaction** ๐Ÿ’ฌ: Ask questions in conversational language, and receive detailed, real-time responses that feel natural and engaging.
- **Speech-to-Text and Text-to-Speech Integration** ๐Ÿ—ฃ๏ธ๐Ÿ”Š: Use your voice to ask questions via Speech-to-Text and listen to answers using Text-to-Speech, making interaction even more seamless.
- **Organized Conversations with Inquizes** ๐Ÿ—‚๏ธ๐Ÿ’ฌ: Each Inquize represents a topic of conversation derived from a photo you've taken. You can ask questions and get answers related to that specific image or topic.
- **Dynamic Learning** ๐Ÿ“˜๐ŸŒ: Turn everyday experiences into learning opportunities, discovering facts, history, or technical details about anything around you.
- **Enhanced User Experience** ๐Ÿ–ฅ๏ธโœจ: Designed with **Jetpack Compose**, the app delivers a seamless, modern UI with fluid animations and an intuitive user flow.

## ๐Ÿง  How Inquize Works

- **Firestore** ๐Ÿ”ฅ๐Ÿ“‚: Used to store "Inquizes"โ€”topics of conversation that the user can engage with. Each Inquize is linked to a specific image and topic, and the user can ask questions to receive detailed answers.
- **Firestorage** ๐Ÿ—„๏ธ๐Ÿ“ธ: Stores the images captured by the user, which are analyzed by the Gemini SDK to provide insightful answers about the objects or scenes in the photos.
- **Gemini SDK** ๐ŸŒŸ๐Ÿค–: The AI engine that powers image analysis and natural language understanding, providing detailed answers to user queries based on the images and topics.
- **Speech-to-Text and Text-to-Speech** ๐Ÿ—ฃ๏ธ๐Ÿ”„๐Ÿ”Š: Allow users to interact with Inquize using their voice, asking questions verbally and listening to answers, enhancing accessibility and user convenience.

## ๐Ÿ” Home Screen Features

- **Inquize List** ๐Ÿ“„: View all your Inquizesโ€”your ongoing topics of conversation. Each Inquize corresponds to a captured image and its related questions and answers.
- **Search Functionality** ๐Ÿ”Ž: Easily search through your Inquizes to find specific topics or conversations.
- **Delete Functionality** ๐Ÿ—‘๏ธ: Manage your Inquizes by deleting any that are no longer needed.
- **Detailed View** ๐Ÿ‘๏ธ: Access the details of each Inquize, where you can continue the conversation by asking more questions and receiving answers.

## โœจ User Experience Enhancements

- **Optimized Performance** โšก: Leveraging coroutines for asynchronous operations ensures smooth, lag-free interactions.
- **Intuitive Navigation** ๐Ÿงญ: The UI, built with **Jetpack Compose**, offers a modern, fluid experience that adapts to user input, making the app feel natural and easy to use.
- **Dynamic Responses** ๐ŸŽฏ: The combination of the Gemini SDK and MVI architecture provides precise, dynamic answers that evolve with user input, creating a responsive and personalized experience.

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

Inquize is built on **Clean Architecture** principles, ensuring that the application is scalable, maintainable, and testable. This architecture promotes a clear separation of concerns, with well-defined layers for data, domain, and presentation, leading to a robust codebase that integrates seamlessly with the **Gemini SDK**.

By using **Model-View-Intent (MVI)** as the UI architectural pattern, Inquize provides a reactive and unidirectional data flow, enhancing the overall user experience. This approach ensures that the app remains responsive, consistent, and easy to extend with new features.

- **Domain-Centric Design** ๐Ÿงฉ: The business logic is encapsulated in the domain layer, which interacts with data sources (e.g., repositories) and manages the flow of information to and from the UI.
- **Seamless Integration with Gemini SDK** ๐Ÿค–๐ŸŒ: The Clean Architecture approach has enabled smooth integration with the Gemini SDK, ensuring optimal performance in image recognition and natural language processing tasks.

## ๐Ÿงฐ Technologies Used

- **Kotlin** ๐Ÿ’ป: The primary programming language for Android development.
- **Jetpack Compose** ๐Ÿ–Œ๏ธ: A modern, declarative UI toolkit that allows for flexible and scalable UI design.
- **Gemini SDK** ๐Ÿš€๐Ÿค–: The heart of the app's AI capabilities, powering image recognition and natural language understanding.
- **Firestore** ๐Ÿ”ฅ: Manages the storage of Inquizes, providing a structured and scalable way to handle conversation topics.
- **Firestorage** ๐Ÿ“ธ: Stores images that are analyzed by Gemini to generate accurate and detailed responses.
- **Coroutines** โฑ๏ธ: Ensures efficient asynchronous task management and smooth user interactions.
- **Hilt/Dagger** ๐Ÿ› ๏ธ: Dependency injection frameworks that provide clear module separation and easy scalability.
- **Retrofit** ๐ŸŒ: Manages network communication with external APIs.
- **Coil** ๐ŸŽจ: Image loading library that seamlessly integrates with Jetpack Compose for high-performance image handling.

## Developed with Brownie UI Library

๐Ÿซ **Brownie**: [Jetpack Compose UI Library](https://github.com/sergio11/brownie_ui_library) ๐Ÿš€

Brownie is a ๐ŸŒŸ Jetpack Compose library module that provides a set of pre-defined components to accelerate the development of Android interfaces and applications. It is designed to help developers apply best practices in screen state management and utilize the most effective design patterns in their projects.

### Features ๐ŸŽ‰

- **Pre-defined Components**: Brownie offers a variety of ready-to-use components, from buttons to lists and cards, to facilitate the creation of attractive and consistent user interfaces.
- **State Management**: Facilitates screen state management by implementing patterns such as MVI (Model-View-Intent) or MVVM (Model-View-ViewModel).
- **Customization**: Brownie components are highly customizable and can easily adapt to the visual style of any application.
- **Jetpack Compose Compatibility**: Fully integrated with Jetpack Compose, the modern Android UI library, to ensure optimal performance and a smooth development experience.

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

Brownie encourages the use of the Model-View-Intent (MVI) architecture pattern for effective screen state management. In this pattern:

- **Model**: Represents the state of the UI. Brownie provides a `BrownieViewModel` class that extends from `ViewModel` and handles the UI state.
- **View**: Renders the UI based on the state provided by the ViewModel. Brownie components are seamlessly integrated with Compose to create a declarative UI.
- **Intent**: Represents user actions or events that trigger state changes. Brownie's components, like buttons and text fields, are designed to emit these intents efficiently.

This setup leverages Brownie's components and ViewModel to accelerate the development of robust features while adhering to best practices in architecture and UI design.

For more information, check out the [Brownie UI Library on GitHub](https://github.com/sergio11/brownie_ui_library) and give it a โญ star to show your support!

## App Screenshots

Here are some screenshots from our app to give you a glimpse of its design and functionality.



ย ย ย 

ย ย ย 



ย ย ย 

ย ย ย 



ย ย ย 

ย ย ย 



ย ย ย 

ย ย ย 



ย ย ย 

ย ย ย 



ย ย ย 

ย ย ย 



ย ย ย 

ย ย ย 



ย ย ย 

ย ย ย 

## ๐Ÿ”„ Use Cases Covered by Inquize

**Inquize** is designed to be a versatile tool that can be applied across various contexts. Here are some of the key use cases:

### 1. Museum and Gallery Visits ๐Ÿ–ผ๏ธ๐Ÿ›๏ธ
- **Scenario**: You're at a museum or art gallery and come across a painting, sculpture, or artifact. You want to know more about itโ€”its history, artist, or significance.
- **Inquize Solution**: Capture a photo of the item, ask questions, and receive detailed insights instantly. Enhance your experience with rich contextual information, whether it's about the artist's life, the historical context, or the cultural significance of the object.

### 2. Nature Exploration ๐ŸŒณ๐Ÿฆ‹
- **Scenario**: While hiking or exploring nature, you encounter a plant, animal, or landscape that piques your curiosity.
- **Inquize Solution**: Take a picture and ask questions. **Inquize** can help you identify the species, learn about its habitat, and provide interesting facts. Perfect for nature lovers and curious minds!

### 3. At Home Learning ๐Ÿ ๐Ÿ“š
- **Scenario**: You're at home, and a particular object or concept sparks your interest. Maybe it's a vintage item, a scientific instrument, or something from a DIY project.
- **Inquize Solution**: Capture an image, ask your question, and let **Inquize** guide you with answers that deepen your understanding, whether it's about the item's history, functionality, or potential uses.

### 4. Educational Tool for Students and Teachers ๐ŸŽ“๐Ÿ‘ฉโ€๐Ÿซ
- **Scenario**: Students are working on a project or homework and need more information about a topic. Teachers want to provide a more interactive and engaging learning experience.
- **Inquize Solution**: Use **Inquize** as an educational assistant. Students can take pictures of objects or text and ask questions to gain further understanding. Teachers can use it to spark curiosity and engage students with real-world examples.

### 5. Travel Companion ๐ŸŒโœˆ๏ธ
- **Scenario**: You're traveling to a new city or country and want to learn more about the landmarks, architecture, or local customs.
- **Inquize Solution**: Point your camera at a monument or landmark, and let **Inquize** provide historical facts, cultural insights, and relevant information that enriches your travel experience.

### 6. Accessibility Tool ๐Ÿฆฎ๐Ÿ‘จโ€๐Ÿฆฏ
- **Scenario**: For users with visual impairments or disabilities, understanding the world around them through visual information might be challenging.
- **Inquize Solution**: **Inquize** offers a hands-free option through Speech-to-Text and Text-to-Speech, allowing users to ask questions about their surroundings and receive spoken answers, making knowledge more accessible.

### 7. Art and Design Inspiration ๐ŸŽจ๐Ÿ–Œ๏ธ
- **Scenario**: As a designer or artist, you're constantly seeking inspiration. You come across patterns, colors, or designs that spark ideas.
- **Inquize Solution**: Capture images and ask **Inquize** for more information about the styles, trends, or historical significance, helping you build a deeper connection with your creative inspiration.

### 8. Everyday Problem Solving ๐Ÿ› ๏ธ๐Ÿ”
- **Scenario**: You encounter a tool, device, or product at home that you donโ€™t fully understand. Maybe it's a kitchen gadget, a piece of furniture, or a tech device.
- **Inquize Solution**: Use **Inquize** to ask questions about its purpose, how it works, or where it comes from. Gain useful insights to help solve everyday challenges.

### 9. Fun Fact Discovery ๐Ÿค“๐ŸŽ‰
- **Scenario**: You're curious about random objects or concepts in your daily life and want to learn more for fun.
- **Inquize Solution**: Snap a picture, ask a question, and discover fascinating trivia or unknown facts that you can share with friends and family.

### 10. Enhancing Social Experiences ๐ŸŽค๐Ÿ‘ฅ
- **Scenario**: During a conversation with friends or at a social event, an interesting topic comes up, and everyone wants to know more about it.
- **Inquize Solution**: Quickly use **Inquize** to provide accurate information on the spot, making you the go-to person for reliable knowledge and keeping the conversation flowing.

**Inquize** is more than just a mobile app; it's a powerful tool for curiosity, education, and discovery, adaptable to a wide range of use cases across different environments. Whether for personal enrichment, professional development, or simply satisfying your curiosity, **Inquize** empowers users to unlock knowledge anytime, anywhere.

## Contribution
Contributions to Inquize 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
Inquize 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 ๐Ÿ™

- Special thanks to **technophilist** for the Perceive app, which served as a source of inspiration for this project. Visit [Perceive](https://github.com/technophilist/Perceive).

- We express our deep appreciation to [Freepik](https://www.freepik.es/) for generously providing the resources used in this project.

-

Icons and images takes from Freepik from www.flaticon.es'

- Template mockup from https://previewed.app/template/AFC0B4CB

## 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) 2024 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.
```