Skip to content

giovanischiar/bluversation-ios

Repository files navigation


Bluversation

A bluetooth chat
A simple bluetooth chat iOS and macOS application

Use Cases

                                                                                                                                                                                               
This is the app when you open it for the first time. To start a conversation, click on the icon at the top to find the contacts. You'll need to turn Bluetooth on in order to find and chat with other contacts.
Here is the contacts dialog opened. Select one of the contacts found to start a conversation.
This is how the conversation will appear with a complete chat history. Type your message in the text field at the bottom of the screen to send messages.

Technologies

Technology Purpose

SwiftUI
Design UI

Bluetooth
Communication between the devices

IconCreator
Generate application Icon (my own library)

Diagrams

Please check this repository to learn more about the notation I used to create the diagrams in this project.

Project structure

This diagram shows all the groups the application has, along with their structures. Some groups are simplified, while others are more detailed.

Whole Project Diagram

Group view and viewmodel

These diagrams illustrate the relationship between screens from view and viewmodel classes. The arrows from the View Models represent View Data objects (structs that hold all the necessary data for the view to display), primitives, or collections encapsulated by Publishers, which are artifacts that encapsulate data streams. Every update in the View Data triggers the Publisher to emit these new values to the view, and the view updates automatically. Typically, the methods called from screens in view to classes in viewmodel trigger these changes, as represented in the diagram below by arrows from the view screens to viewmodel classes.

View/ViewModel Relationship Diagram

Group view.viewdata

View Datas are structs that hold all the data the view needs to present. They are created from model structs and served by View Models to the view. This diagram represents all the associations among the artifacts in the view.viewdata.

ViewData Diagram

Group viewmodel and view.viewdata

View Models serve the view with objects made from view.viewdata structs, collections, or primitive objects encapsulated by Publishers. This diagram represents all the associations among the artifacts in viewmodel and view.viewdata.

ViewModel/ViewData Diagram

Group viewmodel and model.repository

View Models also serve as a façade, triggering methods in model.repository structs. This diagram shows that each View Model has its own repository struct and illustrates all methods each View Model calls, represented by arrows from View Models to Repositories.

ViewModel/Repository Relationship Diagram

Group model

Model structs handle the logic of the application. This diagram represents all the associations among the structs in the model.

Model Diagram

Group model.repository and model

These diagrams represent all the associations among the structs in model.repository and model.

Repository Model Diagram

Group model.repository, model.datasource, and library

Data Sources provide their repositories with all the needed data for the application. They contain modules that make requests to the Nominatim API and consult the database. This diagram represents all the associations among the artifacts in model.repository, model.datasource, and library.

Repository/Data Source/Library Relationship Diagram

Future Tasks

  • Improve the stability. After some time, the connection between the devices is lost.
  • Use Persistance.
  • Create the app icon.
  • Add more chat features.

About

A simple bluetooth chat iOS and macOS application

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages