# Hoe te werken aan coderingsuitdagingen
Ons doel is het ontwikkelen van een leuke en heldere interactieve leerervaring.
Het ontwerpen van interactieve coderingsuitdagingen is moeilijk. Het zou veel gemakkelijker zijn om een lange uitleg te schrijven of een video tutorial te maken, en er is een plaats voor degenen op Medium en YouTube. Voor ons core curriculum houden we echter vast aan wat het beste werkt voor de meeste mensen - een volledig interactieve video game-achtige ervaring.
Wij willen dat de campers een toestroom krijgen. We willen dat ze impulsen geven en ons curriculum met zo weinig mogelijk nagels doorblazen. Wij willen dat zij met vertrouwen aan de projecten deelnemen en zich in ruime mate blootstellen aan programmeringsconcepten.
Het aangaan van deze uitdagingen vereist enorme creativiteit en zorgvuldigheid. Er is genoeg hulp beschikbaar. Je zult steun hebben van een heel team van bijdragers aan wie je ideeën kunt afstoten en je uitdagingen kunt demonstreren. Blijf actief in de [bijdragers kamer](https://gitter.im/freecodecamp/contributors) en stel veel vragen.
Met uw hulp kunnen we een interactief leerplan ontwerpen waarmee miljoenen mensen nog jaren leren programmeren.
De inhoud voor elke challenge wordt opgeslagen in zijn eigen markdown bestand. Dit markdown bestand wordt later geconverteerd naar HTML met behulp van onze tools om interactieve webpagina's te maken.
U vindt alle curriculaire inhoud in de map [`/curriculum/challenges`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges) map.
## Stel de tooling voor het curriculum in
Voordat je aan het curriculum werkt, moet je eerst wat gereedschap instellen om je wijzigingen te helpen testen. U kunt elke optie gebruiken vanuit onderstaande opties:
- U kunt [het freeCodeCamp lokaal instellen](how-to-setup-freecodecamp-locally.md). Dit wordt **sterk aanbevolen** voor reguliere / herhaal bijdragen. Met deze instelling kunt u uw wijzigingen testen en werken.
- Gebruik Gitpod, een gratis online dev omgeving. Door op de knop hieronder te drukken start je een kant-en-klare dev omgeving voor freeCodeCamp in je browser. Het duurt maar een paar minuten.
[![Openen in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp)
- Bewerk de bestanden op de interface van GitHub door te klikken op het potloodpictogram voor het corresponderende bestand. Hoewel dit de snelste manier is, wordt het **niet aanbevolen**, omdat u uw wijzigingen niet kunt testen op GitHub. Als onze onderhouders tot de conclusie komen dat de wijzigingen die je hebt aangebracht lokaal getest moeten worden, moet je in plaats daarvan de bovenstaande methoden opnieuw volgen.
## Uitdaging sjabloon
Hieronder is een sjabloon van hoe de markdown bestanden er op dit moment uitzien. Om de gestroomlijnde sjabloon te zien, zien we [hieronder](#upcoming-challenge-template).
````md
---
id: Unieke identificatie (alfanumeriek), MongoDB_id)
titel: Challenge titel
challengeType: 0
videoUrl: 'url of video uitleg'
---
## Beschrijving
` tags. Bijvoorbeeld, namen van HTML-tag of CSS-eigenschappen
- De eerste instantie van een trefwoord wanneer het wordt gedefinieerd, of algemene trefwoorden (bijv. "object" of "immutable") gaan over `` tags
- Referenties naar coderen onderdelen (bijvoorbeeld functie, methode of variabelenamen) moeten worden verpakt in `
` tags. Zie voorbeeld hieronder:
- Gebruik
parseInt
om de variabele realNumber
om te zetten in een geheel getal.
- Multi-regel codeblokken **moeten worden voorafgegaan door een lege regel**. De volgende regel moet beginnen met drie achtergronden die onmiddellijk gevolgd worden door een van de [ondersteunde talen](https://prismjs.com/#supported-languages). Om het codeblok te voltooien, moet je een nieuwe regel starten die slechts drie backticks en **een andere lege regel** heeft. **Opmerking:** Als je een voorbeeldcode in YAML gaat gebruiken, gebruik `yaml` in plaats van `yml` voor de taal rechts van de backticks.
Zie voorbeeld hieronder:
````md
Het volgende is een voorbeeld van code:
```{language}
[UW CODE HERE]
````
````
- Aanvullende informatie in de vorm van een notitie moet worden geformatteerd `Opmerking: Rest van notitie tekst...
- Als er meerdere notities nodig zijn dan de lijst van alle notities in aparte zinnen met behulp van het formaat `notities: Eerste notitie tekst. Tweede notitie tekst.`.
- Gebruik dubbele aanhalingstekens van toepassing
## Schrijftesten
Uitdagingen moeten het minimum aantal tests hebben dat nodig is om te verifiëren dat een camper een concept begrijpt.
Ons doel is om het enige punt te communiceren dat de uitdaging probeert te leren en te testen dat zij dat punt hebben begrepen.
Uitdaging tests kunnen gebruik maken van de Node.js en Chai.js assertie bibliotheken. En, indien nodig, kan de door de gebruiker gegenereerde code geopend worden in de variabele `code`.
## Opmaak seed code
Hier zijn specifieke formattering richtlijnen voor de challenge seed code:
- Gebruik twee spaties om te inspringen
- JavaScript stellingen eindigen met een puntkomma
- Gebruik dubbele aanhalingstekens van toepassing,
- Commentaren moeten een spatie hebben tussen de reactietekens en de reactie zelf
`// Deze lijn oplossen`
## Hints en Solutions
Elke uitdaging heeft een `Get a Hint` knop. dus een gebruiker heeft toegang tot alle hints/oplossingen die zijn gemaakt voor de challenge. Onderwerpen voor curriculumhints/oplossingen bevinden zich op [ons forum](https://forum.freecodecamp.org/c/guide) onder de categorie 'Guide'.
Als je een probleem vindt met een bestaand challenge's hints/oplossingen onderwerp, kun je suggesties doen in de [contributors categorie](https://forum.freecodecamp.org/c/contributors) op het forum. Moderators en gebruikers met trust level 3 zullen de reacties beoordelen en beslissen of de wijzigingen al dan niet in het bijbehorende hint/oplossingen onderwerp worden opgenomen.
### Toevoegen van nieuwe Uitdaging hints/oplossingen Onderwerpen
Neem de volgende stappen bij het toevoegen van een nieuwe challenge hints/oplossingen gerelateerd onderwerp.
1. Begin met dezelfde stappen voor het maken van een nieuw onderwerp, maar bekijk de volgende stappen voor het maken van de titel.
2. De titel van het onderwerp moet beginnen met `freeCodeCamp Challenge Guide: ` samengevoegd met de werkelijke titel van de curriculum challenge. Bijvoorbeeld, als de uitdaging "`Chunky Monkey`" heet, zou de titel van de topic "`freeCodeCamp Challenge Guide: Chunky Monkey`" zijn.
3. `camperbot` moet de eigenaar zijn van deze topics/posts, dus moet je een beheerder vragen om het hoofdbericht te veranderen naar `camperbot`.
4. Zodra het nieuwe onderwerp is aangemaakt, is er een forumonderwerp-id gemaakt. Het bevindt zich op het einde van de URL van het forumonderwerp. Deze id moet worden toegevoegd aan de frontmatter van het curriculum challenge bestand via het normale pull request proces voor de `Get a Hint` knop om naar het onderwerp te linken.
### Richtsnoeren voor de inhoud van hints en oplossingen topics
Wanneer u een oplossing voorstelt voor een curriculumuitdaging gerelateerd onderwerp de volledige code moet worden toegevoegd. Dit omvat alle originele seed code plus eventuele wijzigingen die nodig zijn om te slagen voor alle challenge tests. De volgende sjabloon moet worden gebruikt bij het maken van nieuwe hints/oplossingen topics:
``md
# Challenge Name Goes Here
---
## Probleemuitleg
Dit vat samen wat er moet worden gedaan zonder de beschrijving en/of instructies van de uitdaging opnieuw te geven. This is an optional section
#### Relevant Links
- [Link Text](link_url_goes_here)
- [Link Text](link_url_goes_here)
---
## Hints
### Hint 1
Hint goes here
### Hint 2
Hint goes here
---
## Solutions
Solution 1 (Click to Show/Hide)
```js
function myFunc() {
console.log('Hello World!');
}
````
#### Code uitleg
- Code-uitleg komt hier
- Code-uitleg komt hier
#### Relevante links
- [Link tekst](link_url_goes_here)
- [Link tekst](link_url_goes_here)
Precies hetzelfde als de seeds sectie
Opnieuw hetzelfde
De vraag zou hier gaan (alleen gebruikt voor video challenges)
Antwoord 1
Meer antwoorden
Antwoord 2
\
````
Het maken en bewerken van uitdagingen:
Uitdaging types - wat de numerieke challenge type waarden betekenen (enum).
Bijdragen aan FreeCodeCamp - Schrijven van ES6 Challenge Testen - een video volgend op Ethan Arrowood als hij bijdraagt aan de oude versie van het curriculum.