# Skapa ett projekt för en webbserver
__
status: alpha
author: krm
created: 2022-03-11
__

# 👁️‍🗨️ Om detta avsnitt

Förklarar hur vi skapar ett enkelt webbserver som vi kan använda för 
att utveckla mer program. Vi utgåt från en mall som tar en klar 
ställning ifråga om arbesflöde och kodningstil för att det ska var 
enkelt att använda dem utan att tänka på detaljer. Men de är lätta att 
modifiera om det skulle behövas. 


# 📚 Teknologier som används

Du behöver ha dessa program varor:

- Linux OS eller liknade system
- node
- npm

Se [guiderna](https://htsit.se/t) om du behöver hjälp med detta.


# 🗄 Bakgrund

Du kanske vill repetera dessa guider.

- 🦉 [Klona ett existerande projekt](../guide-to-git/clone-git-repository.sv.html)

# 🏷 Namn som används

- 🏷 **MITT_PROJEKT** Namnet på mitt projekt.
- 🏷 **EDITOR** Namnet på en editor för att editera små filer, t.ex. *geany*.

# 🧭 Vad är ett projekt?

Vi skapa projekt utifrån en mall i form av en mapp med relvanta filer.

# 1. Klona vår samling av mallar

Dessa finns i arkivet *mimer-template* och kan klas enligt nedan.

```sh
git clone https://gitlab.com/krmit/mimer-template.git
```

# 2. Kopiera mappen "webserver” till din utvecklar mapp 

Du ska utgå från denna i resten av projektet.

```bash
cp -r mimer-template/webserver/ ./MITT_PROJEKT
```

# 3. ➕ Bestäm vilken licensens som ska användas

Bestäm vilken licens som ska användas, förslagsvis AGPL samt kopiera 
in denna i ditt projekt. Filen med licenstexten ska hetta *COPYING*. 
Läs också *README.md* filen i mimer-template där du har all 
infromation som du behöver för att fylla i licens information nedan 
på rätt sätt.

```bash
cp mimer-template/Licence/agpl-3.0.txt ./MITT_PROJEKT/COPYING
```

Om du inte väljer en licens är projektet privat och ingen annan kan 
enligt lag kopiera ditt program utan din tillåtelse.

# 4. Gå igenom projekt filen 

Läs också igenom *package.json* filen och se till 
att den stämmer överens med ditt program. Framför allt se till att 
projektet har ett vettigt namn.

```bash
EDITOR package.json
````

# 5. Skriv en README.md fil 

I README filen kan du beskriver ditt program. Ge en åtminstone en kort 
beskrivning som du kan komma ihåg i framtiden.

```bash
EDITOR README.md
```

# 6. Installera packet

Installera alla program med paketen.

```sh
npm install
```

# 7. ✔️ Bygg ditt projekt

Kompilera server så den sedan går att köra.

```sh
npm run build
```

Tänk på att du kan använda *npm run watch* istället som kompilerar kontinuerligt.

# 8. ✔️ Starta din server och se att den fungerar.

Starta servere och gå sedan in på URL:n som servern visar med en 
webbläsare.

```sh
npm run start
```

# 9. ✔️ Testa att gå in på olika sidor.

Starta servere och gå sedan in på URL:n som servern visar med en 
webbläsare.

- 🔗 [Se att en enkel index sida fungerar: **http://localhost:8080/**](http://localhost:8080/)
- 🔗 [Se att ett ennkel "Hello World!" fungerar: **http://localhost:8080/hello/world**](http://localhost:8080/hello/world)
- 🔗 [Se att du kan tvinga fram ett error: http://localhost:8080/error](http://localhost:8080/error)

Titta sedan i koden för din webbserver hur detta går till.

# 10. ✔️ Starta din webbserver för att underlätta utveckling

Detta kommando fungerar som ovan, men istället för att bara köra 
webbservern kommer den också starta om webbserver så snart 
något ändras.

```sh
npm run dev
```
Detta kan fungera väldigt bra tillsammans med *npm run watch*, fast 
kom ihåg att själva webbsidan inte updatera sig. Du måste ladda om 
denna själv.


# 11. ➕🦉 Skapa ett projekt med detta projekt på gitlab.

Vill du ha projektet i ett git arkiv följ instruktionerna nedan.

- 🦉 [Skapa ett git arkiv](./create-git-repository.sv.html)
