Creează o provocare de cod
Ajutor pentru creatori
Ghiduri și iar ghiduri! Poți citi ghidurile disponibile pe platformă, fiecare secțiune a acestora te poate ajuta să înțelegi mai bine regulile și ce trebuie să faci pentru a crea o provocare de succes.
Adu popcornul! Am creat un tutorial video în care poți vedea pas cu pas ce trebuie să faci pentru a crea o provocare. Urmărind acest tutorial și citind toată documentația, nu ar trebui să mai ai probleme în crearea unei provocări.
INFO
Trebuie să știi că crearea unei provocări nu este o sarcină ușoară și există unele diferențe între rezolvarea unei provocări și crearea uneia. Te rugăm să iei în considerare faptul că crearea unei provocări este o muncă ce necesită rigoare și seriozitate pentru ca utilizatorii DojoCode să fie mulțumiți și să îți ofere feedback pozitiv.
Cerințe
Doar utilizatorii care au atins nivelul Ambitious DOJO pot crea o nouă provocare.
Cum să creezi o provocare pas cu pas
Mai întâi, vei avea pe pagina My Challenges secțiunea NEW DRAFT
După ce apeși pe butonul NEW DRAFT, va apărea un popup în care trebuie să definești Name, Slug-ul și șablonul pe care îl dorești. (Fig. 1)

Fig. 1
Selectează șablonul pe care îl dorești pentru provocarea de codare. În acest exemplu, vom selecta șablonul Python.
După ce finalizezi acești pași, apasă pe Create draft și vei fi redirecționat către pagina de editare a provocării.
Pe pagina de editare vei găsi 3 secțiuni: Challenge info (Fig. 2), Files (Fig. 3) și Dependencies (Fig. 4).

Fig. 2

Fig. 3

Fig. 4
Urmează acești pași simpli pentru a-ți crea provocarea DojoCode:
Prima filă, Challenge Info (Fig. 6).
Aici poți scrie descrierea pentru provocare. Ai 3 categorii în această filă:
Title este primul lucru pe care trebuie să îl completezi pe pagina Challenge Info Page. Încearcă să faci titlul ales interesant și scurt. Nu ne dorim un titlu plictisitor și lung, ideea este de a capta atenția publicului.
O altă parte importantă pe care trebuie să o completezi în Challenge Info este descrierea propriu-zisă. Scrierea descrierii este un proces foarte important. Aici ai la dispoziție diferite funcții care te pot ajuta să creezi cel mai clar și calitativ conținut. Printre funcții se numără alegerea tipului de scriere, alegerea titlurilor și diferite stiluri de scriere, cum ar fi îngroșat (bold), cursiv (italic) sau subliniat (underline), dar poți adăuga și imagini sau linkuri.
Poți insera videoclipuri în descrierea provocării (Challenge Description) pentru a avea o descriere mai explicită sau mai detaliată. Poți încorpora videoclipuri de pe YouTube sau Vimeo, adăugând linkul în zona specifică. (Fig. 5)

Fig. 5
Atunci când configurezi provocarea, nu ești limitat la șablonul de cod implicit. Așa cum se vede în Fig. 6, în secțiunea Translations, poți traduce provocarea de cod în mai multe șabloane apăsând pe butonul „+” pentru a adăuga o altă limbă de programare.
Template Validation: Toate traducerile șabloanelor sunt validate automat înainte de a putea publica, asigurând calitatea.
Poți crea oricâte variații de șabloane dorești, pentru a le permite cursanților să rezolve provocarea în diferite limbi de programare.
Fiecare șablon nou va copia automat detaliile de bază din variația inițială a șablonului, facilitând menținerea consistenței.
Dacă dorești să oferi detalii sau instrucțiuni suplimentare pentru o modificarea a șablonului, le poți include pur și simplu în descrierea provocării (Challenge Description).
De asemenea, poți selecta sau crea etichete (tags) pentru provocarea de cod. Poți pur și simplu să scrii ceva în câmpul de introducere Tags și să selectezi o etichetă dacă există, sau poți pur și simplu să apeși tasta enter și se va crea una pe baza textului introdus.

Fig. 6
Pentru provocările de cod NodeJS, poți, de asemenea, să activezi previzualizarea în browser (enable browser preview). Un bun exemplu ar fi o aplicație Express în care urmărim să creăm un server cu rute către care putem trimite cereri. Odată ce faci clic pe această opțiune, previzualizarea în browser se va deschide în partea dreaptă, permițându-ne să vedem modificările în provocarea noastră de backend (vezi Fig. 7).

Fig. 7
În fila Files, trebuie să încarci fișierele de testare sau alte fișiere preîncărcate necesare pentru provocare. Pe baza șablonului pe care îl alegi, vom genera un boilerplate pentru tine, oferind câteva fișiere de pornire pentru a fi modificate. De asemenea, poți să imporți (import) sau să exporți fișiere pentru provocarea de cod făcând clic pe pictograma din dreapta din secțiunea „Files” și selectând o opțiune (Fig. 8).
O soluție rapidă și ușoară este următoarea: dacă dorești să lucrezi într-un IDE, poți exporta fișierele inițiale, le poți dezarhiva pe computerul tău și poți deschide folderul folosind IDE-ul tău preferat. Când ai terminat lucrul, importi pur și simplu un nou fișier zip care conține fișierele provocării de cod.
Crearea provocărilor asistată de AI
De asemenea, poți crea și gestiona provocări direct din IDE-uri bazate pe AI, precum Claude Code, Cursor sau VS Code folosind integrarea DojoCode MCP. Răsfoiește provocările, scrie cod, rulează teste și publică — totul fără a părăsi editorul. Află mai multe despre integrarea cu IDE-uri.

Fig. 8
În Initial Tests și în All Tests trebuie să încarci testele care verifică soluțiile utilizatorilor pentru provocare.
În secțiunea Preloaded Files, adaugă codul de bază inițial oferit utilizatorului. Aceste fișiere servesc ca punct de pornire pentru provocare, conținând orice boilerplate necesar sau structura de cod pe care utilizatorul trebuie să o dezvolte pentru a-și finaliza soluția (Fig. 8).
- Hidden File: Acest fișier nu va fi vizibil atunci când provocarea se încarcă pe View Page, dar utilizatorii pot comuta vizibilitatea fișierelor ascunse.
- Read-Only File: Acest fișier nu poate fi editat de utilizatorii care încearcă să îți rezolve provocarea de cod.
- Redacted File: Acest fișier nu va fi trimis pentru validare atunci când soluția este trimisă.
- Initially Opened File: Acest fișier va fi primul deschis atunci când un utilizator încearcă să îți rezolve provocarea de cod. Doar un singur fișier poate avea această proprietate.
- Main File: Acesta este punctul principal de intrare pentru provocarea ta. Este fișierul care va fi executat atunci când se dă clic pe butonul „Run”. Doar un singur fișier poate fi desemnat ca Main File.

Fig. 9
Ultima categorie din fila Files este Author Solution Files. Aici încarci soluția finală pentru provocare. Această parte va fi disponibilă pentru utilizatori doar după ce deblochează versiunea Solution a provocării.
Main File Info
Main File este crucial pentru execuția provocării. În timp ce Initially Opened File determină vizualizarea inițială a utilizatorului în editor, Main File definește ce fișier ar trebui să execute runner-ul platformei. De exemplu, într-o provocare Java, acesta ar fi fișierul care conține metoda public static void main.
Ultima filă, Dependencies, este locul de unde selectezi dependențele necesare pentru ca provocarea ta să poată fi rezolvată. Acest lucru este un detaliu important, deoarece ar putea exista biblioteci de cod sau framework-uri pe care dorești să le folosești în proiect.

Fig. 10
Știi ce vrei! La început, este bine să știi exact ce vrei de la provocarea ta. Pentru a crea descrierea și cerința exactă și pentru a te face înțeles, este bine să conturezi exact ceea ce dorești să obții cu această provocare.
Cunoaște-ți competiția! Încearcă ca provocarea ta să nu fie similară cu altele de pe platformă. Cu cât este mai originală, cu atât mai bine.
Este recomandat ca, pentru fiecare provocare încărcată, creatorii să citească ghidul și toate subcapitolele acestuia.
Resurse corelate
Înainte de a-ți crea provocarea:
- 📋 Ghid de redactare a provocărilor
- ✍️ Scrierea descrierilor pentru provocări
- 📝 Reguli generale de codare
După publicare:
Odată ce ești mulțumit de provocarea ta și nu mai dorești să aduci nicio modificare suplimentară, o poți publica. Inițial, provocarea ta nu va avea un nivel de dificultate, acesta fiind obținut pe parcurs. Cu toate acestea, poți seta o dificultate implicită (Fig. 11). Această dificultate va fi utilă pentru calcularea ratingului unui utilizator de concurs pentru provocările care nu au fost încă evaluate de comunitate. Citește mai departe pentru a afla cum va primi provocarea ta un nivel de dificultate.

Fig. 11
Important
Atunci când creezi o nouă provocare de cod, este esențial să te asiguri că soluția îndeplinește criteriile așteptate și trece toate testele relevante. Acest document descrie cum să configurezi, să depanezi și să rulezi testele în mod eficient.
- Implementează soluția: Scrie soluția inițială pentru provocare, asigurându-te că respectă cele mai bune practici de codare.
Configurează testarea
- Teste inițiale: Aceste teste verifică dacă soluția autorului îndeplinește cerințele de bază.
- Toate testele : Teste cuprinzătoare care acoperă toate cazurile limită și scenariile.
- Rularea testelor
- Prezentarea butoanelor
Când te afli în interfața provocării, vei găsi două butoane principale pentru testare:
- Test: Rulează testele inițiale pe soluția autorului.
- Test All: Rulează toate testele, inclusiv testele cuprinzătoare.
Flux de lucru pentru testare
Preview: Folosește funcția de previzualizare pentru a vedea cum le apare provocarea utilizatorilor. Acest lucru îți permite, de asemenea, să validezi formatarea și prezentarea enunțului problemei.
Run Code: Dă clic pe butonul Run pentru a-ți executa codul în mediu. Acest lucru este util pentru depanarea logicii și vizualizarea logurilor de consolă în timp real în zona de output.
Run Initial Tests: Dă clic pe butonul Test pentru a rula testele inițiale. Acest lucru asigură că soluția ta funcționează conform așteptărilor la un nivel de bază.
Test All: Odată ce ești mulțumit de testele inițiale, dă clic pe butonul Test All. Aceasta va rula toate testele, inclusiv cele cuprinzătoare și ascunse, oferind o evaluare completă a soluției provocării tale înainte de publicare.
Depanare:
Dacă vreun test eșuează, analizează mesajele de eroare furnizate. Acestea indică de obicei care test a eșuat și de ce. Folosește instrucțiuni de afișare (print) sau logging pentru a scoate valori intermediare în codul tău, astfel încât să poți depista unde apar problemele. Rerulează testele după ce ai făcut ajustări în cod pentru a te asigura că problemele au fost rezolvate.
După publicarea unei provocări de cod (Code Challenge)
După publicarea unei Code Challenge, nu mai poți edita provocarea de cod. Provocarea ta va fi trimisă spre revizuire (procesul BETA), unde utilizatorii vor vota dificultatea acesteia.
Cum își obține o provocare ratingul de dificultate?
Primii 3 utilizatori care finalizează și termină provocarea și care doresc să voteze dificultatea provocării, vor putea acorda un scor de dificultate. Acest scor începe de la 1 și merge până la 3:
- 1 reprezintă începător
- 2 este intermediar
- Cea mai mare valoare din sistemul de notare este 3, care reprezintă expert.
Dificultatea va fi reprezentată de media voturilor acordate de primii 3 utilizatori care aleg să voteze provocarea.
Nu este obligatoriu ca un utilizator să voteze dificultatea provocării, dar dacă rezolvi o provocare fără dificultate stabilită, vei primi punctele pentru rezolvarea acelei provocări abia după ce dificultatea acesteia a fost setată.
Primii 3 utilizatori care aleg să voteze dificultatea vor primi, pe lângă scorul de dificultate al provocării stabilit ulterior, un bonus de 40 de puncte pentru că au ales să voteze dificultatea. Bonusul constă în 20 de puncte pentru că au rezolvat o provocare fără dificultate și 20 de puncte pentru că au ales să îi acorde o notă de dificultate.
Dacă un utilizator rezolvă o provocare care nu are un rating de dificultate stabilit, dar alege să nu îi voteze dificultatea, acesta va primi un bonus de 20 de puncte.
După ce dificultatea a fost setată, utilizatorii care au rezolvat provocarea înainte vor primi scorul în funcție de dificultatea acesteia.
După ce o provocare a primit primele 3 voturi și perioada de vot s-a încheiat, aceasta primește rata de dificultate și este trecută în statusul "approved".
Curatorul provocării va fi de asemenea recompensat cu puncte XP și Tokenuri DojoCode după ce provocarea primește statusul "approved" și o dificultate. Vezi tabelul următor pentru mai multe informații.
| Dificultate | Puncte XP | Tokenuri DojoCode |
|---|---|---|
| Începător | 50 | 50 |
| Intermediar | 200 | 100 |
| Expert | 500 | 200 |