Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
480 commits
Select commit Hold shift + click to select a range
2b9a5ec
fix(client): profile card background (#57523)
huyenltnguyen Dec 15, 2024
d6530bc
chore(curriculum): remove jquery from Legacy Basic CSS Challenges (#5…
a2937 Dec 15, 2024
5d5dafb
fix(tools): sync up unit tests with client tests (#57512)
ojeytonwilliams Dec 16, 2024
3074c72
fix: "What Are Best Practices for Hiding Content So It Doesn't Become…
scissorsneedfoodtoo Dec 16, 2024
6b5baa1
fix(curriculum): granular chart tests in budget app (#56785)
gikf Dec 16, 2024
8c55823
fix(curriculum): examples as a list and typos (#57537)
Supravisor Dec 16, 2024
8984501
chore(i18n,learn): update i18n-curriculum submodule (#57542)
camperbot Dec 16, 2024
1a99d48
fix: update css custom properties multiple choice question (#57541)
scissorsneedfoodtoo Dec 16, 2024
586d1bd
chore(i18n,client): processed translations (#57540)
camperbot Dec 16, 2024
7c98f26
fix: node and python icons (#57527)
moT01 Dec 16, 2024
c9d2b47
feat: prep b1 english for release (#57543)
ojeytonwilliams Dec 16, 2024
fbf6a0d
feat: prep semantic html for release (#57539)
ojeytonwilliams Dec 17, 2024
cd98691
chore: update HTML lectures intros (#57538)
Ksound22 Dec 17, 2024
3f9c95d
fix: update instructions for fetch method (#57116)
aaqib605 Dec 17, 2024
f37e1c9
fix(a11y): completion state of LinkBlock and LegacyLinkBlock (#57320)
huyenltnguyen Dec 17, 2024
183e3cf
fix: JS comments lecture multiple choice question (#57553)
scissorsneedfoodtoo Dec 17, 2024
169af06
fix: js how can you change the casing of a string code example (#57556)
scissorsneedfoodtoo Dec 17, 2024
60068cd
fix: js extract a substring multiple choice code example (#57555)
scissorsneedfoodtoo Dec 17, 2024
dbf873f
fix: js replace parts of a string with another multiple choice questi…
scissorsneedfoodtoo Dec 17, 2024
2b942bf
fix: change challengeType in 5 labs (and formatting) (#57561)
majestic-owl448 Dec 17, 2024
ff84453
chore(curriculum): remove jquery from css flexbox (#57545)
a2937 Dec 17, 2024
78c33e6
chore(curriculum): update survey form (#57551)
a2937 Dec 17, 2024
91f8619
fix: key characteristics of js arrays multiple choice questions (#57562)
scissorsneedfoodtoo Dec 17, 2024
1991a88
fix(curriculum): fix some feedback answers on A2 block 1 (#57563)
DanielRosa74 Dec 17, 2024
4cfa2d6
fix: trim whitespace from a string multiple choice question (#57560)
scissorsneedfoodtoo Dec 17, 2024
97419af
chore(curriculum): remove unused meta (#57547)
moT01 Dec 17, 2024
bd9176b
fix: some typos in quizzes (#57559)
majestic-owl448 Dec 17, 2024
6e381b9
fix(curriculum): typo in quiz question (#57566)
josephemswiler Dec 17, 2024
a2bf2e4
Fix(Curriculum): Replaced curved quotes with straight ones for Eng Cu…
nieldakarla Dec 17, 2024
d4df2d1
feat(curriculum): add transcripts for react fundamental lectures (#5…
jdwilkin4 Dec 17, 2024
cfdc8a1
fix: use of otherwise (#57573)
majestic-owl448 Dec 17, 2024
a8b7a45
fix(curriculum): update video id, review and quiz for basic html modu…
Dario-DC Dec 17, 2024
2cb6131
chore: replace curly quotes (#57575)
majestic-owl448 Dec 17, 2024
6161b62
fix(curriculum): match literal dot (#57579)
gikf Dec 17, 2024
2e61905
Fix(Curriculum): Replaced curved backticks with straight backticks En…
nieldakarla Dec 17, 2024
17c9850
fix: add CDN link explanation (#57582)
mdmillerdev Dec 17, 2024
8bf15a5
feat(curriculum): change isupcoming flags on fsd blocks (#57564)
moT01 Dec 18, 2024
5680217
fix: update videoid and multiple choice question for the how to insta…
scissorsneedfoodtoo Dec 18, 2024
c33d1ef
fix(curriculum): feedback text of Morning or Evening Routine step 93 …
Supravisor Dec 18, 2024
648cc58
feat(curriculum): add magazine layout lab (#57174)
larymak Dec 18, 2024
03ec4b6
fix(curriculum): give useful hint for step 50 of statistics calculato…
Agung1606 Dec 18, 2024
31446d5
chore(i18n,learn): update i18n-curriculum submodule (#57598)
camperbot Dec 18, 2024
cd1f138
chore(i18n,client): processed translations (#57596)
camperbot Dec 18, 2024
ab43f13
fix(curriuculum): make magazine layout lab live (#57599)
moT01 Dec 18, 2024
433b9e3
fix(curriculum): use correct lecture challenge video ids (#57328)
moT01 Dec 18, 2024
f18d8b1
fix(curriculum): small changes to answers in comprehension cheks (#57…
Dario-DC Dec 18, 2024
ae2bd44
chore(curriculum): update video ids for importance of accessibility l…
Dario-DC Dec 18, 2024
722c9ce
chore(curriculum): update tribute page (#57584)
a2937 Dec 18, 2024
f5163eb
chore(curriculum): update asserts for personal portfolio project (#57…
a2937 Dec 18, 2024
69d81c9
chore(curriculum): update stylized todo list lab (#57549)
a2937 Dec 18, 2024
25b917c
chore: update lab intros (#57569)
zairahira Dec 18, 2024
20876a5
chore(curriculum): remove jquery from responsive web design principle…
a2937 Dec 18, 2024
16aa50a
feat(curriculum): set upcoming change flags from blocks 1-4 of the B1…
DanielRosa74 Dec 18, 2024
91c9b10
chore(curriculum): remove jquery from css grid (#57572)
a2937 Dec 18, 2024
174eec2
fix(client): only show live certifications (#57602)
ojeytonwilliams Dec 18, 2024
397c4a5
chore: improve error when block dir is empty (#57606)
ojeytonwilliams Dec 18, 2024
cb1c324
fix(curriculum): improve Library Manager tests (#57577)
gikf Dec 18, 2024
9687255
chore(curriculum): cleanup lab travel agency (#57578)
a2937 Dec 18, 2024
a22eef4
chore(curriculum): update technical documentation project (#57581)
a2937 Dec 18, 2024
19b54ff
feat: add drum machine to new cert (#57603)
majestic-owl448 Dec 18, 2024
12c2875
chore(curriculum): update step 12 and 13 music player tests (#57361)
a2937 Dec 18, 2024
423db47
chore(api): enable exam environment endpoints in prod (#57604)
ShaunSHamilton Dec 19, 2024
5583032
fix(client): show icons on coming soon chapters (#57612)
moT01 Dec 19, 2024
4a1854d
fix(client): update exam token return type (#57615)
ShaunSHamilton Dec 19, 2024
1525a67
fix(curriculum): update video ids for css grid (#57590)
Dario-DC Dec 19, 2024
1612301
chore(ui): add bluesky button (#57297)
a2937 Dec 19, 2024
81ffae5
fix(client): logic to determine auto-expanded block (#57456)
huyenltnguyen Dec 19, 2024
4658eda
fix(curriculum): replace `->` with actual right arrow symbol (#57142)
huyenltnguyen Dec 19, 2024
fc515b2
fix: grid template areas multiple choice question (#57617)
scissorsneedfoodtoo Dec 19, 2024
01162c6
chore(curriculum): remove jquery from cat photo app workshop (#57580)
a2937 Dec 19, 2024
b88a6fe
chore: update css lectures intros (#57544)
Ksound22 Dec 19, 2024
05cf6ea
chore: update JavaScript and React lectures descriptions (#57614)
Ksound22 Dec 19, 2024
139e936
fix(curriculum): update video ids for Working with objects in JavaScr…
Dario-DC Dec 19, 2024
8d260f6
feat(curriculum): test clearing of previous arrays in Sorting Visuali…
gikf Dec 19, 2024
8c2cf79
fix(curriculum): modify question in html validation lecture (#57624)
zairahira Dec 20, 2024
09ae43d
fix(UI): Editor scroll gutter element overlaps code (#57630)
Nikhil-Doye Dec 20, 2024
72c5310
fix(curriculum): Step 57 Todo App variable name typo (#57611)
Supravisor Dec 20, 2024
0029ff6
fix(curriculum): update video ids for DOM manipulation and events mod…
Dario-DC Dec 20, 2024
d127e9d
chore: change drum machine based on tom's review (#57627)
majestic-owl448 Dec 20, 2024
3cf0b74
feat(curriculum): Add English tasks B1 Block 5 (#57165)
nieldakarla Dec 20, 2024
4c05ea9
feat(curriculum): add intro and set upcomingChange flag to false for …
DanielRosa74 Dec 20, 2024
cdd06e2
chore(curriculum): change challengeType for Plant Nursery Catalog (#5…
gikf Dec 20, 2024
cb28ae8
fix(curriculum): audit html review (#57645)
Dario-DC Dec 20, 2024
ec95573
fix(curriculum): small fixes in accessibility review (#57643)
Dario-DC Dec 21, 2024
e3a0e0b
fix(curriculum): fix typo remaing to remaining (#57654)
JungLee-Dev Dec 21, 2024
2563c61
fix(curriculum): add missing backticks (#57659)
ronakgadhiya09 Dec 21, 2024
eabf73b
fix(curriculum): update test 14 Travel Agency Lab (#57620)
zairahira Dec 21, 2024
8600ebb
fix(curriculum): more lenient border width for legacy css (#57637)
a2937 Dec 21, 2024
77f0481
fix: window document multiple choice question (#57595)
scissorsneedfoodtoo Dec 21, 2024
76b7dce
chore: audit semantic HTML (#57618)
zairahira Dec 21, 2024
38bf95e
feat(curriculum): add localstorage lecture transcripts (#57629)
moT01 Dec 21, 2024
06bd42e
fix(curriculum): wrap number in backticks in lecture quiz (#57669)
shauryatiwari1 Dec 21, 2024
67e63b5
fix: some backtick fixes (#57670)
majestic-owl448 Dec 21, 2024
1df0e61
fix: audit string and variables lectures quizzes reviews (#57639)
majestic-owl448 Dec 21, 2024
5417217
fix: what are linters and formatters multiple choice question (#57663)
scissorsneedfoodtoo Dec 21, 2024
e032c90
fix: update try...catch...finally... lecture multiple choice question…
scissorsneedfoodtoo Dec 21, 2024
049a6c8
fix: review CSS Relative and Absolute Units Quiz (#57674)
majestic-owl448 Dec 22, 2024
da36fe9
fix(curriculum): update ids for JavaScript booleans and numbers (#57591)
Dario-DC Dec 22, 2024
eddfc4c
fix(client): fsd scroll issue (#57646)
moT01 Dec 22, 2024
4db4c54
fix(curriculum): allow a semi-colon in step 37 of the todo app (#57641)
a2937 Dec 22, 2024
21081a4
fix(api): /showCert not returning user full name (#57666)
huyenltnguyen Dec 22, 2024
cdd1a7c
chore(curriculum): remove beta label from superblock titles (#57546)
moT01 Dec 22, 2024
09ab0f0
fix(curriculum): is async / await multiple choice question (#57671)
scissorsneedfoodtoo Dec 22, 2024
0f443d9
fix: how does the js date object work quiz answer (#57668)
scissorsneedfoodtoo Dec 22, 2024
9d1c588
fix(curriculum): update video ids (#57675)
Dario-DC Dec 22, 2024
25d2794
fix(curriculum): update "punctuation" to "word" (#57688)
karthik11135 Dec 22, 2024
1d92778
feat(curriculum): add functional programming lecture transcripts (#57…
moT01 Dec 22, 2024
446fe28
chore(curriculum): add video ids and comprehension check questions fo…
jdwilkin4 Dec 22, 2024
a57ac33
fix(curriculum): update video ids (#57605)
Dario-DC Dec 22, 2024
77ea322
fix: advanced js debugging techniques multiple choice question (#57667)
scissorsneedfoodtoo Dec 22, 2024
8a69d99
fix(curriculum): add function's parameter information in Password Gen…
gikf Dec 22, 2024
19c96a8
fix(curriculum): add note about additional logging (#57680)
gikf Dec 22, 2024
fec4f62
feat(curriculum): add audio/video lecture transcripts (#57635)
moT01 Dec 22, 2024
69831b9
feat(curriculum): add regex lecture transcripts (#57690)
moT01 Dec 22, 2024
751320a
chore(curriculum): replace transcript with video (#57691)
Dario-DC Dec 22, 2024
2d135c5
fix: audit design for developers section (#57681)
zairahira Dec 22, 2024
53c107a
fix(curriculum): confirm not using `unshift` in Shopping List (#57687)
gikf Dec 22, 2024
6187e3c
fix(curriculum): don't require specific `num` value in Factorial Calc…
gikf Dec 22, 2024
0227d17
fix(curriculum): separate empty string test in Sentence Analyzer (#57…
gikf Dec 22, 2024
4401eff
fix(curriculum): correct typo from 'cick' to 'click' (#57693)
saurav-sinha-3141 Dec 22, 2024
342fb0e
fix(client): no block prompt on fcc10 (#57692)
ahmaxed Dec 22, 2024
5077b0e
chore: updating first two video ids for regex lecture block (#57697)
jdwilkin4 Dec 22, 2024
4025aba
fix(curriculum): ensure empty array doesn't pass tests in Quiz Game (…
gikf Dec 23, 2024
5b89dec
fix: different arithmetic operators in JS multiple choice questions (…
scissorsneedfoodtoo Dec 23, 2024
a5f1496
fix: common practices for naming variables and functions multiple cho…
scissorsneedfoodtoo Dec 23, 2024
4f176f9
fix(curriculum): inconsistent logging in final step (#57689)
gikf Dec 23, 2024
b732afb
fix(curriculum) Statistics Calculator typo Step 32 (#57678)
Supravisor Dec 23, 2024
b5b47ef
fix: try to do calculations on numbers and strings multiple choice qu…
scissorsneedfoodtoo Dec 23, 2024
2a1713f
fix(curriculum): typos in hint text (#57699)
fizkultprivet322 Dec 23, 2024
43175cf
fix(curriculum): clarify leap year in user story (#57700)
gikf Dec 23, 2024
4a2db6e
fix(curriculum): use variable names not defined automatically by brow…
gikf Dec 23, 2024
b17d5f1
fix(curriculum): typos in block intro (#57703)
huyenltnguyen Dec 23, 2024
aed3c9e
fix(curriculum): task requirements in instructions in Loan Qualificat…
gikf Dec 23, 2024
a9c490f
fix: audit Basic CSS block (#57638)
zairahira Dec 23, 2024
310eb24
fix(client): replace == with === in donation-saga.js (#57709)
JungLee-Dev Dec 23, 2024
73a6004
fix(curriculum): improve description of Greeting Card step 15 and 16 …
huyenltnguyen Dec 23, 2024
f048a7f
fix(curriculum): add feedback for unanswered multiple choice question…
Sembauke Dec 23, 2024
d9f9eeb
fix(curriculum): greeting-card test typo (#57714)
ShaunSHamilton Dec 23, 2024
68550cc
fix: initialize MathJax correctly (#57321)
Sembauke Dec 23, 2024
6748f35
fix(curriculum): job-application-form label input test (#57716)
ShaunSHamilton Dec 23, 2024
ca45908
fix(curriculum): move sentence maker lab to strings and variables mod…
Dario-DC Dec 23, 2024
c6423b4
fix(client): enable syntax highlighting for JSX code blocks (#57715)
huyenltnguyen Dec 23, 2024
bd616b8
chore(i18n,client): processed translations (#57717)
camperbot Dec 23, 2024
f263840
feat(curriculum): Add English tasks B1 Block 6 (#57565)
miyaliu666 Dec 23, 2024
2077e99
chore(i18n,learn): update i18n-curriculum submodule (#57719)
camperbot Dec 23, 2024
6c04b4e
fix: typos from your to you in challenges (#57713) (#57718)
Ishaankhan7 Dec 23, 2024
7ea20c1
chore(curriculum): replace transcripts with videos (#57702)
Dario-DC Dec 23, 2024
c47a661
feat(curriculum): add intro and set isUpcomingChange to false for Blo…
DanielRosa74 Dec 23, 2024
7d6ddde
chore: auditing worshops, reviews, and quizzes intros (#57633)
Ksound22 Dec 23, 2024
1de979f
fix(e2e): attempt to stabilize super-block-page tests (#57705)
huyenltnguyen Dec 23, 2024
fec00f4
feat: update donor thank you copy (#57722)
ahmaxed Dec 23, 2024
3f350df
fix(client): cursor type in challenge explanation (#57708)
huyenltnguyen Dec 23, 2024
2eaa883
chore(curriculum): update video id for div element lecture (#57726)
jdwilkin4 Dec 23, 2024
143d9d3
fix(curriculum): test both stories in Sentence Maker (#57704)
gikf Dec 23, 2024
4f4bbe6
fix(tests): donate playwright tests (#57727)
moT01 Dec 23, 2024
97cf1d8
fix(curriculum): add extra test case in pyramid generator (#57628)
timmy471 Dec 23, 2024
033fe98
fix(client): final fsd adjustments before launch (#57723)
moT01 Dec 23, 2024
94b0776
fix(client): share buttons in lower jaw (#57731)
moT01 Dec 24, 2024
91b03ba
fix(curriculum): replace 1 with 3 in English for developers challenge…
YashJsh Dec 24, 2024
410bcb3
fix(curriculum): Removed "received" (#57738)
devTejaSrinivas Dec 24, 2024
7ce2b7c
fix(curriculum): typo physing -> phishing (#57741)
Anurag-Subodh-Deshmukh Dec 24, 2024
1129eb4
fix(curriculum): remove the word "showing" (#57742)
Bypythom Dec 24, 2024
282a9c6
fix(curriculum): typo in Euler Problem 462 (#57751)
Anurag-Subodh-Deshmukh Dec 24, 2024
4750dfb
fix(client): multiple choice question feedback display (#57740)
huyenltnguyen Dec 25, 2024
f43d444
test: enable quiz and super-block-page spec (#57552)
ojeytonwilliams Dec 25, 2024
077db2d
fix(curriculum): restore bob in present perfect english task (#57754)
a2937 Dec 25, 2024
779bb5a
fix: improve tests in travel agency lab (#57743)
majestic-owl448 Dec 25, 2024
db7edaf
fix(curriculum): improve HTML lecture question and feedback clarity (…
Shiva-Sai-ssb Dec 26, 2024
00c3546
fix(curriculum): Update question in optimize media assets lecture (#5…
Pratheek2474 Dec 26, 2024
cd98008
feat: move what are attributes video (#57778)
majestic-owl448 Dec 26, 2024
ac722f2
chore(i18n,learn): update i18n-curriculum submodule (#57757)
camperbot Dec 26, 2024
393500a
chore(i18n,client): processed translations (#57756)
camperbot Dec 26, 2024
60e7ed0
fix(curriculum): update comprehension check questions for div element…
JungLee-Dev Dec 27, 2024
41d0ac3
fix(curriculum): fixed content for media lecture questions (#57785)
sidgampa1 Dec 27, 2024
d14b12f
fix(curriculum): update feedback for link state question (#57791)
Shiva-Sai-ssb Dec 27, 2024
41680a1
fix(curriculum): update feedback for SVG lecture (#57792)
Shiva-Sai-ssb Dec 27, 2024
c2bedfc
fix(curriculum): update question for structural hierarchy video (#57794)
JungLee-Dev Dec 27, 2024
640cc4c
fix(curriculum): update feedback for HTML dates and times lecture vid…
JungLee-Dev Dec 28, 2024
418ce6e
fix(curriculum): incorrect feedback for path syntax lecture (#57801)
anandhelloworld Dec 28, 2024
65dec6d
fix(curriculum): punctuation in feedback (#57805)
Dec 28, 2024
4b93cce
fix(curriculum): fix typo for hint in meta description video (#57815)
Ritzrawal Dec 29, 2024
3894430
fix(curriculum): changed Build a checkout page instruction tab-index …
g-charan Dec 29, 2024
c08ed12
fix(curriculum): typo in Step 14 of Cat Photo App (#57810)
akaneme Dec 29, 2024
9a16c60
fix(i18n): removed mention of span in HTML fundamentals intro (#57829)
darshan03s Dec 29, 2024
25c21b5
fix(curriculum): step 8 greeting card typo (#57834)
IbrahimKhanGH Dec 30, 2024
48f1572
fix(curriculum): typos in labels and inputs lecture (#57823)
nidhi-wa Dec 30, 2024
4069cdc
fix(curriculum): feedback in replaced elements lecture changed (#57811)
PanosKatsaras Dec 30, 2024
61c30aa
fix(curriculum): Corrected errors in the challenge (#57840)
prabhakaryadav2003 Dec 30, 2024
a11ab04
fix(curriculum): feedback update (#57817)
VC-cyber Dec 30, 2024
c864299
fix(curriculum): tabindex issue in checkout page (#57838)
asr1325 Dec 30, 2024
8d4e484
chore(i18n,learn): update i18n-curriculum submodule (#57841)
camperbot Jan 1, 2025
31f401b
chore(i18n,client): processed translations (#57839)
camperbot Jan 1, 2025
344b09b
fix(curriculum): Update feedback (#57858)
roier Jan 2, 2025
b69c6b7
fix(curriculum): no empty source lab travel agency (#57783)
a2937 Jan 2, 2025
470b68c
fix(curriculum): corrected solution for video question (#57851)
Nirus2005 Jan 2, 2025
59fcfae
fix(curriculum): corrected answer for B1 English task 106 (#57848)
SuryaTejaDarisi Jan 2, 2025
79f6622
fix(curriculum): allow variables in lab trivia bot (#57782)
a2937 Jan 2, 2025
4daf3aa
chore(i18n,learn): update i18n-curriculum submodule (#57855)
camperbot Jan 2, 2025
ade0aa8
fix(curriculum): recipe tracker missing requirement for step 9 (#57843)
lasjorg Jan 2, 2025
e3eccef
fix: use optional chaining to avoid errors (#57759)
majestic-owl448 Jan 2, 2025
e9a5358
fix(curriculum): markdown lab check syntax multiple times (#57744)
a2937 Jan 2, 2025
abbd76f
fix(curriculum): update tests in event hub lab (#57822)
JungLee-Dev Jan 2, 2025
4d4e617
fix(sentry): use environments
raisedadead Jan 2, 2025
55deb55
feat(api): add sentry event route
ShaunSHamilton Jan 2, 2025
a477643
chore(api): add log level configuration
ShaunSHamilton Jan 2, 2025
7bed772
build: use module ESNext + Bundler for scripts (#54133)
ojeytonwilliams Jan 2, 2025
c2e1032
fix(api): logging configs
raisedadead Jan 2, 2025
6a46628
feat: release a2 English cert on mobile (#57497)
Sembauke Jan 2, 2025
ca3b73f
chore(curriculum): make braces optional in step 103, 104 platfomer ga…
a2937 Jan 2, 2025
046a905
fix(curriculum): typo in project idea board hint (#57880)
KamilMarzynski Jan 2, 2025
eb8e96e
chore: update copyright year to 2025 (#57875)
clarencepenz Jan 2, 2025
234aa80
fix(curriculum): grammatical typo (#57876)
clarencepenz Jan 2, 2025
01273fb
fix: donation svg animation (#57867)
ahmaxed Jan 2, 2025
099cb9d
fix(curriculum): update answers for CSS colors quiz (#57885)
a2937 Jan 3, 2025
4e519fa
fix(curriculum): Recipe Tracker improvements (#57694)
gikf Jan 3, 2025
7aedd52
fix(curriculum): Hotel Feedback workshop typo (#57889)
Supravisor Jan 3, 2025
e46bc84
fix(curriculum) : Clarify book catalog lab instructions (#57874)
akshatsh0610 Jan 3, 2025
2465831
fix(curriculum): fix fade in on first audioplay (#57758)
DanielRosa74 Jan 3, 2025
4a31ae2
fix(curriculum): remove backticks from answer (#57911)
nayan-bagale Jan 3, 2025
dc5fad1
fix(curriculum): Update CSS variable fallback syntax question in CSS …
ibnusman Jan 3, 2025
07f1b55
fix(curriculum): update instructions of Decimal to Binary Converter s…
IbrahimKhanGH Jan 4, 2025
0286f8b
fix(curriculum): specify elements order in video compilation lab user…
Dario-DC Jan 4, 2025
52dd67a
fix(curriculum) : Updated an option for 3rd question of quiz on desig…
1ds22cs180 Jan 4, 2025
6fa282c
chore(curriculum): update asserts in legacy basic algorithm scripting…
a2937 Jan 4, 2025
5fb07f0
fix(client): update the old translation link to the new one (#57904)
JungLee-Dev Jan 4, 2025
73f8b34
Fixed double quotes (#57925)
tahas022 Jan 5, 2025
4cb38d9
fix(curriculum): update the distractors of Basic CSS Quiz No 14 (#57937)
JungLee-Dev Jan 5, 2025
c9a77a4
fix(curriculum): add new test case to Cafe Menu step 20 (#57890)
Agung1606 Jan 6, 2025
56fec3a
fix(curriculum): make test stricter in case coverter project (#57883)
Dario-DC Jan 6, 2025
95393aa
feat(curriculum): Added an additional test for year 2000 (#57941)
prabhakaryadav2003 Jan 6, 2025
053b750
refactor(client): challenge links (#57905)
moT01 Jan 6, 2025
be6736f
fix(client): cursor on privacy settings (#57915)
moT01 Jan 6, 2025
d68cbdb
refactor: remove release code (#57957)
ojeytonwilliams Jan 6, 2025
a5a4c4b
feat(client): enable json syntax highlighting (#57963)
a2937 Jan 6, 2025
6f4440f
chore(i18n,learn): update i18n-curriculum submodule (#57956)
camperbot Jan 6, 2025
ff13112
fix(curriculum): typo in cat blog page (#57954)
shirodune Jan 6, 2025
8187ba2
fix(curriculum): Update question and distractors in question 8 of the…
Neha611 Jan 6, 2025
09a811b
chore(i18n,client): processed translations (#57952)
camperbot Jan 6, 2025
b209cf8
chore: remove security.txt (#57962)
raisedadead Jan 6, 2025
6552409
fix(curriculum): update last question of working with strings in java…
lexlucid Jan 6, 2025
bedf042
fix(curriculum): question in second welcome lecture challenge (#57960)
moT01 Jan 6, 2025
779d180
fix: remove extra height of scrollable anchors (#57899)
moT01 Jan 6, 2025
8dcfc13
fix: donation benefits copy (#57946)
ahmaxed Jan 6, 2025
553fe95
fix(curriculum): update textbook links and add download instructions …
Sembauke Jan 7, 2025
c603dab
fix(client): only play scene when ready (#57893)
ojeytonwilliams Jan 7, 2025
ef0eda4
fix(curriculum): improve Bookmark Manager tests (#57636)
gikf Jan 7, 2025
3c385f3
chore(static): cleanup well-known and ads.txt (#57966)
raisedadead Jan 7, 2025
256266b
fix(curriculum): typos in How to Describe Places and Events task 140 …
dstarrtrey Jan 7, 2025
329eba0
docs(api): add troubleshooting section (#57896)
ojeytonwilliams Jan 7, 2025
7b82835
fix(curriculum): change travel agency lab test to allow different sol…
Dario-DC Jan 7, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
8 changes: 7 additions & 1 deletion .github/workflows/e2e-playwright.yml
Original file line number Diff line number Diff line change
Expand Up @@ -157,10 +157,16 @@ jobs:
pnpm run start-ci &
sleep 10
npx playwright test --project="${{ matrix.browsers }}" --grep-invert 'third-party-donation.spec.ts'

- uses: actions/upload-artifact@v4
if: ${{ !cancelled() }}
with:
name: playwright-report-${{ matrix.browsers }}
path: playwright/reporter
retention-days: 30
- name: Upload screenshots
if: failure()
uses: actions/upload-artifact@v4
with:
name: screenshots-${{ matrix.browsers }}
path: playwright/test-results
retention-days: 14
2 changes: 1 addition & 1 deletion LICENSE.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
BSD 3-Clause License

Copyright (c) 2024, freeCodeCamp.
Copyright (c) 2025, freeCodeCamp.
All rights reserved.

Redistribution and use in source and binary forms, with or without
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -263,9 +263,9 @@ The general platform status for all our applications is available at [`status.fr

### License

Copyright © 2024 freeCodeCamp.org
Copyright © 2025 freeCodeCamp.org

The content of this repository is bound by the following licenses:

- The computer software is licensed under the [BSD-3-Clause](LICENSE.md) license.
- The learning resources in the [`/curriculum`](/curriculum) directory including their subdirectories thereon are copyright © 2024 freeCodeCamp.org
- The learning resources in the [`/curriculum`](/curriculum) directory including their subdirectories thereon are copyright © 2025 freeCodeCamp.org
10 changes: 10 additions & 0 deletions api/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,16 @@ cd ../.. # back to the root of the repo
pnpm seed
```

### Troubleshooting

If you have any issues connecting to the database (e.g. MongoServerError: not primary), try removing the volume and recreating the containers.

```bash
cd tools
docker compose down -v
docker compose up -d
```

## Login in development/testing

During development and testing, the api exposes the endpoint GET auth/dev-callback. Calling this will log you in as the user with the email `foo@bar.com` by setting the session cookie for that user.
Expand Down
6 changes: 3 additions & 3 deletions api/__mocks__/env-exam.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,8 @@ export const config: EnvConfig = {
numberOfCorrectAnswers: 1,
numberOfIncorrectAnswers: 1
}
]
],
retakeTimeInMS: 24 * 60 * 60 * 1000
};

export const questionSets: EnvQuestionSet[] = [
Expand Down Expand Up @@ -292,8 +293,7 @@ export const examAttempt: EnvExamAttempt = {
}
],
startTimeInMS: Date.now(),
userId: defaultUserId,
submissionTimeInMS: null
userId: defaultUserId
};

export const examAttemptSansSubmissionTimeInMS: Static<
Expand Down
32 changes: 18 additions & 14 deletions api/prisma/schema.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -69,13 +69,20 @@ type SavedChallenge {
lastSavedDate Float
}

type QuizAttempt {
challengeId String
quizId String
timestamp Float
}

/// Corresponds to the `user` collection.
model user {
id String @id @default(auto()) @map("_id") @db.ObjectId
about String
acceptedPrivacyTerms Boolean
completedChallenges CompletedChallenge[]
completedExams CompletedExam[] // Undefined
quizAttempts QuizAttempt[] // Undefined
currentChallengeId String?
donationEmails String[] // Undefined | String[] (only possible for built in Types like String)
email String
Expand Down Expand Up @@ -108,7 +115,7 @@ model user {
is2018DataVisCert Boolean? // Undefined
is2018FullStackCert Boolean? // Undefined
isCollegeAlgebraPyCertV8 Boolean? // Undefined
isUpcomingPythonCertV8 Boolean? // Undefined
// isUpcomingPythonCertV8 Boolean? // Undefined. It is in the db but has never been used.
keyboardShortcuts Boolean? // Undefined
linkedin String? // Null | Undefined
location String? // Null
Expand Down Expand Up @@ -223,15 +230,17 @@ type EnvAnswer {
/// Configuration for an exam in the Exam Environment App
type EnvConfig {
/// Human-readable exam name
name String
name String
/// Notes given about exam
note String
note String
/// Category configuration for question selection
tags EnvTagConfig[]
tags EnvTagConfig[]
/// Total time allocated for exam in milliseconds
totalTimeInMS Int
totalTimeInMS Int
/// Configuration for sets of questions
questionSets EnvQuestionSetConfig[]
questionSets EnvQuestionSetConfig[]
/// Duration after exam completion before a retake is allowed in milliseconds
retakeTimeInMS Int
}

/// Configuration for a set of questions in the Exam Environment App
Expand Down Expand Up @@ -267,14 +276,10 @@ model EnvExamAttempt {
/// Foreign key to generated exam id
generatedExamId String @db.ObjectId

questionSets EnvQuestionSetAttempt[]
questionSets EnvQuestionSetAttempt[]
/// Time exam was started as milliseconds since epoch
startTimeInMS Int
/// Time exam was submitted as milliseconds since epoch
///
/// As attempt might not be submitted (disconnection or quit), field is optional
submissionTimeInMS Int?
needsRetake Boolean
startTimeInMS Int
needsRetake Boolean

// Relations
user user @relation(fields: [userId], references: [id], onDelete: Cascade)
Expand All @@ -301,7 +306,6 @@ type EnvMultipleChoiceQuestionAttempt {
/// A generated exam for the Exam Environment App
///
/// This is the user-facing information for an exam.
/// TODO: Add userId?
model EnvGeneratedExam {
id String @id @default(auto()) @map("_id") @db.ObjectId
/// Foreign key to exam
Expand Down
7 changes: 6 additions & 1 deletion api/src/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,8 @@ import {
FCC_ENABLE_DEV_LOGIN_MODE,
FCC_ENABLE_SWAGGER_UI,
FCC_ENABLE_SHADOW_CAPTURE,
FCC_ENABLE_EXAM_ENVIRONMENT
FCC_ENABLE_EXAM_ENVIRONMENT,
FCC_ENABLE_SENTRY_ROUTES
} from './utils/env';
import { isObjectID } from './utils/validation';
import {
Expand Down Expand Up @@ -198,6 +199,10 @@ export const build = async (
void fastify.register(examEnvironmentOpenRoutes);
}

if (FCC_ENABLE_SENTRY_ROUTES) {
void fastify.register(publicRoutes.sentryRoutes);
}

void fastify.register(publicRoutes.chargeStripeRoute);
void fastify.register(publicRoutes.signoutRoute);
void fastify.register(publicRoutes.emailSubscribtionRoutes);
Expand Down
7 changes: 7 additions & 0 deletions api/src/exam-environment/generate/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,9 @@ const prisma = new PrismaClient({
/// TODO:
/// 1. Deprecate all previous generated exams for a given exam id?
async function main() {
console.info('Connecting to cluster...');
await prisma.$connect();
console.info('Connected.');

const exam = await prisma.envExam.findUnique({
where: {
Expand All @@ -38,17 +40,22 @@ async function main() {

let numberOfExamsGenerated = 0;

console.info(
`Exam with _id ${ENV_EXAM_ID} found. Generating ${NUMBER_OF_EXAMS_TO_GENERATE} exams...`
);
while (numberOfExamsGenerated < NUMBER_OF_EXAMS_TO_GENERATE) {
try {
const generatedExam = generateExam(exam);
await prisma.envGeneratedExam.create({
data: generatedExam
});
numberOfExamsGenerated++;
console.info(`Generated ${numberOfExamsGenerated} exams`);
} catch (e) {
console.log(e);
}
}
console.log(`Finished generating exams.`);
}

void main();
29 changes: 24 additions & 5 deletions api/src/exam-environment/routes/exam-environment.test.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import { Static } from '@fastify/type-provider-typebox';
import jwt from 'jsonwebtoken';

import {
createSuperRequest,
defaultUserId,
Expand All @@ -11,6 +13,7 @@ import {
} from '../schemas';
import * as mock from '../../../__mocks__/env-exam';
import { constructUserExam } from '../utils/exam';
import { JWT_SECRET } from '../../utils/env';

jest.mock('../../utils/env', () => {
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
Expand Down Expand Up @@ -435,8 +438,6 @@ describe('/exam-environment/', () => {
24 * 60 * 60 * 1000 -
mock.exam.config.totalTimeInMS -
1 * 60 * 60 * 1000;
submittedAttempt.submissionTimeInMS =
Date.now() - mock.exam.config.totalTimeInMS - 24 * 60 * 60 * 1000;
await fastifyTestInstance.prisma.envExamAttempt.create({
data: submittedAttempt
});
Expand Down Expand Up @@ -492,7 +493,6 @@ describe('/exam-environment/', () => {
generatedExamId: generatedExam!.id,
questionSets: [],
needsRetake: false,
submissionTimeInMS: null,
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
startTimeInMS: expect.any(Number)
});
Expand Down Expand Up @@ -579,7 +579,8 @@ describe('/exam-environment/', () => {
config: {
name: mock.exam.config.name,
note: mock.exam.config.note,
totalTimeInMS: mock.exam.config.totalTimeInMS
totalTimeInMS: mock.exam.config.totalTimeInMS,
retakeTimeInMS: mock.exam.config.retakeTimeInMS
},
id: mock.examId
}
Expand Down Expand Up @@ -641,7 +642,7 @@ describe('/exam-environment/', () => {
});

describe('GET /exam-environment/token-meta', () => {
it('should allow a valid request', async () => {
it('should reject invalid tokens', async () => {
const res = await superGet('/exam-environment/token-meta').set(
'exam-environment-authorization-token',
'invalid-token'
Expand All @@ -654,6 +655,24 @@ describe('/exam-environment/', () => {
}
});
});

it('should tell the requester if the token does not exist', async () => {
const validToken = jwt.sign(
{ examEnvironmentAuthorizationToken: 'does-not-exist' },
JWT_SECRET
);
const res = await superGet('/exam-environment/token-meta').set(
'exam-environment-authorization-token',
validToken
);

expect(res).toMatchObject({
status: 418,
body: {
code: 'FCC_EINVAL_EXAM_ENVIRONMENT_AUTHORIZATION_TOKEN'
}
});
});
});

describe('GET /exam-environment/exams', () => {
Expand Down
Loading
Loading