Exerciศ›iu Seminar:

Portofoliu personal cu DOM Manipulation ศ™i GitHub

Obiectiv general

Studenศ›ii vor crea pagini personale dinamice folosind HTML, CSS, JavaScript ศ™i GitHub, consolidรขnd cunoศ™tinศ›ele de manipulare DOM ศ™i colaborare prin Git.

Structura proiectului

web-portfolio-2025/
โ”‚
โ”œโ”€โ”€ index.html              # Pagina principalฤƒ (catalog studenศ›i)
โ”œโ”€โ”€ main.css                # Stiluri pentru pagina principalฤƒ
โ”œโ”€โ”€ main.js                 # Script pentru pagina principalฤƒ
โ”œโ”€โ”€ students.json           # JSON master cu lista studenศ›ilor
โ”‚
โ””โ”€โ”€ students/               # Folder pentru paginile individuale
    โ”œโ”€โ”€ popescu-ion/
    โ”‚   โ”œโ”€โ”€ index.html
    โ”‚   โ”œโ”€โ”€ styles.css
    โ”‚   โ””โ”€โ”€ script.js
    โ”‚
    โ”œโ”€โ”€ ionescu-maria/
    โ”‚   โ”œโ”€โ”€ index.html
    โ”‚   โ”œโ”€โ”€ styles.css
    โ”‚   โ””โ”€โ”€ script.js
    โ”‚
    โ””โ”€โ”€ ... (alte foldere studenti)

Cerinศ›e pentru fiecare student

1. Crearea paginii personale

Fiecare student va crea un folder รฎn students/ cu structura:

  • Nume folder: prenume-nume (lowercase, cu cratimฤƒ, fฤƒrฤƒ diacritice)

    • Exemplu: popescu-ion, ionescu-maria

2. Structura JSON personalฤƒ (Hardcoded รฎn script.js)

Cerinศ›e JSON:

  • Minimum 3 niveluri de nested objects (exemplu: studentData.personalInfo.firstName)

  • Cel puศ›in 2 arrays cu obiecte (exemplu: skills, projects)

  • Proprietatea avatar trebuie sฤƒ foloseascฤƒ un generator automat:

    • UI Avatars: https://ui-avatars.com/api/?name=Prenume+Nume&size=200

    • DiceBear: https://api.dicebear.com/7.x/initials/svg?seed=PrenumeNume

    • RoboHash: https://robohash.org/PrenumeNume.png?size=200x200

3. Fiศ™ierul index.html (template minimal)

Cerinศ›ฤƒ importantฤƒ: Tot conศ›inutul paginii trebuie generat dinamic prin JavaScript!

4. Fiศ™ierul script.js (Manipulare DOM)

Cerinศ›e obligatorii:

Cerinศ›e tehnice pentru script.js:

  • Minimum 5 tipuri diferite de elemente HTML create dinamic

  • Folosirea createElement, appendChild, textContent, innerHTML

  • Setarea className sau classList pentru stilizare

  • Iterare prin arrays cu forEach sau for...of

  • Acces la proprietฤƒศ›i nested din JSON (ex: studentData.personalInfo.firstName)

  • Cel puศ›in 1 event listener (exemplu: click pe proiect, hover pe skill)

5. Fiศ™ierul styles.css

Cerinศ›e obligatorii:

  • Layout responsive (mobile-first cu media queries)

  • Stilizare pentru toate clasele folosite รฎn JavaScript

  • Minimum 3 culori coordonate (folosiศ›i CSS variables)

  • Avatar rotund cu border-radius: 50%

Exemplu de structurฤƒ:

Cerinศ›e pentru Pagina Principalฤƒ (catalog)

Responsabil: Un student voluntar

1. Fiศ™ierul students.json (root), actualizat de studentul voluntar la fiecare pull request

2. Fiศ™ierul index.html (root)

3. Fiศ™ierul main.js (root)

Workflow GitHub

Pasul 1: Iniศ›ializare Repo (Student voluntar)

Pasul 2: Fork ศ™i Clone (fiecare student)

  1. Fork repo-ul principal pe contul propriu GitHub

  2. Clone fork-ul local:

Pasul 3: Creare Branch ศ™i dezvoltare (student)

Pasul 4: Pull Request (student)

  1. Acceseazฤƒ fork-ul pe GitHub

  2. Click pe "Compare & pull request"

  3. Titlu: Add portfolio - Prenume Nume

  4. Descriere:

  5. Submit pull request

Pasul 5: Review ศ™i Merge (Voluntar)

Git CheatSheet

Last updated

Was this helpful?