diff --git a/docs/adr/0001-record-architecture-decisions.md b/docs/adr/0001-record-architecture-decisions.md new file mode 100644 index 000000000..7d4981754 --- /dev/null +++ b/docs/adr/0001-record-architecture-decisions.md @@ -0,0 +1,19 @@ +# 1. Record architecture decisions + +Date: 2021-10-05 + +## Status + +Accepted + +## Context + +We need to record the architectural decisions made on this project. + +## Decision + +We will use Architecture Decision Records, as [described by Michael Nygard](http://thinkrelevance.com/blog/2011/11/15/documenting-architecture-decisions). + +## Consequences + +See Michael Nygard's article, linked above. For a lightweight ADR toolset, see Nat Pryce's [adr-tools](https://github.com/npryce/adr-tools). diff --git a/docs/adr/0002-caching.md b/docs/adr/0002-caching.md new file mode 100644 index 000000000..a497e0fd1 --- /dev/null +++ b/docs/adr/0002-caching.md @@ -0,0 +1,28 @@ +# 2. Caching + +Date: 2021-10-05 + +## Status + +Accepted + +## Context + +- Client always make requests to back-end to refresh the data, what put a lot of pressure on it. +- User need to wait a long time to see the mailbox and email. + +## Decision + +- Caching the data with the [Hive](https://github.com/hivedb/hive) dependencies +Hive is a lightweight and blazing fast key-value database written in pure Dart. It support cross-platform: mobile, desktop and browser + +- `changes` method allows a client to efficiently update the state of data (Mailbox and Email) + +## Consequences + +- Minimizing the requests to the back-end +- Reducing the latency in the client + +## Follow up works + +- Pre-loading the bodies of the some latest unread messages