Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nauruz-guliev/chat-compose
Chat App based on Firebase
https://github.com/nauruz-guliev/chat-compose
coil compose firebase hilt kotest ktor mockk mvi orbit realtime-database room
Last synced: 11 days ago
JSON representation
Chat App based on Firebase
- Host: GitHub
- URL: https://github.com/nauruz-guliev/chat-compose
- Owner: Nauruz-Guliev
- Created: 2023-11-25T18:30:12.000Z (12 months ago)
- Default Branch: master
- Last Pushed: 2024-01-15T19:41:16.000Z (10 months ago)
- Last Synced: 2024-01-16T01:16:19.264Z (10 months ago)
- Topics: coil, compose, firebase, hilt, kotest, ktor, mockk, mvi, orbit, realtime-database, room
- Language: Kotlin
- Homepage:
- Size: 32.1 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Firebase Chat
## Библиотеки:
| Библиотека | Для чего | Подробнее |
| --- | --- | --- |
| Firebase | Авторизация, чат, app distribution и др. | Чат основан на firebase realtime database. Пользователи дублируются в realtime database, иначе никак. |
| Mvi Orbit | Mvi | Это скорее MVVM+. По разным причинам другие библиотеки не понравились, а своё придумывать - долго. |
| Dagger Hilt | Dependency Injection | Легко завести + compile-time ошибки. |
| Kotest | Unit-tests | Привык к этой библиотеке. Выбран [BehaviourSpec](https://kotest.io/docs/framework/testing-styles.html#behavior-spec), потому что он удобно разделяет тесты на логические блоки. |
| Mockk | Моки | Самая удобная библиотека для моков. Умеет мокать даже final классы (не использует наследование под капотом). Благодаря этому можно было избавиться от интерфейсов, но зачем? |
| Coil | Загрузка изображений | Мне кажется, лучшая библиотека для загрузки картинок на compose. |
| Ktor | Запросы к API | Используется только для поиска картинок для профиля. Хорошая замена для Retrofit. |
| Room | Кэширование | Чаты сохраняются в БД. |
| Jetpack Compose Navigation | Навигация | По другим библиотекам мало документации. Разбираться в них - долго. |## Что реализовано:
- [X] Modules:
- [X] App.
- [X] 5 Feature (4 Api).
- [X] 3 Core.
- [X] Данные из Api. Используется Ktor. Загружаются картинки из [Splash Api](https://unsplash.com/developers).
- [X] Авторизация с помощью Firebase Authentication.
- [X] Compose (+ есть простые анимации).
- [X] MVI ([Orbit MVI](https://github.com/orbit-mvi/orbit-mvi))
- [X] Room. Кэширование.
- [X] Firebase App Distribution. [Тык](https://github.com/Nauruz-Guliev/chat-compose/actions/workflows/job_deploy_firebase_debug.yml) чтобы попробовать.
- [X] Запуск детекта и unit-тестов на PR в Master-ветку.
- [X] Detekt (Немного изменены правила)
- [X] Unit-тесты
- [X] Lint
- [X] Firebase
- [X] Analytics (Скорее для галочки, но есть)
- [X] Crashlytics
- [X] Performance Monitoring
- [X] Cloud Messaging
- [ ] Huawei Mobile Services
- [X] Версионировании через toml-файл.
- [X] Unit-тесты для use-case'ов.## Что можно улучшить:
- Исправить баги:
- Если не выходить из приложения и повторно авторизоваться под другим аккаунтом, состояния некоторых экранов сохраняются. Эти состояния не подходят под нового пользователя.
- Почему-то не всегда сохраняются состояния экранов при смене табов в BottomNavBar.
- Сообщения в чате не всегда правильно сортируются по времени.
- и другие баги, которые пока не были обнаружены.
- Улучшить обработку исключений. Вынести это в базовые классы. Добавить свои исключения.
- Добавить больше интерактива в чат.
- Добавить больше полей при регистрации, что позволит задавать фильтры при поиске пользователей.
- Вынести все размеры в ресурсы.
- Не для всего есть свои компоненты (composable-функции). Можно что-то вынести, что-то переиспользовать. Сделать свою мини дизайн-систему.
- Добавить настройки (темы, языка и др.).
- Отправлять уведомления с помощью Cloud Messaging при изменении данных в Firebase Realtime.
- Покрыть всё тестами и интегрировать [Jacoco](https://kotest.io/docs/framework/integrations/jacoco.html) для отслеживания покрытия.Актуальную apk можно скачать [тут](https://github.com/Nauruz-Guliev/chat-compose/releases/tag/DEMO_v0.0.1).