Competenza 01 / 03
JavaScript e Node.js
Esegui nel tuo browser due moduli di esercizi dai loro stessi file, poi il vero file di test del convertitore.
- JavaScript(verificato)
- Node.js e API (basi del back-end)(verificato)
Panoramica
Codice di esercizi del corso back-end di freeCodeCamp, preso testualmente dal mio repository pubblico. Due dei suoi moduli girano qui, nel tuo browser, dallo stesso testo del file mostrato nella vista Codice, e così anche il file di test del convertitore.
In questa pagina
- 02 Provalo: il convertitore di maiuscole/minuscole e il controllo dei numeri primi, eseguiti nel tuo browser dai loro file; e il validatore delle affermazioni del sito
- 03 Codice: gli estratti, con percorso del file, numeri di riga e repository
- 04 Test: i 4 assert del file di test del convertitore, eseguiti nel tuo browser
- 05 Certificati: JavaScript e Backend Development and APIs
JavaScript (verificato)
Vedi la prova
Affermazione
JavaScript
✓ Verificato
Prove
- freeCodeCamp: JavaScript · freecodecamp · verificato il 29 settembre 2026Rilasciato il 31 ago 2026. Verificato sull’API pubblica di freeCodeCamp.
- back-end-development-and-apis (fork) · github · verificato il 28 settembre 2026Fork del repository di freeCodeCamp con un commit di Danilo con le sue soluzioni dei workshop.
- Sorgente del convertitore di maiuscole/minuscole: le quattro funzioni (build-a-case-converter/case_converter/index.js, righe 1–20) · manual · verificato il 2 ottobre 2026Dal commit a3d68af (26 set 2026) di zurukzuruk1 nel repository back-end-development-and-apis. Copiato testualmente il 02/10/2026 (fine riga normalizzati).
- Test del convertitore di maiuscole/minuscole: quattro controlli assert.strictEqual (build-a-case-converter/case_converter/index.test.js, righe 1–18) · manual · verificato il 2 ottobre 2026Dal commit a3d68af (26 set 2026) di zurukzuruk1 nel repository back-end-development-and-apis. Copiato testualmente il 02/10/2026 (fine riga normalizzati).
- Sorgente del controllo dei numeri primi: isPrime (build-a-prime-number-checker-module/index.js, righe 1–11) · manual · verificato il 2 ottobre 2026Dal commit a3d68af (26 set 2026) di zurukzuruk1 nel repository back-end-development-and-apis. Copiato testualmente il 02/10/2026 (fine riga normalizzati).
Risultato
Certificazione freeCodeCamp JavaScript e codice JavaScript pubblico su GitHub.
Node.js e API (basi del back-end) (verificato)
Vedi la prova
Affermazione
Node.js e API (basi del back-end)
✓ Verificato
Prove
- freeCodeCamp: Backend Development and APIs · freecodecamp · verificato il 29 settembre 2026Rilasciato il 27 set 2026. Verificato sull’API pubblica di freeCodeCamp.
- back-end-development-and-apis (fork) · github · verificato il 28 settembre 2026Fork del repository di freeCodeCamp con un commit di Danilo con le sue soluzioni dei workshop.
- Sorgente delle route protette con JWT: registrazione e login con bcrypt e JWT (build-jwt-protected-routes/routes/auth.js, righe 11–52) · manual · verificato il 2 ottobre 2026Dal commit a3d68af (26 set 2026) di zurukzuruk1 nel repository back-end-development-and-apis. Copiato testualmente il 02/10/2026 (fine riga normalizzati).
- Sorgente della Bank API: la route di trasferimento e i suoi controlli (build-a-bank-api/server.js, righe 30–71) · manual · verificato il 2 ottobre 2026Dal commit a3d68af (26 set 2026) di zurukzuruk1 nel repository back-end-development-and-apis. Copiato testualmente il 02/10/2026 (fine riga normalizzati).
Risultato
Certificazione freeCodeCamp Backend Development and APIs, e un repository pubblico con un commit di Danilo con le sue soluzioni dei workshop.
Chi ha scritto questo codice
“Ho scritto io il codice degli esercizi freeCodeCamp mostrato nelle pagine delle competenze.”
Vedi la prova
Affermazione
Ho scritto io il codice degli esercizi freeCodeCamp mostrato nelle pagine delle competenze.
Dichiarato da Danilo
Prove
- Sorgente del convertitore di maiuscole/minuscole: le quattro funzioni (build-a-case-converter/case_converter/index.js, righe 1–20) · manual · verificato il 2 ottobre 2026Dal commit a3d68af (26 set 2026) di zurukzuruk1 nel repository back-end-development-and-apis. Copiato testualmente il 02/10/2026 (fine riga normalizzati).
- Test del convertitore di maiuscole/minuscole: quattro controlli assert.strictEqual (build-a-case-converter/case_converter/index.test.js, righe 1–18) · manual · verificato il 2 ottobre 2026Dal commit a3d68af (26 set 2026) di zurukzuruk1 nel repository back-end-development-and-apis. Copiato testualmente il 02/10/2026 (fine riga normalizzati).
- Sorgente del controllo dei numeri primi: isPrime (build-a-prime-number-checker-module/index.js, righe 1–11) · manual · verificato il 2 ottobre 2026Dal commit a3d68af (26 set 2026) di zurukzuruk1 nel repository back-end-development-and-apis. Copiato testualmente il 02/10/2026 (fine riga normalizzati).
- Sorgente delle route protette con JWT: registrazione e login con bcrypt e JWT (build-jwt-protected-routes/routes/auth.js, righe 11–52) · manual · verificato il 2 ottobre 2026Dal commit a3d68af (26 set 2026) di zurukzuruk1 nel repository back-end-development-and-apis. Copiato testualmente il 02/10/2026 (fine riga normalizzati).
- Sorgente della Bank API: la route di trasferimento e i suoi controlli (build-a-bank-api/server.js, righe 30–71) · manual · verificato il 2 ottobre 2026Dal commit a3d68af (26 set 2026) di zurukzuruk1 nel repository back-end-development-and-apis. Copiato testualmente il 02/10/2026 (fine riga normalizzati).
- Database dei corpi celesti: l’intero file SQL (universe.sql, righe 1–464) · manual · verificato il 2 ottobre 2026Dal commit c2b1392 (18 set 2026) di zurukzuruk1 nel repository celestial-bodies-database. Copiato per intero il 02/10/2026 (fine riga normalizzati).
- Agenda appuntamenti per un salone: l’intero file SQL (salon.sql, righe 1–267) · manual · verificato il 2 ottobre 2026Dal commit 5c04648 (25 set 2026) di zurukzuruk1 nel repository salon-appointment-scheduler. Copiato per intero il 02/10/2026 (fine riga normalizzati).
- Agenda appuntamenti per un salone: le righe di query dello script (salon.sh, righe 14–57) · manual · verificato il 2 ottobre 2026Dal commit 5c04648 (25 set 2026) di zurukzuruk1 nel repository salon-appointment-scheduler. Copiato testualmente il 02/10/2026 (fine riga normalizzati).
Risultato
Il codice è copiato testualmente da repository pubblici, dove i commit sono stati fatti dall’account GitHub di Danilo (zurukzuruk1). Che l’abbia scritto lui stesso è una sua dichiarazione del 2 ott 2026.
Provalo
Ogni riquadro esegue il file dell’esercizio stesso: il testo mostrato nella vista Codice, controllato rispetto al suo sha256, viene eseguito qui con un piccolo shim module / require.
Convertitore di maiuscole/minuscole
Livello di prova: Prova esistente · eseguito dal vivo
Le quattro funzioni esportate da build-a-case-converter/case_converter/index.js.
Controllo dei numeri primi
Livello di prova: Prova esistente · eseguito dal vivo
La funzione isPrime esportata da build-a-prime-number-checker-module/index.js.
Validatore delle affermazioni
Livello di prova: Dimostrazione interattiva · Costruito per questo CV
Non è un esercizio: è il validatore che controlla ogni affermazione di questo sito. Ogni affermazione ha bisogno di ID, categoria e stato validi e solo di ID di prove esistenti, e “verified” ha bisogno di prove verificate; qualsiasi errore ferma la build. Prova a infrangere una regola.
Codice
Estratti testuali dei file degli esercizi, con il loro percorso e i numeri di riga nel repository. Ognuno viene controllato rispetto allo sha256 registrato con la sua affermazione quando il sito viene generato.
function getUpperCase(str) {
return str.toUpperCase();
}
function getLowerCase(str) {
return str.toLowerCase();
}
function getSentenceCase(str) {
const lowerStr = getLowerCase(str);
return lowerStr.charAt(0).toUpperCase() + lowerStr.slice(1);
}
function getProperCase(str) {
const properCaseArr = str.split(" ").map((word) => getSentenceCase(word));
return properCaseArr.join(" ");
}
module.exports = {
getProperCase,
getLowerCase,
getUpperCase,
getSentenceCase,
};
Livello di prova: Prova esistente
function isPrime(n) {
if (!Number.isInteger(n) || n < 2) return false;
if (n < 4) return true;
if (n % 2 === 0 || n % 3 === 0) return false;
for (let i = 5; i * i <= n; i += 6) {
if (n % i === 0 || n % (i + 2) === 0) return false;
}
return true;
}
module.exports = { isPrime };
Livello di prova: Prova esistente
router.post("/register", async (req, res) => {
const { email, password } = req.body;
if (!email || !password) {
return res.status(400).json({ message: "Email and password are required" });
}
if (findByEmail(email)) {
return res.status(409).json({ message: "Email already in use" });
}
const passwordHash = await bcrypt.hash(password, 10);
const users = readUsers();
const newUser = {
id: randomUUID(),
email,
passwordHash,
role: "user",
};
users.push(newUser);
writeUsers(users);
const token = signToken({
id: newUser.id,
email: newUser.email,
role: newUser.role,
});
res.status(201).json({ message: "User registered successfully", token });
});
router.post("/login", async (req, res) => {
const { email, password } = req.body;
if (!email || !password) {
return res.status(400).json({ message: "Email and password are required" });
}
const user = findByEmail(email);
if (!user) {
return res.status(401).json({ message: "Invalid credentials" });
}
const match = await bcrypt.compare(password, user.passwordHash);
if (!match) {
return res.status(401).json({ message: "Invalid credentials" });
}
const token = signToken({ id: user.id, email: user.email, role: user.role });
res.json({ message: "Login successful", token });
});
Livello di prova: Prova esistente
app.post("/transfer", async (req, res) => {
const { fromId, toId, amount } = req.body;
if (!fromId || !toId || !amount) {
const err = new Error("Missing required fields: fromId, toId, amount");
err.status = 400;
throw err;
}
if (amount <= 0) {
const err = new Error("Transfer amount must be positive");
err.status = 400;
throw err;
}
const accounts = await getAccounts();
const sender = accounts.find((a) => a.id === fromId);
if (!sender) {
const err = new Error("Sender account not found");
err.status = 404;
throw err;
}
const recipient = accounts.find((a) => a.id === toId);
if (!recipient) {
const err = new Error("Recipient account not found");
err.status = 404;
throw err;
}
if (sender.balance < amount) {
const err = new Error("Insufficient funds");
err.status = 409;
throw err;
}
sender.balance -= amount;
recipient.balance += amount;
await saveAccounts(accounts);
res.json({
message: "Transfer successful",
senderName: sender.owner,
recipientName: recipient.owner,
amountTransferred: amount,
senderNewBalance: sender.balance,
recipientNewBalance: recipient.balance,
});
});
Livello di prova: Prova esistente
Test
Il file di test del convertitore: 4 controlli assert.strictEqual. Vengono eseguiti qui su index.js, con un assert minimo che registra ogni risultato.
Risultati dei test
Livello di prova: Prova esistente · eseguito dal vivo
- ✓ superato
caseConverter.getUpperCase("hello free Code Camp!")riga 3 · atteso"HELLO FREE CODE CAMP!"· ottenuto"HELLO FREE CODE CAMP!" - ✓ superato
caseConverter.getLowerCase("hello free Code Camp!")riga 7 · atteso"hello free code camp!"· ottenuto"hello free code camp!" - ✓ superato
caseConverter.getProperCase("hello free Code Camp!")riga 11 · atteso"Hello Free Code Camp!"· ottenuto"Hello Free Code Camp!" - ✓ superato
caseConverter.getSentenceCase("hello free Code Camp!")riga 15 · atteso"Hello free code camp!"· ottenuto"Hello free code camp!"
Calcolato in fase di build eseguendo build-a-case-converter/case_converter/index.test.js in Node.
const assert = require("node:assert/strict");
const caseConverter = require("./index");
assert.strictEqual(
caseConverter.getUpperCase("hello free Code Camp!"),
"HELLO FREE CODE CAMP!",
);
assert.strictEqual(
caseConverter.getLowerCase("hello free Code Camp!"),
"hello free code camp!",
);
assert.strictEqual(
caseConverter.getProperCase("hello free Code Camp!"),
"Hello Free Code Camp!",
);
assert.strictEqual(
caseConverter.getSentenceCase("hello free Code Camp!"),
"Hello free code camp!",
);
Livello di prova: Prova esistente
Certificati
Le due certificazioni freeCodeCamp dietro questa pagina, ognuna sulla sua pagina pubblica del certificato.
JavaScript
Livello di prova: Prova esistente
Backend Development and APIs
Livello di prova: Prova esistente
Apri il certificato freeCodeCamp: Backend Development and APIs