Code Monkey home page Code Monkey logo

yusasarisoy / talkaid Goto Github PK

View Code? Open in Web Editor NEW
6.0 1.0 2.0 3.62 MB

Talkaid is an interactive messaging iOS app that allows users to engage in conversations with an AI assistant. Users have the option to interact with the AI assistant through text input via the keyboard or by sending voice messages, facilitating seamless communication.

Swift 100.00%
ai aiassistant api async-await chatbot chatgpt mock mockapi mvvm network networking protocol reactive-programming swift swiftlint swiftui unit-testing openai

talkaid's Introduction

Talkaid

Talkaid

Talkaid is an interactive messaging iOS app that allows users to engage in conversations with an AI assistant. Users have the option to interact with the AI assistant through text input via the keyboard or by sending voice messages, facilitating seamless communication.

Table of Contents

Prerequisites

  • iOS device or simulator running iOS 15.0 or later.
  • Xcode 13.0 or later.

Installation

  1. Clone or download the repository.
  2. Open the project in Xcode.
  3. Connect your iOS device or choose a simulator.
  4. Build and run the application.

Usage

  1. Launch the Talkaid on your iOS device or simulator.
  2. The application will prompt for your permission to enable voice message functionality, granting you the capability to send audio messages to the AI assistant.
  3. You are now fully equipped and prepared to utilize the application's extensive features and functionalities to meet your needs effectively.

Technical Details

  • The app is written in Swift.
  • SwiftUI was used as the UI framework to take advantage of declarative programming capabilities.
  • The app follows the MVVM architectural pattern for better code organization and separation of concerns.
  • The app uses networking capabilities to fetch data from OpenAI API using URLSession.
  • The requests from the user and the responses from the chat assistant are loaded asynchronously with the help of async/await.
  • SwiftLint has used to enforce Swift style and conventions and keeping the codebase consistent.
  • The Network layer handles communication with the data sources. It serves as an intermediary between the data consumer and the data sources, shielding the consumer from dealing with the intricacies of manipulating the data. This layer provides flexibility in changing data sources without impacting other components.

Features

  • Seamless messaging experience: Users can send and receive messages in real-time.
  • Message delay simulation: Upon sending a message, the app simulates a delay before displaying the received answer to mimic server processing.
  • Animation feedback: During the message delay, a simple animation is shown to indicate that the app is processing the request.
  • Dark mode support: The app's colors are carefully designed to ensure a professional look, even in dark mode.
  • Voice mode entry: Users can send the voice messages, which are transcribed into text and added to the main text field. An animation reacts to the loudness of the microphone input.

Unit Tests

The project includes a comprehensive suite of unit tests to ensure the quality and reliability of the code. Although not all functions are tested, the included tests cover critical functionalities, such as message sending, message delay simulation, and API response handling. The tests are written using XCTest framework and can be found in the dedicated test target.

Possible Improvements

  • Add an onboarding module after the app has multiple features. So that the user can easily understand about the capabilities of the app.
  • Add language support to extend the reachability of the app worldwide.
  • Add CI/CD tool(s) to automate release processes and regularly check the content of commits for a more concise codebase.
  • Add a beautiful and pleasant animated splash screen to make the user's first impression and grab their attention.
  • Extend the reach of the app by developing versions for other Apple platforms, such as iPad or macOS. This can help you reach a wider audience and ensure a consistent user experience across different Apple devices.
  • Expand the app's test coverage by implementing integration tests, behavior driven tests, snapshot tests and UI tests beside unit tests. Continuously test the app for bugs, performance issues, and usability problems to ensure a high-quality user experience.
  • Make UI/UX Enhancements continuously to improve the user interface and experience by incorporating modern design principles, animations, and intuitive interactions.
  • Add accessibility support to ensure that people with visual impairments can use the app comfortably.
  • Enhance error handling by providing meaningful error messages to users when network requests fail or other errors occur.
  • Implement crash reporting tools such as Crashlytics to collect crash logs and error reports for easier debugging and issue resolution.
  • Implement push notifications to enable proactive communication with users. This could involve sending relevant announcements, or reminders to keep users engaged with the app.
  • Provide options for users to personalize their app experience, such as choosing themes, customizing layouts, or setting preferences.
  • Add analytics tools to gather data on user behavior, usage patterns, and performance metrics. This can help make useful decisions for future improvements.
  • Improve app security to protect user data and ensure secure communication with the backend services. Implement best practices like encryption, secure storage, and secure network connections.
  • Enhance the app by using a persistence framework, such as Core Data, for storing previous chats. This feature will ensure a persistent chat history across app launches, enabling users to seamlessly access their past conversations.

talkaid's People

Contributors

yusasarisoy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

zsx0512 vegadome

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.