+After the event storming session, the following contexts have been identified:
----
-
-## Bootstrap 2
-
-
-
-
-
-
-
-
-
-
-
+* **Auth**: Responsible for managing the authentication and authorization of the users. It also is responsible for managing the permissions of the users.
+* **User**: This context is responsible for managing the users of the system, in particular, nothing regarding the authentication process but only the management of the user registry.
+* **Monitoring**: It is responsible for managing the devices and the data they produce. This context is responsible for consulting the data produced by the devices, their configurations and everything regarding the WoT interactions.
+* **Alarm**: Responsible for managing the alarms in the overall system. It is also responsible for the object recognition feature of the system.
+* **Notification**: Responsible for managing the notifications of the system. It is responsible for sending notifications to the users when particular events occur.
+* **Location**: Responsible for the location management of the system.
---
-## Low res, plain markdown
+## Bounded Contexts
-![](https://upload.wikimedia.org/wikipedia/commons/thumb/6/6c/Scavolino_innevata.jpg/260px-Scavolino_innevata.jpg)
+![Bounded Contexts](https://revue-org.github.io/revue/assets/images/ContextMap-7e49c19a18bd072c726a8ec3ffe73d6e.png)
+Context Map
---
-## Hi res, plain markdown
-
-![](https://upload.wikimedia.org/wikipedia/commons/6/6c/Scavolino_innevata.jpg)
+# Architecture
----
+We chose to use a microservices architecture for the system. This architecture consists on designing software applications as suites of independently deployable services. Each service runs in its own process and communicates with other services through a well-defined interface.
-{{< slide background-image="https://upload.wikimedia.org/wikipedia/commons/6/6c/Scavolino_innevata.jpg" >}}
-
-# Large images as background
-## (May affect printing)
+[Components & connectors view](https://revue-org.github.io/revue/docs/report/design/architecture/documentation#components--connectors)
+[Module view](https://revue-org.github.io/revue/docs/report/design/architecture/documentation#module-view)
+[Deployment view](https://revue-org.github.io/revue/docs/report/design/architecture/documentation#deployment-view)
---
+# Clean Architecture
-{{< slide background-video="https://github.com/DanySK/slides-2024-acsos-imageonomics/raw/master/content/nonnadir.mkv" background-video-loop="true" background-video-muted="true" background-opacity="0.95">}}
-
-# Video background
-
----
-
-# $$\LaTeX{}$$
+The design of all relevant microservices follows the Clean Architecture pattern. This helped us in maintaining a core domain design that abstracts away from all technical issues. As showed in the picture above, we made use of the following layers:
+* **Domain**: DDD entities, value objects, factories, ...
+* **Application**: DDD services, repositories, ...
+* **Presentation**: Machinery to translate external data representation to domain entities and vice versa.
+* **Infrastructure**: Mostly external service implementation, DB interfaces, REST APIs, Events managers, ...
-Inline equations like $E=mc^2$
-
-$$\frac{n!}{k!(n-k)!} = \binom{n}{k}$$
-
----
-
-# Code snippets
-
-
-```kotlin
-val x = pippo
-```
-
-```go
-package main
-
-import "fmt"
-
-func main() {
- fmt.Println("Hello world!")
-}
-```
+[Documentation](https://revue-org.github.io/revue/docs/report/design/architecture/microservices#clean-architecture)
---
-# Tables
-
-Colons can be used to align columns.
+# Microservices patterns
-| Tables | Are | Cool |
-| ------------- |:-------------:| -----:|
-| col 3 is | right-aligned | $1600 |
-| col 2 is | centered | $12 |
-| zebra stripes | are neat | $1 |
+We reasoned about:
-There must be at least 3 dashes separating each header cell.
-The outer pipes (|) are optional, and you don't need to make the
-raw Markdown line up prettily. You can also use inline Markdown.
-
----
-
-# Quotes
-
-> Multiple
-> lines
-> of
-> a
-> single
-> quote
-> get
-> joined
-
-> Very long one liners of Markdown text automatically get broken into a multiline quotation, which is then rendered in the slides.
-
----
-
-# Fragments
-
-* {{< frag c="pluto" >}}
-* {{< frag c="pluto" >}}
-* {{< frag c="pluto" >}}
-
----
-
-# Stacking images with Fragments
-{{% multicol %}}
-{{% col %}}
-
Pippo
-
Pluto
-
Paperino
-{{%/ col %}}
-
-{{% col %}}
-
-
-
-
-
-{{%/ col %}}
-
-{{%/ multicol %}}
-
-
----
-
-# Graphs via Gravizo
-
-{{< gravizo "Example Gravizo graph" >}}
- digraph G {
- aize ="4,4";
- main [shape=box];
- main -> parse [weight=8];
- parse -> execute;
- main -> init [style=dotted];
- main -> cleanup;
- execute -> { make_string; printf}
- init -> make_string;
- edge [color=red];
- main -> printf [style=bold,label="100 times"];
- make_string [label="make a string"];
- node [shape=box,style=filled,color=".7 .3 1.0"];
- execute -> compare;
- }
-{{< /gravizo >}}
-
----
-
-# Graphs via mermaid.js
-
-```mermaid
-classDiagram
- Class01 <|-- AveryLongClass : Coosssl
- Class03 *-- Class04
- Class05 o-- Class06
- Class07 .. Class08
- Class09 --> C2 : Where am i?
- Class09 --* C3
- Class09 --|> Class07
- Class07 : equals()
- Class07 : Object[] elementData
- Class01 : size()
- Class01 : int chimp
- Class01 : int gorillasaaaaaaaaaaaaaaaaaaaaaa
- Class08 <--> C2: Cool label
-```
-
----
-
-
-# Graphs via mermaid.js with options
-
-```mermaid
-%%{init: {'theme':'default', 'themeVariables': { 'fontSize': '.34em', 'fontFamily': 'verdana' }}}%%
-classDiagram
- Class01 <|-- AveryLongClass : Coosssl
- Class03 *-- Class04
- Class05 o-- Class06
- Class07 .. Class08
- Class09 --> C2 : Where am i?
- Class09 --* C3
- Class09 --|> Class07
- Class07 : equals()
- Class07 : Object[] elementData
- Class01 : size()
- Class01 : int chimp
- Class01 : int gorillasaaaaaaaaaaaaaaaaaaaaaa
- Class08 <--> C2: Cool label
-```
-
-
----
-# Graphs via mermaid.js 2
-
-```mermaid
-graph TD
- SL([fa:fa-user second level]) --> L[solution]
- L -- solution email --> db[(mysql)]
- db --> X[automatic]
- X --> CM([fa:fa-users first level])
- db -- Email --> c([customer support]);
-```
-
----
-
-# Graphs via mermaid.js 3
-
-```mermaid
-gitGraph
- commit id: "Initialize project"
- commit id: "Make some changes"
- branch develop
- checkout develop
- commit
- commit
- checkout main
- merge develop
- commit
- commit
-```
-
----
-
-# Keystrokes
-
-Ctrl + Alt + Del
-
----
-
-# QR code
-
-{{% qrcode data="https://www.google.com" %}}
-
----
+* **Communication patterns**
+ * Remote Procedure Invocation
+ * Asynchronous Messaging
+* **External API patterns**
+ * API Gateway (reverse proxy)
+* **Deployment patterns**
+ * Service as container
+ * Database per service
+ * Externalized configuration
+* **Security patterns**
+ * Token-based security
-# Import shared slides
+[Documentation](https://revue-org.github.io/revue/docs/report/design/architecture/patterns)
-
-
+---
\ No newline at end of file