A messenger for developers.
The project developed on the "Mobile Development" program in VK Technopolis
DevTalk is a messenger for developers that doesn't waste their time. The main feature of our messenger is that users can define their interests using tags in order to see only the chats that correspond to them in the recommendations, as well as create chats with a specific tag.
The project had the following requirements:
- Main development language - Kotlin
- Presence of at least two localizations
- Availability of asynchronous work
- Availability of networking
- Availability of non-volatile storage
- Correct handling of errors and exceptions (including in conditions of network loss)
- Participation in the development of each team member
- Do not use third-party graphics engines (Unity, Unreal, etc.)
- You need to use the standard UI Kit.
- Correct handling of configuration change
- Correct handling of the situation when the application is forced out by the system
- Minimum version (minSdkVersion) API Level 24
- Target version API Level(minSdkVersion) 33
- Compliance with the rules of Material Design
Our application supports two languages - Russian and English
.
When registering and authenticating a user, the fields are checked for validity. The uniqueness of the mail is also checked using a request in Firebase.
Asynchronous interaction in the DevTalk developer chat application is implemented using
the Observer pattern
. In our
application, Observer monitors the update of the chat list. When a new chat is created, or a user
joins the recommended
one, the observer object notifies all subscribers that changes have occurred.
SharedPreferences
is used to save the state of selected professions between different app launches
or fragments. This
allows you to restore the previous state of the selected professions if the user restarts the
application, theme, or
returns to this fragment.
Network interaction in the application is carried out using Firebase
and Retrofit
. Firebase
stores user and chat
data,
and retrofit is used for requests to third-party services (for example: Github and Gitlab) when
adding links to them in
the profile.
Our application uses non-volatile storage to contain tag icons to display them in profiles, chats, and so on.
- Kotlin
- Material design
- Firebase
- Figma
- Coroutines
- Retrofit
- Android Jetpack's Navigation
- Picasso