Invatare Atomica

Expozitia sau concertul virtual al clasei

Proiect de clasa — un singur site, o pagina-scena pentru fiecare elev, construit pe roluri

Progres lectie:
0%
🎯

Obiectivul lectiei

La finalul acestui proiect, clasa are un singur site comun — o expozitie sau un concert virtual — in care fiecare elev are propria pagina-scena cu lucrari, inregistrari audio sau video si o scurta biografie artistica. Nu lucrati 24 de site-uri separate, ci un singur site, construit pe roluri (structura, design, continut, publicare) si tinut la un loc de o conventie de denumire a fisierelor pe care o respecta toata lumea. Aceasta este exact genul de lucru in echipa, cu reguli comune si termen de livrare, cerut si la proba de competente digitale de la bacalaureat.

Dupa aceasta lectie vei putea:

  • Sa explici de ce un proiect de clasa foloseste un singur site cu pagini multiple, nu site-uri separate pentru fiecare elev
  • Sa aplici o conventie de denumire a fisierelor si folderelor (fara diacritice, fara spatii, litere mici, cratima) pe care o respecta toata clasa
  • Sa descrii cele patru roluri dintr-o echipa de proiect web — structura, design, continut, publicare — si ce face fiecare
  • Sa scrii, corect si complet, codul HTML pentru pagina-scena a unui elev: imagini, inregistrare audio sau video, biografie
  • Sa aplici un fisier CSS comun, care da aceeasi identitate vizuala tuturor paginilor fara sa uniformizeze continutul fiecaruia
  • Sa pregatesti fotografiile pentru web (dimensiune redusa) si sa publici site-ul complet, gratuit, verificand ca toate legaturile functioneaza

Incearca singur!

Provocare — inainte sa citesti:

Imaginati-va o expozitie reala, intr-o sala mare: fiecare elev are propriul perete sau propria vitrina cu lucrari, dar toata lumea intra pe aceeasi usa, vede aceeasi harta a salii la intrare si circula pe acelasi hol central. Acum transformati asta intr-un site: cum organizati o "usa" digitala unica (o pagina de start), astfel incat orice vizitator sa gaseasca imediat pagina oricarui coleg, fara sa se piarda si fara ca doi elevi sa aiba din greseala acelasi nume de fisier? Notati mai jos, in cuvintele voastre, cum ati imparti munca intre 20-25 de colegi ca sa nu apara haos.

💡 Ai nevoie de un indiciu?

Ganditi-va la o orchestra: fiecare instrumentist canta partitura lui, dar toti respecta acelasi tempo dat de dirijor si aceeasi partitura de ansamblu, altfel rezultatul e zgomot, nu muzica. Un site de clasa are nevoie de acelasi lucru — o regula comuna (conventia de denumire a fisierelor) si un "dirijor" (rolul de publicare) care pune totul la un loc.

Subiectul lectiei de azi raspunde exact la aceasta intrebare!

1

Un singur site, mai multe scene

Un site multi-pagina este un grup de fisiere HTML legate intre ele prin legaturi (link-uri), care impreuna formeaza un singur site, cu o singura adresa web. In proiectul de expozitie/concert virtual, site-ul are: o pagina de start (index.html) cu lista tuturor colegilor, si cate o pagina-scena pentru fiecare elev, cu lucrarile, inregistrarile si biografia lui.
Analogie din domeniul vostru:

Gandeste-te la un program de concert tiparit: pe prima pagina e lista tuturor interpretilor din seara aceea, cu numarul paginii unde incepe fiecare. Pagina de start a site-ului este exact acest program — un singur loc din care vizitatorul alege pe cine vrea sa "asculte" sau sa "vada" mai departe.

Structura de foldere a site-ului comun:

expozitie-clasa-xii/
  index.html — pagina de start, cu lista tuturor elevilor
  style.css — fisierul de stil comun, folosit de toate paginile
  elevi/ — un fisier .html pentru fiecare elev
    maria-popescu.html
    andrei-ionescu.html
  media/ — un subfolder pentru fiecare elev, cu pozele si inregistrarea lui
    maria-popescu/lucrare1.jpg
    maria-popescu/recital.mp3 — inregistrarea audio, in acelasi subfolder

2

Conventia de denumire — regula pe care o respecta toata clasa

O conventie de denumire este o regula simpla, stabilita inainte de a incepe lucrul, pe care o respecta fiecare membru al echipei, astfel incat toate fisierele sa se lege corect intre ele, indiferent cine le-a creat. Pentru un site publicat pe internet, regula sigura este: numai litere mici, fara diacritice (a, i, s, t fara semne), fara spatii — cratima (-) in loc de spatiu.
Conventia aplicata numelor de elevi:

"Maria Popescu" → maria-popescu.html
"Andrei-Stefan Ionescu" → andrei-stefan-ionescu.html
"Ana-Maria Ionescu" → ana-maria-ionescu.html
Fotografiile fiecarui elev merg in propriul subfolder din media/, numit la fel: media/maria-popescu/, cu fisiere numite simplu, in ordine: lucrare1.jpg, lucrare2.jpg, profil.jpg. Daca elevul are o inregistrare, fisierul audio merge in acelasi subfolder, numit la fel de simplu: media/maria-popescu/recital.mp3.

De ce conteaza mai ales la un proiect in echipa:

Cand 20-25 de persoane lucreaza in paralel, fiecare la propria pagina, singurul lucru care tine site-ul unitar este conventia respectata de toti. Daca fiecare denumeste fisierele dupa gustul lui (unii cu spatii, unii cu diacritice, unii cu litere mari), pagina de start (index.html) va avea legaturi care functioneaza doar pe calculatorul pe care au fost testate, si se rup la publicare.

3

Rolurile din echipa de proiect

Un site cu 20-25 de pagini nu se construieste bine daca fiecare face tot singur, dezordonat. Se lucreaza pe patru roluri, impartite intre grupuri mici din clasa; fiecare rol are o responsabilitate clara si preda ceva concret celorlalte roluri.
Rolul de STRUCTURA

Construieste scheletul site-ului: folderele (elevi/, media/), pagina de start index.html cu lista tuturor colegilor si legaturile catre fiecare pagina-scena. Livreaza celorlalti un "sablon" gol de pagina-elev, pe care fiecare il copiaza si il completeaza.

Cod complet — index.html (pagina de start, livrata de rolul de STRUCTURA)
<!DOCTYPE html>
<html lang="ro">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Expozitia Virtuala - Clasa a XII-a A</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <header class="scena-elev">
        <h1>Expozitia Virtuala - Clasa a XII-a A</h1>
        <p>Alegeti un coleg pentru a vedea pagina lui</p>
    </header>

    <ul class="lista-elevi">
        <li><a href="elevi/maria-popescu.html">Maria Popescu</a></li>
        <li><a href="elevi/andrei-ionescu.html">Andrei Ionescu</a></li>
    </ul>
</body>
</html>

Observati diferenta fata de calea din pagina-elev: aici style.css si elevi/maria-popescu.html se scriu fara ../, pentru ca index.html este chiar in folderul principal — nu trebuie sa "urce" niciun nivel. Fiecare rand nou din <ul> este un elev in plus; rolul de STRUCTURA adauga cate o linie pentru fiecare din cei 20-25 de colegi, pe masura ce paginile lor sunt gata.

Rolul de DESIGN

Scrie fisierul style.css comun: culorile, fontul, spatierea, aspectul galeriei de imagini. Un singur fisier de stil pentru tot site-ul inseamna ca toate paginile arata unitar, chiar daca fiecare elev pune continut diferit.

Rolul de CONTINUT

Aici lucreaza, de fapt, fiecare elev pentru propria pagina: alege 3-5 fotografii ale lucrarilor, scrie 3-5 randuri de biografie artistica si adauga, daca are, o inregistrare — un fisier audio (.mp3, pus chiar in pagina cu eticheta <audio>) pentru muzicieni, sau o inregistrare video incarcata pe YouTube si incorporata cu <iframe>, pentru celelalte specializari. Respecta conventia de denumire stabilita la Atomul 2.

Rolul de PUBLICARE

Aduna toate paginile-elev intr-un singur folder final, verifica pe rand fiecare legatura (nu exista pagini "moarte", care duc la eroare), si urca site-ul complet pe hosting-ul gratuit. Este ultimul rol care lucreaza, pentru ca are nevoie de tot ce au produs ceilalti trei.

4

HTML real pentru pagina-scena a unui elev

Fiecare pagina-scena este un fisier HTML complet, cu o legatura inapoi la pagina de start, un antet cu numele si domeniul artistic al elevului, o galerie de imagini, optional o inregistrare audio sau video, si o scurta biografie. Pentru inregistrari audio (ex. un recital de pian), se foloseste eticheta <audio> cu fisierul pus direct in media/. Pentru inregistrari video se foloseste un <iframe> — o "fereastra" care afiseaza in interiorul paginii voastre un alt site (aici, un video incarcat pe YouTube), fara sa parasiti pagina.
Cod complet — elevi/maria-popescu.html
<!DOCTYPE html>
<html lang="ro">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Maria Popescu - Expozitia Virtuala</title>
    <link rel="stylesheet" href="../style.css">
</head>
<body>
    <a href="../index.html" class="inapoi">&larr; Toata clasa</a>

    <header class="scena-elev">
        <h1>Maria Popescu</h1>
        <p>Pian, clasa a XII-a A</p>
    </header>

    <section class="galerie">
        <img src="../media/maria-popescu/lucrare1.jpg" alt="Recital de pian, martie 2026">
        <img src="../media/maria-popescu/lucrare2.jpg" alt="Portret la pian">
    </section>

    <section class="inregistrare">
        <audio controls src="../media/maria-popescu/recital.mp3"></audio>
    </section>

    <section class="biografie">
        <p>Studiez pianul de 8 ani. Am cantat la 3 concerte scolare si
        m-am pregatit anul acesta pentru proba practica de la bacalaureat.</p>
    </section>
</body>
</html>

Observati calea catre stil: ../style.css. Semnul ../ inseamna "un folder mai sus" — pentru ca pagina se afla in elevi/, iar style.css sta un nivel deasupra, in folderul principal al site-ului. Aceeasi logica se aplica la imagini si la inregistrare: ../media/maria-popescu/lucrare1.jpg, ../media/maria-popescu/recital.mp3. Fisierul audio se pune in acelasi subfolder ca fotografiile lui, cu numele simplu, tot conform conventiei de la Atomul 2.

Varianta cu inregistrare video (in loc de audio)

Un elev fara inregistrare audio, dar cu un video (ex. o repetitie filmata, sau un timelapse la o lucrare de pictura), inlocuieste sectiunea .inregistrare astfel:

<section class="inregistrare">
    <iframe
        src="https://www.youtube.com/embed/ID_VIDEO"
        title="Inregistrare video - Maria Popescu"
        allowfullscreen></iframe>
</section>

Pasii, in ordine: (1) incarcati inregistrarea pe YouTube — daca nu vreti sa fie publica pe canalul vostru, alegeti optiunea "Nelistat" la vizibilitate; (2) pe pagina video, apasati Share → Embed si copiati doar partea dintre ghilimele de dupa src=, sau luati direct sirul de dupa v= din adresa youtube.com/watch?v=ID_VIDEO; (3) inlocuiti ID_VIDEO din cod cu acel sir. Observati ca width si height nu mai apar direct pe <iframe> — dimensiunea vine din style.css comun (vezi Atomul 5), iar atributul title este obligatoriu pentru accesibilitate (descrie continutul ferestrei pentru cine foloseste un cititor de ecran).

✗ Greseala tipica
Scrierea caii catre stil sau imagini ca si cum pagina ar fi in folderul principal (href="style.css" in loc de href="../style.css"). O recunosti imediat: pagina se deschide, textul si imaginile apar, dar site-ul e "alb-negru" — fara culorile si fontul din style.css. Se repara adaugand ../ in fata numelui fisierului, cate un ../ pentru fiecare folder in care trebuie sa "urci".
5

CSS comun — aceeasi identitate vizuala pentru toata clasa

Un singur fisier style.css, folosit de toate paginile, este ceea ce face ca site-ul sa arate ca un singur proiect, nu ca 25 de pagini facute la intamplare. Rolul de design il scrie o singura data; toate paginile-elev il incarca prin aceeasi legatura <link rel="stylesheet" href="../style.css">.
Cod complet — style.css (versiune scurta si corecta)
:root {
    --culoare-principala: #2c1810;
    --culoare-accent: #d4af37;
    --culoare-fundal: #faf7f2;
    --culoare-text: #2c1810;
}

body {
    font-family: Georgia, serif;
    background: var(--culoare-fundal);
    color: var(--culoare-text);
    margin: 0;
    padding: 1rem;
}

.scena-elev h1 {
    color: var(--culoare-principala);
    border-bottom: 3px solid var(--culoare-accent);
    padding-bottom: 0.5rem;
}

.galerie {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
    gap: 1rem;
    margin: 1rem 0;
}

.galerie img {
    width: 100%;
    border-radius: 8px;
}

.inregistrare audio {
    width: 100%;
}

.inregistrare iframe {
    width: 100%;
    height: 200px;
    border: 0;
}

Fiecare pagina-elev foloseste aceleasi clase (scena-elev, galerie, inregistrare) fara sa le redefineasca — de aceea toate paginile pastreaza aceleasi culori si acelasi aspect de galerie, indiferent cine le-a scris continutul. Observati ca dimensiunea inregistrarii (audio sau video) se stabileste aici, o singura data, cu width: 100% in loc de un atribut width="100%" scris in fiecare pagina — in HTML5, atributul width al unui <iframe> trebuie sa fie un numar de pixeli, nu un procent; procentul se scrie doar in CSS.

Ce ramane liber pentru fiecare elev:

Stilul comun fixeaza culorile, fontul si aspectul galeriei. Textul biografiei, numarul si continutul fotografiilor, alegerea unei inregistrari audio sau video raman complet la latitudinea fiecarui elev — CSS-ul comun da unitate vizuala, nu uniformizeaza continutul artistic al nimanui.

6

Pregatirea fotografiilor si publicarea gratuita

O fotografie facuta direct cu telefonul are, de obicei, 4-6 MB. Incarcata asa cum e, in numar mare (mai multi elevi, mai multe poze fiecare), face site-ul greu si lent la deschidere. Solutia este sa reduceti dimensiunea fotografiilor inainte de a le pune in media/, folosind un editor de imagini. La calculul spatiului total, retineti conversia standard: 1 MB = 1024 KB (ex. 76.800 KB ÷ 1024 = 75 MB).
Reducerea unei fotografii in GIMP (gratuit)

1. Deschideti fotografia in GIMP (File → Open).
2. Reduceti dimensiunea: Image → Scale Image, setati latimea la 1200 pixeli (inaltimea se ajusteaza automat) si apasati Scale.
3. Exportati: File → Export As, alegeti numele fisierului cu extensia .jpg (ex. lucrare1.jpg), apasati Export.
4. In fereastra de calitate JPEG, alegeti o valoare de aproximativ 80 (echilibru bun intre claritate si dimensiune) si apasati Export din nou.

In editoare platite (ex. Adobe Photoshop) pasii sunt echivalenti: Image → Image Size pentru redimensionare, apoi File → Export As cu calitate JPEG controlata — acelasi rezultat, alta unealta.

Publicarea gratuita a site-ului complet

Rolul de publicare aduna folderul final (index.html, style.css, elevi/, media/) si il publica gratuit, fara card bancar:
1. Intra pe app.netlify.com si creeaza cont (cu Google sau email).
2. Apasa "Add new site" → "Deploy manually".
3. Trage intregul folder expozitie-clasa-xii in zona de incarcare.
4. Dupa cateva zeci de secunde primesti un link de forma ceva-random.netlify.app — site-ul e deja live.
5. Din "Domain settings", schimba adresa intr-una cu sens, ex. expozitie-clasa-xii-a.netlify.app.

✗ Greseala tipica
Publicarea site-ului fara sa fi testat mai intai fiecare legatura, pe calculator. O recunoasteti dupa publicare cand un vizitator apasa pe numele unui coleg si primeste eroarea "404 — Page not found". Testarea locala prinde majoritatea legaturilor rupte, dar nu si diferentele de litere mari/mici — pentru ca Windows nu le distinge (un link catre elevi/Maria-Popescu.html se deschide perfect local chiar daca fisierul se numeste maria-popescu.html), in timp ce serverul de publicare (Netlify, pe Linux) le distinge si da eroare 404. De aceea conventia de la Atomul 2 — numai litere mici, in numele fisierului si in orice legatura catre el — este obligatorie, nu doar o recomandare de stil.
7

Recapitulare si conexiuni

Un proiect de clasa reuseste cand toata lumea respecta aceleasi reguli: un singur site, o conventie de denumire pentru fisiere, roluri clare si un fisier de stil comun. Rezultatul nu e o colectie de pagini razlete, ci un singur produs — la fel cum un concert de clasa nu e 24 de solisti izolati, ci un ansamblu care canta dupa aceeasi partitura.
Fluxul complet, de la inceput la publicare:

Structura construieste scheletul (index.html + folderele)
  ↓ in paralel cu
Design care scrie style.css comun
  ↓ in timp ce
Continut — fiecare elev — isi completeaza pagina, respectand conventia de denumire
  ↓ dupa reducerea fotografiilor in GIMP
Publicare verifica toate legaturile si urca site-ul complet pe Netlify

Conexiune cu proiectele vecine:

Ati mai construit un site individual la P1: Portofoliu personal — acolo fiecare elev avea propriul site. Aici, acelasi tip de pagina-elev devine o "scena" intr-un site comun, mai mare. In P3: Album absolventi veti relua aceeasi conventie de denumire si aceeasi logica de organizare, de data aceasta pentru un album-amintire al intregii promotii.

De retinut pentru lucrul in echipa:

Un singur site, o singura pagina de start — nu site-uri separate.
Conventie de denumire: litere mici, fara diacritice, fara spatii, cratima intre cuvinte.
Patru roluri: structura, design, continut, publicare.
Cai relative corecte: ../ inseamna "un folder mai sus".
Fotografii reduse inainte de incarcare (GIMP: Scale Image + Export As, calitate ~80).
Testati toate legaturile local, inainte de publicare pe Netlify.

Exercitii practice

Exercitiul 1 (Nivel minim) — Aplica conventia de denumire

Iata numele a 5 colegi din clasa, asa cum le-au scris ei intr-un mesaj: "Radu Stefanescu", "Ioana-Maria Popa", "Bogdan VLAD", "Ana Ciobanu", "Stefan-Andrei Munteanu". Rescrie fiecare nume ca fisier HTML corect, respectand conventia de denumire de la Atomul 2 (litere mici, fara diacritice, fara spatii, cratima intre cuvinte, extensia .html).

Vezi rezolvarea

Aplic conventia de la Atomul 2: litere mici, fara diacritice, spatiul devine cratima, extensia .html.

  1. "Radu Stefanescu" → radu-stefanescu.html
  2. "Ioana-Maria Popa" → ioana-maria-popa.html
  3. "Bogdan VLAD" → bogdan-vlad.html (literele mari devin mici)
  4. "Ana Ciobanu" → ana-ciobanu.html
  5. "Stefan-Andrei Munteanu" → stefan-andrei-munteanu.html (cratima dintre prenume ramane, se adauga alta cratima intre prenume si numele de familie)

Toate cele 5 fisiere merg in folderul elevi/, langa celelalte pagini-scena ale clasei.

Exercitiul 2 (Nivel standard) — Corecteaza caile relative

Pagina elevi/bogdan-vlad.html a unui coleg contine aceste doua linii, care nu functioneaza dupa publicare: <link rel="stylesheet" href="style.css"> si <img src="media/bogdan-vlad/lucrare1.jpg">. Stiind ca style.css si folderul media/ se afla in folderul principal al site-ului (un nivel deasupra folderului elevi/), scrie forma corecta a celor doua linii si explica, intr-o propozitie, de ce cele initiale nu functionau.

Vezi rezolvarea

Pagina elevi/bogdan-vlad.html este cu un nivel mai jos decat style.css si media/, asa ca fiecare cale trebuie sa "urce" un folder cu ../:

  1. <link rel="stylesheet" href="../style.css">
  2. <img src="../media/bogdan-vlad/lucrare1.jpg">

De ce nu functionau: o cale relativa este relativa la fisierul care o foloseste. Scrise fara ../, browserul cauta style.css si folderul media/ chiar in elevi/, unde nu exista, asa ca pagina se incarca fara stil ("alb-negru") si fara imaginea din galerie.

Exercitiul 3 (Nivel performanta) — Planifica rolurile si verifica volumul de date

Clasa are 22 de elevi si 8 zile pana la termenul de predare. Trebuie stabilite echipele pentru cele 4 roluri (structura, design, continut, publicare), stiind ca fiecare elev lucreaza obligatoriu la rolul de continut (propria pagina), iar celelalte 3 roluri sunt aditionale, facute de 2-3 elevi voluntari fiecare, in paralel cu munca lor de continut. Propune o repartizare pe zile (ce se face in zilele 1-2, 3-6, 7-8) si calculeaza: daca fiecare elev foloseste 3 fotografii reduse la 750 KB fiecare, cate MB va ocupa in total galeria de imagini a intregii clase? Arata calculul complet.

Vezi rezolvarea

Schita, nu solutie completa — stabiliti voi cine intra in fiecare echipa:

  1. Zilele 1-2: structura creeaza scheletul (index.html, folderele elevi/ si media/, un sablon de pagina-elev); design stabileste paleta si un prim style.css; ceilalti aduna fotografiile.
  2. Zilele 3-6: fiecare elev completeaza pagina de continut dupa sablon, respectand conventia de denumire; fotografiile se reduc in GIMP (Scale Image la 1200 px, Export cu calitate ~80) inainte de a intra in media/.
  3. Zilele 7-8: publicare aduna toate paginile, testeaza fiecare legatura (atentie la litere mari/mici) si urca site-ul pe Netlify.

Capcana: cine incepe publicarea prea devreme reincarca tot folderul cand mai apar pagini.

Calcul: 22 elevi x 3 poze = 66 fotografii; 66 x 750 KB = 49.500 KB; 49.500 / 1024 ≈ 48,3 MB in total.

Se evalueaza: repartizare realista pe cele 3 intervale, rolurile aditionale acoperite fara sa fie neglijat continutul propriu, si calculul corect cu conversia 1 MB = 1024 KB.

Ce ai invatat astazi

  • Un proiect de clasa foloseste un singur site multi-pagina, cu o pagina de start si o pagina-scena per elev, nu site-uri separate
  • Conventia de denumire: litere mici, fara diacritice, fara spatii — cratima intre cuvinte (ex. maria-popescu.html)
  • Patru roluri: structura (scheletul si navigarea), design (style.css comun), continut (pagina fiecarui elev), publicare (verificare + urcare online)
  • Caile relative folosesc ../ pentru "un folder mai sus" — greseala tipica: cale scrisa ca si cum toate fisierele ar fi in acelasi folder
  • Variabilele CSS in :root (ex. --culoare-accent) permit schimbarea unei culori o singura data pentru tot site-ul
  • Fotografiile de telefon (4-6 MB) se reduc inainte de incarcare, in GIMP: Image → Scale Image, apoi File → Export As cu calitate ~80
  • Inainte de publicare, se testeaza local fiecare legatura; publicarea gratuita se face pe Netlify (Deploy manually)

Urmatoarea lectie

Continua cu P3: Album absolventi — un nou proiect de clasa, cu aceeasi logica de organizare pe roluri si conventie de denumire, aplicata unui album-amintire al intregii promotii.

Continua →