# Hur man arbetar med kodningsutmaningar
Vårt mål är att utveckla en rolig och tydlig interaktiv inlärningsupplevelse.
Det är svårt att utforma interaktiva kodningsutmaningar. Det skulle vara mycket lättare att skriva en lång förklaring eller att skapa en video tutorial, och det finns en plats för dem på Medium och YouTube. Men för vår grundläggande läroplan håller vi fast vid det som fungerar bäst för de flesta människor - en helt interaktiv, spelliknande upplevelse.
Vi vill att campare ska uppnå ett flödestillstånd. Vi vill att de ska bygga fart och spränga genom vår läroplan med så få hakar som möjligt. Vi vill att de ska gå in i projekten med tillförsikt och få en bred exponering för programmeringskoncept.
Att skapa dessa utmaningar kräver enorm kreativitet och detaljrikedom. Det finns gott om hjälp. Du har stöd från ett helt team av bidragsgivare som du kan studsa idéer och demo dina utmaningar. Håll dig aktiv i [bidragsgivarens rum](https://gitter.im/freecodecamp/contributors) och ställ massor av frågor.
Med din hjälp kan vi utforma en interaktiv kodning läroplan som kommer att hjälpa miljontals människor lära sig att koda för många år framöver.
Innehållet för varje utmaning lagras i sin egen markdown-fil. Denna markdown fil konverteras senare till HTML med hjälp av våra verktyg för att skapa interaktiva webbsidor.
Du hittar allt av freeCodeCamp.orgs läroplansinnehåll i katalogen [`/curriculum/challenges`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges).
## Ställ in verktyg för läroplanen
Innan du arbetar med läroplanen skulle du behöva ställa in verktyg för att hjälpa dig att testa dina ändringar. Du kan använda valfritt alternativ nedan:
- Du kan [ställa in freeCodeCamp lokalt](how-to-setup-freecodecamp-locally.md). Detta rekommenderas **starkt** för reguljära/upprepa bidrag. Denna inställning låter dig arbeta och testa dina ändringar.
- Använd Gitpod, en gratis online dev-miljö. Om du klickar på knappen nedan startar du en miljö som är redo att koda dev för freeCodeCamp i din webbläsare. Det tar bara några minuter.
[](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp)
- Redigera filerna på GitHubs gränssnitt genom att klicka på pennikonen för motsvarande fil. Även om detta är det snabbaste sättet, Det är **rekommenderas inte**, eftersom du inte kan testa dina ändringar på GitHub. Om våra utvecklare drar slutsatsen att de ändringar som ni gjorde måste testas lokalt skulle ni istället behöva följa metoderna ovan igen.
## Utmaningsmall
Nedan finns en mall för hur de utmanade markdown-filerna ser ut för närvarande. För att se den strömlinjeformade mallen kommer vi att anta [under](#upcoming-challenge-template).
````md
---
id: Unik identifierare (alfanumeriska, MongoDB_id)
titel: Utmaningstitel
challengeTyp: 0
videoUrl: 'Url of video förklaring'
---
## Beskrivning
` taggar. Till exempel namn på HTML-taggar eller CSS-egenskapsnamn
- Första instansen av ett nyckelord när det definieras, eller allmänna nyckelord (dvs "objekt" eller "oföränderlig") går in `` taggar
- Referenser till koddelar (t.ex. funktion, metod eller variabelnamn) ska vara inslagna i `` taggar. Se exempel nedan:
- Använd parseInt för att konvertera variabeln realNumber till ett heltal.
- Flerraders kodblock **måste föregås av en tom rad**. Nästa rad måste börja med tre backticks följt omedelbart av ett av de [språk som stöds](https://prismjs.com/#supported-languages). För att slutföra kodblocket, måste du starta en ny rad som bara har tre backticks och **en annan tom rad**. **Obs:** Om du ska använda en exempelkod i YAML, använd `yaml` istället för `yml` för språket till höger om backticks.
Se exempel nedan:
````md
Följande är ett exempel på kod:
```{language}
[DIN KOD HÄR]
````
````
- Ytterligare information i form av en anteckning ska formateras `Obs: Resten av anteckningstext...
- Om flera anteckningar behövs, lista sedan alla anteckningar i separata meningar med formatet `Anteckningar: Första anteckningstexten. Andra anteckningen text.`.
- Använd dubbla citat där det är tillämpligt
## Skrivtester
Utmaningar bör ha det minsta antal tester som krävs för att verifiera att en husbil förstår ett koncept.
Vårt mål är att kommunicera den enda punkt som utmaningen försöker lära ut, och testa att de har förstått den punkten.
Utmaningstester kan använda sig av Node.js och Chai.js påståendebibliotek. Dessutom, om det behövs, kan användargenererad kod nås i `kod`-variabeln.
## Formatera seed code
Här är specifika formateringsriktlinjer för challenge seed code:
- Använd två mellanslag för att indentera
- JavaScript-satser slutar med en semikolon
- Använd dubbla citat i förekommande fall
- Kommentarer gjorda bör ha ett mellanslag mellan kommentartecknen och kommentaren själva
`// Fix this line`
## Tips och lösningar
Varje utmaning har en `Get a Hint`-knapp, så att en användare kan komma åt alla ledtrådar / lösningar som har skapats för utmaningen. Ämnen för kursplan/lösningar finns på [vårt forum](https://forum.freecodecamp.org/c/guide) under kategorin "Guide".
Om du hittar ett problem med en befintlig utmanings ledtråd, kan du komma med förslag i kategorin [bidragsgivare] (https://forum.freecodecamp.org/c/bidragsgivare) på forumet. Moderatorer och användare med förtroendenivå 3 kommer att granska kommentarerna och avgöra om de ska inkludera ändringarna i motsvarande tips/lösningsämne.
### Lägga till nya Challenge-tips/-lösningar Ämnen
Ta följande steg när du lägger till ett nytt utmaningstips/-relaterat ämne.
1. Börja med att följa samma steg för att skapa ett nytt ämne men granska nästa för att skapa titeln.
2. Titeln på ämnet bör börja med `freeCodeCamp Challenge Guide: ` sammanfogade med den faktiska titeln på läroplanens utmaning. Till exempel, om utmaningen heter "`Chunky Monkey`", skulle ämnestiteln vara "`freeCodeCamp Challenge Guide: Chunky Monkey`".
3. `camperbot` bör vara ägaren till dessa ämnen/inlägg, så måste du be en administratör att ändra äganderätten till huvudinlägget till `camperbot`.
4. När det nya ämnet har skapats, skapas ett forumämne-id. Den ligger i slutet av forumets ämne URL. Detta id måste läggas till frontmaterien i kursplanens utmaningsfil via den normala pull-förfrågan processen för `Get a Hint`-knappen för att länka till ämnet.
### Riktlinjer för innehåll av ledtrådar och lösningar
När man föreslår en lösning för ett kursplaneringsrelaterat ämne den fullständiga koden måste läggas till. Detta inkluderar all den ursprungliga seed koden plus alla ändringar som behövs för att klara alla Challenge-tester. Följande mall ska användas för att skapa nya ledtrådar/lösningar:
````md
# Utmaningsnamn går här
---
## Problemförklaring
Detta sammanfattar vad som behöver göras utan att bara upprepa utmaningsbeskrivningen och/eller instruktionerna. Detta är ett valfritt avsnitt
#### Relevanta länkar
- [Länk Text](link_url_goes_here)
- [Länk Text](link_url_goes_here)
---
## Tips
### Tips 1
Tips går här
### Tips 2
Tips går här
---
## Lösningar
Lösning 1 (Klicka för att visa/dölja)
```js
function myFunc() {
konsol. og('Hej världen!');
}
````
#### Kod Förklaring
- Kod förklaring går här
- Kod förklaring går här
#### Relevanta länkar
- [Länk text](link_url_goes_here)
- [Länk text](link_url_goes_here)
Exakt samma som frön sektionen
Samma igen
Frågan skulle gå hit (används endast för videoutmaningar)
Svar 1
Svar 2
Svar 2
\
````
Skapa och redigera utmaningar:
Utmaningstyper - vad de numeriska utmaningstyperna betyder (enum).
Bidra till FreeCodeCamp - Skriva ES6 Challenge Tests - en video som följer Ethan Arrowood eftersom han bidrar till den gamla versionen av läroplanen.