# App 1: WebRTC en Rest (Charles, Marie, Tim, Karam)
###### tags: `Semester1`
## Beschrijving van de app
### 1st idea
Privacy-minded, webbased communication app
Soort discord (web-based).
See use cases on github or https://hackmd.io/zF1o4_TuT46DcathwDFwCA.
* M0:
- hoe testen schrijven? (leren werken met wdio)
NOOPE! niet wdio gebruiken, een e2e testing, alleen kleine units tests using supertest (?)
- taken precies bepalen
- minimale testen schrijven voor elke taak...
* M1: REST gebruiken om SDP's en candidates te sturen
- koa & webRTC: script laden
- reload om de 10 sec
- audio tegelijk aanzetten , beide richtingen --> OK! polite zet zijn stream in zijn answer SDP (dus impolite moet de SDP offer sturen)
- REST datasctructure aanpassen om SDP kunnen opslaan + routes
- REST incorporeren in webRTC
* M2: fancy webpage
* M3: message-board toe voegen
* M4: permanent data-base toevoegen
* M5: usernames bewaren (+ polite/impolite bepalen ifv username/address/...) ? calls kunnen plannen (rdv zetten in kalender, andere user can confirm of niet) ? call kunnen doen met of zonder account (evt privacy probleem)
### 2nd idea
Netflix 2.0
* database met films die je kan bekijken
### 3rd idea
* Virtuele bioscoop
### Ander voorbeeld
All kinds of files sharen: http://cend.me/
### Keuze
Eerste idee lijkt best, we gaan voor de naam **postduif**:
- goede mascotte
- historisch belangrijk communicatiemiddel
Bekijk dit voorbeeld: https://appr.tc/ (Dit lijkt heel erg op een implementatie van M1...)
<!--
## Implementatie
* Sequence diagram
https://mermaid-js.github.io/mermaid/#/sequenceDiagram
voor documentatie
```mermaid
sequenceDiagram
actor A as Bob
actor B as REST API
actor C as Marie
A->>B: GET index.html (statisch)
B->>A: index.html (laadt ook scripts)
A->>B: POST room/{roomID}
A->>B: GET room/{roomID}
B->>A: room.html (gegenereerd met roomID)
Note over A,B: room.html laadt nu ook room.js, dat automatisch pollt:
loop poll every 10s
A->>B: GET data/{roomID}&username(?)...
B->>A: data.json
end
C->>B: GET index.html
B->>C: index.html
C->>B: PUT room/{roomID}
```
-->
## Log file
- Labozitting 22-11-2021:
- Vastleggen doelen van de app
- Initialiseren project structure
- Rest van de week:
- wdio aan de praat krijgen + testen proberen runnen (veel opzoekwerk vooral) (Marie en Charles)
- nadenken over data structuur en routes (Tim)
- logo maken (Karam)
- Labozitting 29-11-2021:
- wdio verder
- Openen van een webpage controleren is OK
- use cases verder bepalen
- toevoegen logo postduif (Karam)
- Rest van de week:
- start implementing server (Tim)
- start implementing clientside functionality (Charles)
- introduce bootstrap to make better html (Karam)
- Labozitting 06-12-2021:
- E2E proberen tot de prof zegt dat het te moeilijk is (Charles / Marie)
- structuur van routes en sequence diagrams vastleggen adh van whiteboard (Charles, Karam, Tim)
- set up van basis structuur branch app/webRTC (Marie / Charles)
- use cases (Marie)
- Rest van de week:
- implementeer rooms (Tim)
- REST routes
- form om room te maken/joinen + functionaliteit
- app/webRTC branch verder (Marie & Charles)
- nieuwe REST routes aanmaken
- data structuur sterk updaten
- verander the basis structuur om met de 'externe' data structuur te werken
- beginnen report (Marie & Charles)
- branch app/reloadProblem (Marie)
- chat
- implementatie functionalities (Charles & Karam)
- tests (Charles)
- data structuur terug wijzigen (Charles)
- HTML design (Karam)
- sort alghorithm (quicksort for alphabetically sorting) + schrijven van tests ervoor (Charles)
- fancy webPage (Karam)
- Labozitting 13-12-2021:
- report (allemaal)
- laatste aanpassingen code (zie branch bugfixes) (Tim & Karam)
- werk use cases af (Marie)
- localtunneling (Charles)
- mermaid sequence diagram for usecases (Charles)
## TO DO
Milestones 4 en 5 niet gehaald