<commit_before>[![BuddyBuild](https://dashboard.buddybuild.com/api/statusImage?appID=59da4469df6fb700013550f4&branch=master&build=latest)](https://dashboard.buddybuild.com/apps/59da4469df6fb700013550f4/build/latest?branch=master)

# K-Places
Showcase of a pure Kotlin app that serves as an example of a clean architecture and features:

- **100% Kotlin**
  - **Coroutines** for asynchrouns tasks and communication between **domain** and **data** layers
- **Android architecture components**
  - **Room** as local cache mechanism
  - **ViewModel** to expose observable streams of data to the UI and persist during configuration changes
  - **LiveData** on the presentation layer to wire UI and ViewModels
- **Clean architecture**
- **Testing**
  - **Espresso**
  - **Page Robots + Kotlin DSL**
  - **Unit tests**
  - **Mockito**
- **Dagger**
- **Retrofit + Gson + [Kotlin Coroutine Adapter](https://github.com/JakeWharton/retrofit2-kotlin-coroutines-adapter)**
- **Glide**<commit_msg>Update readme to replace Gson with kotlinx.serialization<commit_after>[![BuddyBuild](https://dashboard.buddybuild.com/api/statusImage?appID=59da4469df6fb700013550f4&branch=master&build=latest)](https://dashboard.buddybuild.com/apps/59da4469df6fb700013550f4/build/latest?branch=master)

# K-Places
Showcase of a pure Kotlin app that serves as an example of a clean architecture and features:

- **100% Kotlin**
  - **Coroutines** for asynchrouns tasks and communication between **domain** and **data** layers
- **Android architecture components**
  - **Room** as local cache mechanism
  - **ViewModel** to expose observable streams of data to the UI and persist during configuration changes
  - **LiveData** on the presentation layer to wire UI and ViewModels
- **Clean architecture**
- **Testing**
  - **Espresso**
  - **Page Robots + Kotlin DSL**
  - **Unit tests**
  - **Mockito**
- **Dagger**
- **Retrofit + [Kotlinx.Serialization](https://github.com/Kotlin/kotlinx.serialization) + [Kotlin Coroutine Adapter](https://github.com/JakeWharton/retrofit2-kotlin-coroutines-adapter)**
- **Glide**
{'fraction_non_alphanumeric': 0.1401059220028888, 'fraction_numerical': 0.0365912373615792, 'mean_word_length': 5.316109422492401, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 7, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2155145', 'n_tokens_mistral': 703, 'n_tokens_neox': 656, 'n_words': 171}