Skip to content
This repository has been archived by the owner on Nov 5, 2024. It is now read-only.

Commit

Permalink
Merge pull request #978 from llama-0/fix-issue-977
Browse files Browse the repository at this point in the history
issue-977: fixed typos, proposed better wording
  • Loading branch information
ILIYANGERMANOV authored Jun 1, 2022
2 parents bfd1b2e + 6b83583 commit d2183b6
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 27 deletions.
10 changes: 5 additions & 5 deletions docs/Business-Model.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@

## Non-profit

For now, the model behind Ivy Wallet would be non-profit. A place to develop cool tech, use it to manage your money and also build a solid public portfolio in GitHub.
For now, the model behind Ivy Wallet would be non-profit. A place to develop cool tech, use it to manage your money and also build a solid public portfolio on GitHub.

> In near future, we might create an option in the app for PayPal donations. Donations will be used to pay the servers, Ivy's legal entity expenses and then distributed between founders and contributors.
> In the near future, we might create an option in the app for PayPal donations. Donations will be used to pay the servers, Ivy's legal entity expenses and then distributed between founders and contributors.
### Goals
- Build a cool app to use ourselves.
Expand All @@ -29,7 +29,7 @@ For now, the model behind Ivy Wallet would be non-profit. A place to develop coo
- "I manage this amazing product!"
- "I made this project successful and famous!"
- ...
- We want you to fill part of the project and use your skills, and talents to determine its ultimate destiny!
- We want you to fill part of the project and use your skills and talents to determine its ultimate destiny!

### Model

Expand Down Expand Up @@ -63,13 +63,13 @@ _Disclaimer: WIP... :construction:_

The `Hall of Fame` would be a special screen in the app to honor Ivy Wallet's contributors.

There would also be a `Hall of Fame` page in our GitHub repository which will be linked in the [README](https://github.com/ILIYANGERMANOV/ivy-wallet).
There is a `Hall of Fame` page in our GitHub repository and right now it's called [Contributors Wall](https://github.com/ILIYANGERMANOV/ivy-wallet#contributors-wall).

Non-technical people who promoted, designed or helped Ivy Wallet in any way can include themselves by submitting a PR following a template. _(which will be provided here :construction:)_


---

_Version 1.0.0_
_Version 1.0.1_

_Feedback, proposals, and PRs are highly appreciated! Let's spark discussion and make Ivy Wallet and the world a better place! :rocket:_
44 changes: 22 additions & 22 deletions docs/Developer-Guidelines.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ The Ivy Architecture follows the Functional Reactive Programming (FRP) principle

### Motivation

- Organize code _(Scaleability)_
- Organize code _(Scalability)_
- Reduce complexity _(Separation of responsibility)_
- Reuse code (Composability)
- Limit side-effects _(Less bugs)_
Expand Down Expand Up @@ -50,14 +50,14 @@ android -- Produces --> event

### Resources _(further learning)_

- [The Android Achitecture](https://www.youtube.com/watch?v=TPWmfJq16rA&list=PLWz5rJ2EKKc8GZWCbUm3tBXKeqIi3rcVX)
- [The Android Architecture](https://www.youtube.com/watch?v=TPWmfJq16rA&list=PLWz5rJ2EKKc8GZWCbUm3tBXKeqIi3rcVX)
- [Clean Code](https://www.oreilly.com/library/view/clean-code-a/9780136083238/)
- [Jetpack Compose Docs](https://developer.android.com/jetpack/compose/documentation)
- [Functional Programming](https://en.wikipedia.org/wiki/Functional_programming)
- [Category Theory for Programmers](https://github.com/hmemcpy/milewski-ctfp-pdf)
- [Functional Reactive Programming](https://www.youtube.com/watch?v=Agu6jipKfYw&t=1518s)
- [The Elm Architecture](https://guide.elm-lang.org/architecture/)
- [Maintable Software Architecture with Haskell](https://www.youtube.com/watch?v=kIwd1D9m1gE)
- [Maintainable Software Architecture with Haskell](https://www.youtube.com/watch?v=kIwd1D9m1gE)
- [The Dao of FP](https://github.com/BartoszMilewski/Publications/blob/master/TheDaoOfFP/DaoFP.pdf)
- [Don't walk away from complexity, run!](https://www.youtube.com/watch?v=4MEKu2TcEHM)
- [Lambda Calculus](https://www.youtube.com/watch?v=eis11j_iGMs)
Expand All @@ -71,8 +71,8 @@ Learn more at [Android Developers Architecture: Entity](https://www.youtube.com/
#### Motivation

- Reduce complexity _(JSON, DB specifics are isolated)_
- Flexibility _(allows editting on Data object on different levels w/o breaking existing code)_
- Easier domain logic _(unncessary fields are removed)_
- Flexibility _(allows editing of Data object on different levels w/o breaking existing code)_
- Easier domain logic _(unnecessary fields are removed)_

#### Data Model

Expand Down Expand Up @@ -113,7 +113,7 @@ ui_data -- "UI State (Flow)" --> ui
- `Transaction`
- domain data
- `TransactionEntity`
- has `isSynced`, `isDeletedFlags` db specific fields (Room DB anontations)
- has `isSynced`, `isDeletedFlags` db specific fields (Room DB annotations)
- `TransactionDTO`
- exactly what the API expects/returns (JSON)

Expand Down Expand Up @@ -177,7 +177,7 @@ viewmodel -- "UI State (Flow)" --> ui

### 3. Action (domain logic with side-effects)

Actions accept `Action Input`, handles `threading`, abstract `side-effects` (IO) and executes specific domain logic by **compising** `pure` functions or other `actions`.
Actions accept `Action Input`, handles `threading`, abstract `side-effects` (IO) and executes specific domain logic by **composing** `pure` functions or other `actions`.

#### Motivation

Expand All @@ -190,7 +190,7 @@ Actions accept `Action Input`, handles `threading`, abstract `side-effects` (IO)

#### Action Types

- `FPAction()`: declaritve FP style _(preferable)_
- `FPAction()`: declarative FP style _(preferable)_
- `Action()`: imperative OOP style

#### Action Graph
Expand All @@ -204,7 +204,7 @@ pure(Pure Functions)
action(Action)
io(IO)
dao(Datbase)
dao(Database)
network(Network)
side-effect(Side-Effect)
Expand Down Expand Up @@ -384,14 +384,14 @@ The `pure` layer must consist of only pure functions without side-effects. If th
fun divide(a: Int, b: Int) = a / b
```

- **Total**: defined for all input values but for the same input isn't guarantee to always return the same output (has side-effects)
- **Total**: defined for all input values but for the same input there is no guarantee to always return the same output (has side-effects)

```Kotlin
//It's defined in all cases but with each call returns a different output
@Total
fun timeNowUTC(): LocalDateTime = LocalDateTime.now(ZoneOffset.UTC)

//Produdes logging side-effect which can be seen in Logcat
//Produces logging side-effect which can be seen in Logcat
@Total
fun logMessage(
msg: String
Expand Down Expand Up @@ -484,7 +484,7 @@ suspend fun exchange(

Renders the `UI State` that the user sees, handles `user input` and transforms it to `events` which are propagated to the `ViewModel`. **Do NOT perform any business logic or computations.**

#### Motivaiton
#### Motivation

- UI independent of logic.
- Transform UI State into UI on the screen.
Expand All @@ -510,7 +510,7 @@ uiState -- "Flow#collectAsState()" --> ui
### 6. IO (side-effects)

Responsible for the implementation of IO operations like persistnece, network requests, randomness, date & time, etc.
Responsible for the implementation of IO operations like persistence, network requests, randomness, date & time, etc.

#### Motivation

Expand All @@ -521,9 +521,9 @@ Responsible for the implementation of IO operations like persistnece, network re
#### Side-Effects

- **Room DB**, local persistence
- **Shares Preferences**, local persistence
- **Shared Preferences**, local persistence
- key-value pairs persistence
- _will be migrated to DataStore_
- _migrated to DataStore_
- **Retrofit**, Network Requests (REST)
- send requests
- parse response JSON with GSON
Expand All @@ -534,14 +534,14 @@ Responsible for the implementation of IO operations like persistnece, network re
- current Date & Time (`timeNowUtc`, `dateNowUtc`)
- Date & Time formatting using user's `Locale`

### 7. Andoid System (side-effects)
### 7. Android System (side-effects)

Responsible for the interaction with the Android System like launching `Intent`, sending `notification`, receiving `push messages`, `biometrics`, etc.

#### Motivation

- Abstracts `Action(s)` and `UI` from the Android System and its specifics. _(Reduce Complexity)_
- Re-usable Android System efects. _(Composability)_
- Re-usable Android System effects. _(Composability)_

---

Expand All @@ -558,7 +558,7 @@ One of the reasons for the Ivy Architecture is to support painless, effective an

### Unit Testing

Tests whether the code is working correctyly in the expected cases. _(hard-coded cases)_
Tests whether the code is working correctly in the expected cases. _(hard-coded cases)_

#### Layers

Expand All @@ -567,7 +567,7 @@ Tests whether the code is working correctyly in the expected cases. _(hard-coded

### Property-Based Testing

Tests correctness in not expected cases by random generating test cases in given a possible range of input. _(auto-generated tests cases)_
Tests correctness in unexpected cases by randomly generated test cases in a given range of possible input. _(auto-generated tests cases)_

#### Layers

Expand All @@ -586,14 +586,14 @@ Tests the integration and correctness with the Android SDK & System on specific

### UI Android Tests

Tests everything from the perspective of an user using the UI. Imagine it like an automated QA going through pre-defined scenarios. _(end-to-end for everything)_
Tests everything from the perspective of a user using the UI. Imagine it like an automated QA going through pre-defined scenarios. _(end-to-end for everything)_

#### Layers

- `UI` (Compose)

---

_Version 1.3.1_
_Version 1.3.2_

_Feedback and proposals are highly appreciated! Let's spark techincal discussion and make Ivy and the Android World better! :rocket:_
_Feedback and proposals are highly appreciated! Let's spark technical discussion and make Ivy and the Android World better! :rocket:_

0 comments on commit d2183b6

Please sign in to comment.