# Notebook REST API v1 (Eli Duval en Alexander Mikhaylov)
## eerste twee weken
### LOGBOEK:
11/10: praktische bespreking (elke woensdagvoormiddag vrijhouden + eventueel ergens in het weekend)
16/10: 11-13u featurw geprobeerd te doorgronden + veel tutorials bekeken om eraan te kunnen starten
17/10: 11-13u en 14-18u: server kunnen laten runnen + ruwe datastructure gemaakt met bijhorende backend methodes +probeersel testen
18/10 vragen: wat zijn de attributen van de notes (key=user?, pw), is DBrowser toegestaan als datastructure?, Array<Note> notes hoe opslaan?, de syntax van de testen correct? wat is require en supertest?, hoe bestanden importeren uit naar bestand uit andere folder,
14-19:30u voorstelling datastructure aangepast dmv 2 simpele classes + testen voor geschreven maar werken niet...
20/10: 10-13:30 en 14:30-16:30 fouten uit note(s) gehaald + testen proberen laten werken (niet gelukt maar ligt wss niet aan implementatie maar aan de testfile zelf) + de routes begonnen met uitwerken maar erg verwarrend...
23/10:11-15u + 16-17u30 gebeld
GET, POST, PUT, DELETE volledig geimplementeerd: heel lang gesukkeld met input van user krijgen -> via postman lukt het nu wel (via request.body)
24/10: 11-13u +14-16u gebeld
timer geimplementeerd + test voor note + test voor API te testen (deze werkt wel niet, maar manueel via postman klopt het wel) + heel simpele documentatie geschreven
24/10:
### TO DO:
M3 en M4 volledig + vragen oplossen waardoor reeds geimplementeerde delen volledig werken
### VRAGEN:
-hoe put,post, delete toevoegen aan allowedMethods zodat deze ook op browser toegestaa zijn?
-hoe op site zelf input kunnen vragen (niet enkel via postman)?
-> hoe Document laten werken?
### DONE:
ruwe lijnen van grootste deel van M1 (http(s) server runt, database werkt, interface werkt, werkt, data structure voor notes (backend))
M1: = data structure (note en notes), unit test voor datastructure
M2: interactie user-database via postman niet via browser zelf, implementatie get,put,post,delete, na bepaalde tijd verdwijnt note, tests
### DEADLINES:
volgens 11/10
18/10: M1 af + M2? ->niet gelukt
20/10: M2 af ook M3?-> niet gelukt
25/10: volledige feature af -> niet gelukt
WEL GELUKT: M1 en M2 (behalve vragen) af
### TUTORIALS: https://www.tutorialspoint.com/koajs/koajs_restful_apis.htm
https://codeburst.io/lets-build-a-rest-api-with-koa-js-and-test-with-jest-2634c14394d3
https://inviqa.com/blog/how-build-basic-api-typescript-koa-and-typeorm
https://medium.com/nerd-for-tech/koajs-brief-introduction-build-a-simple-api-post-get-8365737e2c32
https://dev.to/ekafyi/tribute-to-swissted-part-i-setting-up-a-node-js-web-app-with-koa-and-nunjucks-ph4
https://www.freecodecamp.org/news/rest-api-tutorial-rest-client-rest-service-and-api-calls-explained-with-code-examples/
https://medium.com/@9cv9official/what-are-get-post-put-patch-delete-a-walkthrough-with-javascripts-fetch-api-17be31755d28
https://colinhacks.com/essays/zod
https://mherman.org/blog/building-a-restful-api-with-koa-and-postgres/
## verder werken: 8/11 tot 22/11
### logboek:
- donderdag 11/11 12-17u: client/web-side gemaakt: html, functies voor get/post/put/delete via addEventListner
- zaterdag 13/11 11-17u30: via fetch post/put/delete/get langs web en server side geimplementeerd (kan nog steeds niet gerund worden),notes test verbeterd, key suggestions geimplementeerd
- zondag 14/11 14u-: bug bij routes gevonden, https gelukt, HTML, web en server te verbinden, supertest en testNote af, user levensduur van note kiezen, start public notes (enkel HTML-elementen aangemaakt)
- maandag 15/11 14-19u
- maandag 15/11 20-23u verslag review deel (eli)
- dinsdag 16/11 14u-17u en 20u-00u: afmaken/voll juist GET/POST/PUT/DELETElangs beide zijden (server en web) (eli)
- woensdag 17/11 9u-13u en 14u-18u en 23-00u: verslag (eli)
### vragen:
- in package.json wat moet main zijn?
-hoe html-web-server verbinden?
-hoe werken public notes nu precies? klopt het dat de verzameling public is maar elke note nog steeds eigen key en password?
TIP: Je kan ook checkboxes toevoegen!
- [ ] test
### doelen:
- [x] code verbeteren adhv code-review->check
- [x] HTTPS laten werken: A ->check
- [x] HTML-file + input elements: E ->check
- [x] browser en server side (met html) laten werken->check
- [x] put/post/delete mogelijk maken ->check
- [x] user tijd laten kiezen ->check
- [x] testen volledig maken: note (E) ->check
- [x] notes (A)
- [x] supertest (E) ->check
- [x] suggestions for key ->check
- [ ] keys with non pasword (public)
- [x] notes na tijd verwijderen ->check
- [x] documentatie
- [x] max aantal notes (security)
- [ ] M3
- [ ] M4
### deadlines:
maandag zoveel mogelijk af: m1, M2 volledig,
18 november: report
### report verdeling:
A: Feature Implementation and design M1, M3 M4
Code review: part 4 and 5
E: Feature Implementation and design M2
Code review: part 1-3