Skip to content

Commit

Permalink
Update readme
Browse files Browse the repository at this point in the history
  • Loading branch information
solita-michalguspiel committed Jul 22, 2022
1 parent 11fe7c0 commit 24c3e51
Showing 1 changed file with 27 additions and 6 deletions.
33 changes: 27 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,31 @@

# Dev Notary

- Kotlin Multiplatform Mobile
- MVVM with clean architecture
- Firebase SDK
- Firebase Authentication
- SQL Delight
- Kotlin corutines in shared module
- Declarative UIs

Dev Notary is a simple application that lets developers create notes, documentations or memos and interact with them. Basic CRUD with addition of sharing the notes with other users. The functional requirements were simple:
- Authentication
- Managing a note: create, read, edit, delete, share
- Restore notes
- List, sort, search

# Instruction
In order to run an app you need to provide firebase related files:
- for Android: google-services.json
- for iOS GoogleService-Info.plist
Both of them are generated by firebase.

# Inspiration, educational resources

Since KMM community is still relatively slow and the internet isn't yet rich in tutorials and guides how to work with Kotlin Multiplatform Mobile I had to gain knowledge straight from KMM samples.
In particular I've had analysed carefully https://github.com/MartinRajniak/CatViewerDemo and https://github.com/joreilly/MortyComposeKMM.

# Application Demo

![Running application](/img/creating-note.gif)
Expand All @@ -17,7 +36,8 @@ Dev Notary is a simple application that lets developers create notes, documentat
*Sharing notes*

# Architecture
Since my stronger side is on Android Development, I've decided to develop this project with common Android pattern, MVVM with clean architecture. With a little help of ViewModel wrapper class on iOS side everything turned out great.
One of the goals of this application was to explore KMM and try to share as much code between platforms as it is possible.
Since my stronger side is on Android Development, I've decided to develop this project with common for Android MVVM pattern. Additionally, I spiced it up with clean architecture. With a little help of ViewModel wrapper class on iOS side, everything turned out great. Wrapper class is essential because flows that are widely used in shared module can't be consumed in iOS app.

![Architecture diagram](/img/architecture.png)

Expand All @@ -31,23 +51,24 @@ Since my stronger side is on Android Development, I've decided to develop this p
- Multiplatform UUID
- Kotlin Coroutines
- KotlinX Datetime
- Multiplatform Settings
- Multiplatform Settings
- KotlinX Serialization

### Android:
- Jetpack Compose
- Accompanist

### iOS
- Swift UI

## Lines of code in each module:

## LOC:
Perhaps someone might be interested in actual code distribution between each module. I find it interesting that iOS app needs much less code than an Android application. However, code percentage is a little biased because there are UI test included in Android App.
For Android and Shared modules only .kt files are counted. For iOS module only .swift files are counted.
### Android:
#### 2805
### iOS:
#### 1451
### Shared KMM code:
#### 2853

### 100% of code = 39.5% (Android App code) + 20.4% (iOS App code) + 40.1% (Shared KMM code)

0 comments on commit 24c3e51

Please sign in to comment.