# 🚧 Express - Om att skapa en webbserver med express

__ status: alpha author: krm icon: 🧩 created: 2023-12-11 __

Detta är en uppgift i att skapa en webbserver med experss. Detta utifrån de
guider och mall som du har fått. Detta är grunden för andra likande projekt som
vi kommer göra i kursen. Observera att det hade antagligen varit enklast att
lösa detta helt i front-end, men detta är en övning att använda servrar.

# Innehåll

- 🔗 [Du hittar resurserna som ska använda här](https://htsit.se/t)
- 🔗
  [Du ska använda mallar från vårt akriv](https://gitlab.com/krmit/mimer-template.git)

# Tänk på

- Undrar du om något finns aktuella regler längs ned i dokumentet.
- Tillsammans med alla guider blir uppgiften rätt så lång.
- Men uppgiften är inte svårt om du gör en guide i taget.
- Guiderna upppdatera kontinuerligt eftersom fel hittas och förtydliganden
  behöver göras.

# Server som ska utvecklas

Du ska utveckla en server som kan hantera en formel. Exakt hur server ska vara
avgör du själv. Du får börja med att välja en formel, du ksa inte välaj samma
formel som någon av dina klasskompisar. Förslag på formel, formlerna blir svårer
desto längre ned du går på listan:

- s=vt
- u=ri
- e=mc² (Inte så bra eftersom den har bara två variabler)
- v=λf
- e=mv²/2
- y=kx+m
- [Volymen av något](https://sv.wikipedia.org/wiki/Volym)
- [Lösning av andragradsekvationen](https://sv.wikipedia.org/wiki/Andragradsekvation)
- [Tidsdilatation](https://sv.wikipedia.org/wiki/Tidsdilatation)
- [Lösning av tredjegradsekvation](https://sv.wikipedia.org/wiki/Tredjegradsekvation)
- [Lösning av femtegradsekvation](https://www.youtube.com/watch?v=dQw4w9WgXcQ)

# Genomförande

Följ de guider som finns nedan i ordning. Det du ska göra är någon form av
server som beräknar en formel.

## Förarbete

- 🦉 [Installation av node](../t/install-node.sv.md.html)
- 🦉 **C** [Installera och komma igång med git](../t/install-git.sv.md.html)

## Börja utveckla ett terminal program

- 🦉 [Skapa en ny webbserver](../t/create-a-project-for-webserver.sv.md.html)
- 🦉 [Starta utveckling](../t/start-development.md.html)
- Tänk på en formel som du vill arbeta med.
- Skapa en index sida. Skriv namnet på formeln eller liknade i en rubrik.
- I index sida. Lägg till en länk till varje anrop som du gör till servern,
  förslagsviss som en lista.
- **C** Skapa en "about.html" sida som förklara vad formel gör.'
- **C** Formel är inte helt trivial och innehåller minst 3 variabler.
- **C** Skriv i README fil vad du ska göra.
- **C** Du använder ett git arkiv under utvecklingen.
- **A** Skriv upp alla sökvägar du tänkte använda i REAMDE filen.

## Använd servern

- Använd en sökväg för att beräkna en variabel i formeln du har valt.
  - ⚙️ [get](../e/get/examples.sv.md.html)
- Använd parametrar för att beräkna en variabel i formeln du har valt.
  - ⚙️ [url variabler](../e/url-parameters/examples.sv.md.html)
- Använd en sökväg eller parameter för att sätta en kaka.
  - ⚙️ [kakor](../e/cookies/examples.sv.md.html)
- Använd en kaka för att beräkna en formel. Du kan själv sätta data till andra
  parametrar.
- **C** Beräkna alla variablerna i formeln.
- **A** Gör ditt web API smart, du kan skriva i README att visa anrop bara
  används för att uppfylla kraven ovan.

## Hämta data med ett fomrulär

Använd formulären som du gör nedan för att göra anrop till funktoinerna ovan.
Visa sedan resultatet med hjälp av en mall("Template"), detta kräver att du gör
ett nytt anrop.

- 🦉 [Skap ett formulär](https://htsit.se/t/create-a-web-form.sv.md.html)
  - ⚙️ [Formulär](https://htsit.se/e/forms/examples.sv.md.html)
- 🦉
  [Hämta data från ett formulär](https://htsit.se/t/get-information-through-a-form.sv.md.html)
- 🦉
  [Template med en websida](https://htsit.se/t/using-mustasch-for-pages.sv.md.html)
- **C** Gör en sida som presenterar resultatet från formlerna på ett bra sätt.
- **A** Dina sidor ska fungera som en helhet för någon som vill använda formeln.

## Gör det bra

- **C** Servern är väl fungerande
- **C** Din kod är välskriven.
- **A** Din formel lösare är intressant.
- **A** Din kod är optimal utfrån det som ska göras.

# Aktuella regler

## Bedömning

Bedömingen ges från ett helhetsperspektiv utifrån server som skapas, men
rekomendationen som ges här kommer oftas följas.

För att få E måste du göra alla punkter nedan som inte börjar med ett betyg. För
att få ett betyg måste du också ha klarat alla punkter med det betyget samt alla
för lägre betyg.

Kommentera kod om det behövs och se till att den är väl strukturerad. Att inte
göra det kan leda till ett lägre betyg.

## Om att följa guiderna

Om du väljer att inte följer andemeningen i guiderna eller inte använder mallar.

- Du kan inte få support.
- Ditt arbeter kommer bedömas som du gjorde det så var säker på att din kod har
  samma kvalitet.
- Om du fastnar och inte kommer vidare gå tillbaka och följ guiderna.
- Du ska inte diskutera lösningar med andra så inte felkatigheter sprids.

Observera att brott mot detta kan leda till lägre betyg.

## Lämna in

Programmet ska lämnas in på USB till läraren.

- Inlämning kan bara ske under lektionstid.
- Du bör lämna in innan deadline.
- Du måste vara personlig närvarande under inlämningen·
- Du ska också ha visat upp att det fungerar på din dator kontinuerligt medan du
  gör utvecklingen av programmet.
- Rättning på C och A nivå kan görs efter du lämnat in.

Om inte inlämningen har gjorts i tid kan den bara lämnas in på omprovsdagarna i
slutet av januari och slutet av maj.
