Cum să construiești un site web profesional în 2026 — de la strategie la lansare
Să construiești un site web în 2026 nu mai este la fel ca în 2020. Google a schimbat regulile. Utilizatorii sunt nerăbdători. Iar concurenții tăi au deja site-uri care se încarcă în mai puțin de o secundă.
Acest articol nu este despre teorie. Este despre cum am construit efectiv kodemagisk.no — de la prima decizie tehnologică până în ziua în care am trimis sitemap-ul la Google Search Console. Fiecare decizie, fiecare instrument și fiecare greșeală pe care am evitat-o pe parcurs.
Dacă plănuiești un site web nou pentru afacerea ta — sau te gândești să-l îmbunătățești pe cel pe care îl ai — acesta este ghidul care îți arată ce contează cu adevărat în 2026.
1. Înainte de a scrie o singură linie de cod: strategie și planificare
Cea mai frecventă greșeală pe care o vedem este ca afacerile să înceapă cu designul. „Vrem un site frumos" nu este o strategie. Înainte de a deschide vreun instrument de design, ai nevoie de răspunsuri la trei întrebări:
Pentru cine este site-ul? Nu „pentru toți". Cine este acea persoană care te va găsi pe Google, va înțelege ce oferi și te va contacta? Pentru kodemagisk.no răspunsul era clar: antreprenori și afaceri mici din Norvegia care au nevoie de primul lor site web profesional.
Ce trebuie să realizeze site-ul? Să genereze lead-uri? Să vândă produse? Să informeze? Site-ul nostru are un singur obiectiv: să determine vizitatorii să programeze o conversație fără obligații. Tot ce este pe pagină indică spre acea acțiune.
Ce piețe deservești? Operăm în Norvegia, dar avem clienți care vorbesc norvegiană, engleză, spaniolă și română. Asta însemna că aveam nevoie de suport multilingv din prima zi — nu ca o adăugare ulterioară.
Abia când ai aceste răspunsuri începe planificarea tehnică.
2. Alegerea tehnologiilor: De ce am ales Astro + Sanity CMS
Alegerea tehnologiei este decizia care afectează tot ce urmează. Alegi greșit framework-ul și plătești pentru asta ani de zile — cu performanță lentă, întreținere dificilă și reconstrucții costisitoare.
De ce Astro pentru frontend
Astro este construit pentru site-uri de conținut. Spre deosebire de framework-urile bazate pe React precum Next.js, Astro trimite zero JavaScript în browser dacă nu ceri explicit acest lucru. Rezultatul sunt site-uri web care se încarcă mai rapid decât aproape orice altceva de pe piață.
Pentru un site de afaceri precum kodemagisk.no — unde cea mai mare parte a conținutului este text, imagini și navigare — nu există niciun motiv să trimiți sute de kilobytes de JavaScript pe telefonul utilizatorului. Astro înțelege asta, și de aceea obținem constant 100/100 în PageSpeed Insights, atât pe desktop cât și pe mobil.
De ce Sanity CMS pentru conținut
Sanity este un sistem de management al conținutului norvegian dezvoltat în Oslo. Este headless, ceea ce înseamnă că conținutul tău este stocat separat de site — și poate fi folosit oriunde.
Pentru noi, Sanity a fost alegerea naturală din trei motive: este suficient de flexibil pentru a gestiona conținut în patru limbi, ne permite să construim experiențe de editare personalizate pentru fiecare secțiune a site-ului, și îi dă clientului posibilitatea de a actualiza conținutul singur fără să sune dezvoltatorul.
Fiecare domeniu de servicii, fiecare articol de blog și fiecare recenzie de client de pe kodemagisk.no se editează în Sanity Studio — cu câmpuri dedicate pentru titlu SEO, meta descriere și conținut în toate cele patru limbi.
Baza de date și hosting
Folosim MySQL ca bază de date, găzduită prin domene.no — un furnizor norvegian cu servere în Norvegia. Pentru un site de afaceri care deservește piața norvegiană, aceasta oferă latență mai mică decât furnizorii cloud internaționali, iar datele rămân în Europa în conformitate cu GDPR.
3. Securitate: Înainte de orice altceva
Securitatea nu este ceva ce adaugi după lansare. Este ceva ce configurezi înainte de a scrie un singur component.
Strategie Git cu trei straturi
Am configurat un repository pe GitHub cu o strategie de ramificare care protejează împotriva erorilor în producție:
main este producția. Este protejat — nimeni nu poate face push direct. Codul ajunge aici doar prin pull request-uri aprobate din develop.
develop este mediul de dezvoltare. Aici se adună toate feature-urile și corecțiile finalizate. Când develop este stabil și testat, se creează un pull request către main.
Branch-uri feature și fix sunt locul unde are loc programarea efectivă. Fiecare funcționalitate nouă sau corecție de bug primește propriul branch. Când este gata, se creează un pull request către develop. Dacă toate testele trec, se face merge.
Acest flux înseamnă că site-ul de producție nu conține niciodată cod nefinalizat. Când ceva se face merge în main, se face deploy automat — atât frontend cât și backend.
.gitignore și informații sensibile
Înainte de primul commit, am configurat .gitignore pentru a ne asigura că informațiile sensibile nu ajung niciodată în repository. Variabile de mediu, chei API, configurații de bază de date și fișiere de configurare locală — toate excluse din controlul versiunilor. Pare evident, dar vedem regulat afaceri care scurg chei API și parole prin repository-uri Git publice.
Securitatea serverului
În public_html am configurat .htaccess și php.ini pentru a securiza serverul:
Blocarea accesului direct la fișierele de configurare, dezactivarea listării directoarelor, activarea redirecționării HTTPS, headere HTTP securizate (X-Content-Type-Options, X-Frame-Options, Content-Security-Policy) și limitarea dimensiunii fișierelor pentru upload-uri.
Aceste măsuri nu costă nimic de implementat dar protejează împotriva celor mai comune vectori de atac.
4. CI/CD: Deploy automat în care poți avea încredere
Deploy-ul manual este un risc. Uiți un pas și ajungi cu un site în producție diferit de ce ai testat local.
Am configurat deploy automat pentru frontend și backend. Când codul se face merge în main, site-ul se construiește și se face deploy automat. Fără pași manuali, fără momente de „am uitat să încarc acel fișier?".
Același lucru se aplică pentru Sanity Studio. Modificările în structura de conținut se fac deploy automat, astfel încât interfața de editare este mereu sincronizată cu site-ul.
Pentru un dezvoltator solo ca mine, CI/CD nu este un lux — este o necesitate. Când lucrezi singur, nu ai un coleg care să verifice că ai reținut totul. Automatizarea face acea muncă pentru tine.
5. Structura proiectului și arhitectura componentelor
Înainte de a începe să programezi, ai nevoie de o structură de foldere clară. Un proiect ordonat este mai ușor de întreținut, mai ușor de depanat și mai ușor de extins.
Structura de foldere
Organizăm codul într-un monorepo cu două aplicații principale: web (frontend-ul Astro) și studio (Sanity Studio). Resursele partajate — precum tipuri, query-uri și configurații — se află în foldere comune.
Componentele sunt organizate după responsabilitate, nu după pagină. Există un folder pentru elemente fundamentale (butoane, text, wrapper), unul pentru componente globale (navigare, footer, head), unul pentru componente de secțiune (hero, proces, servicii) și unul pentru pagini.
Ierarhia componentelor
Fiecare pagină în Astro urmează același tipar: un BaseLayout care gestionează elementele head (meta, SEO, JSON-LD, Open Graph), urmat de componente globale (navigare și footer), și între ele — secțiunile unice ale acelei pagini.
Această structură înseamnă că modificările în navigare se reflectă automat pe toate paginile, metadata SEO se gestionează într-un singur loc, și paginile noi se construiesc rapid asamblând secțiuni existente.
6. Sistem de design: culori, tipografie și limbaj vizual
Aici este punctul în care multe proiecte merg prost. Sar direct în design fără să construiască mai întâi un sistem — și ajung cu un site unde fiecare pagină arată ușor diferit.
Pregătirea culorilor
Înainte de a proiecta o singură pagină, am definit întreaga paletă de culori:
Culoare primară — accentul albastru folosit în butoane și link-uri. Culoare secundară — pentru stări hover și interacțiuni avansate. Culori neutre — o scară completă de griuri de la alb la aproape negru, cu roluri definite: fundal, suprafețe, text și margini. Culori semantice — activ, inactiv, eroare, succes — pentru stări UI precum formulare de contact și notificări.
Toate culorile au fost definite ca proprietăți CSS personalizate, pentru a fi reutilizate consistent pe întreg site-ul.
Tipografie cu sistem
Am ales două fonturi: Clash Display pentru titluri și Figtree pentru textul de corp. Ambele auto-găzduite ca fișiere WOFF2 — 89 KB în total. Fără dependențe externe, fără cereri către Google Fonts.
Dar alegerea fonturilor este doar începutul. Munca reală este construirea unui sistem tipografic:
Scară modulară (1.25) — Fiecare nivel de titlu este exact de 1,25 ori mai mare decât nivelul inferior. Aceasta creează o ierarhie vizuală clară în care cititorul înțelege instant ce este cel mai important. Folosim opt dimensiuni: de la 11px pentru etichete la 64px pentru titlul hero.
Greutăți definite — Folosim doar trei greutăți din Figtree (400, 500, 600) și două din Clash Display (400, 500). Fiecare greutate are un rol definit. 400 pentru textul de paragraf, 500 pentru navigare și etichete, 600 pentru butoane și accent.
Înălțime de linie per nivel — Titlurile mari au interliniere strânsă (1.1), în timp ce textul de corp are spațiere generoasă (1.65) pentru confort de citire. Această diferență este subtilă dar perceptibilă — mai ales pe fundal întunecat unde ochii au nevoie de mai mult spațiu între linii.
Spațierea literelor — Titlurile mari sunt strânse ușor (-0.02em), în timp ce etichetele cu majuscule sunt deschise (+0.04em). Sunt detalii pe care majoritatea nu le observă conștient, dar care contribuie la senzația că textul este „corect".
Logo, favicon-uri și branding
Logo-ul a fost pregătit în mai multe formate: SVG pentru site (scalabil infinit, dimensiune mică), PNG pentru partajare pe rețele sociale, și o pictogramă simplificată pentru favicon-uri. Favicon-urile au fost generate în toate dimensiunile necesare — de la 16x16 pentru tab-urile browserului la 512x512 pentru pictogramele Progressive Web App.
Butoane și elemente interactive
Am definit un stil de buton cu reguli clare: butonul primar (plin, albastru) este folosit pentru acțiunea principală pe o pagină — niciodată mai mult de unul per secțiune. Butonul secundar (contur) este folosit pentru acțiuni alternative. Ambele au dimensiuni definite pentru desktop și mobil, cu zone de atingere suficiente (minimum 44x44px) pentru accesibilitate.
7. Multilingvism (i18n): Patru limbi din prima zi
Kodemagisk.no deservește clienți care vorbesc norvegiană, engleză, spaniolă și română. Suportul multilingv a fost integrat în arhitectură de la început — nu adăugat ulterior.
Structura rutelor
Norvegiana este limba implicită. Paginile în engleză se află sub /en/, cele în spaniolă sub /es/ și cele în română sub /ro/. Fiecare rută are o versiune localizată:
Norvegiană: /tjenester/cms-utvikling-med-sanity Engleză: /en/services/cms-development-with-sanity Spaniolă: /es/servicios/desarrollo-cms-con-sanity Română: /ro/servicii/dezvoltare-cms-cu-sanity
Sistemul de traducere
Toate textele care nu provin din Sanity (navigare, butoane, titluri de secțiune, răspunsuri FAQ) sunt stocate într-un fișier i18n central cu chei per limbă. Sanity gestionează conținutul precum articolele de blog și descrierile serviciilor — cu câmpuri dedicate pentru fiecare limbă.
hreflang și x-default
Tag-urile hreflang îi spun Google-ului că cele patru versiuni lingvistice sunt legate între ele. Am setat nb-NO ca x-default — astfel încât utilizatorii care nu se potrivesc cu niciunul din celelalte limbi sunt trimiși la versiunea norvegiană.
Cal.com: Rezervări compatibile cu GDPR
Pentru funcționalitatea de rezervări am ales Cal.com — o soluție europeană compatibilă cu GDPR. Multe agenții norvegiene folosesc Calendly, care stochează datele în SUA. Pentru o afacere care deservește piața europeană, acesta este un risc inutil. Cal.com ne permite să integrăm rezervările direct în site, cu date care rămân în Europa.
Formular de contact
Formularul de contact este conectat la email-ul nostru de afaceri de pe domene.no. Când cineva completează formularul, primim un email imediat — fără instrumente terțe precum Formspree sau Netlify Forms. Mai puține dependențe înseamnă mai puține lucruri care se pot strica.
8. SEO în 2026: Este vorba despre viteză și conținut autentic
SEO s-a schimbat fundamental. În 2026, nu mai este vorba despre a umple textul cu cuvinte cheie. Google este mai inteligent decât atât. Ce contează cu adevărat sunt trei lucruri: viteza, structura și conținutul autentic.
Core Web Vitals: Cele trei numere care contează cel mai mult
Google măsoară experiența utilizatorului cu trei metrici:
LCP (Largest Contentful Paint) — cât de rapid devine vizibil conținutul principal. Ținta este sub 2,5 secunde. Kodemagisk.no se încarcă în mai puțin de o secundă.
INP (Interaction to Next Paint) — cât de rapid răspunde pagina la clicuri și apăsări de taste. Ținta este sub 200 de milisecunde. Cu Astro trimitem JavaScript minimal, astfel încât interacțiunile sunt aproape instantanee.
CLS (Cumulative Layout Shift) — cât „sare" conținutul în timp ce se încarcă pagina. Ținta este sub 0.1. Prin definirea dimensiunilor fixe pentru imagini și fonturi, evităm complet schimbările de layout.
Kodemagisk.no obține 100/100 în Google PageSpeed Insights — atât pe desktop cât și pe mobil. Nu este noroc. Este rezultatul unor alegeri tehnologice deliberate: Astro care trimite JavaScript minimal, fonturi auto-găzduite care elimină cererile externe, imagini în format WebP, și un server în Norvegia care minimizează latența pentru utilizatorii norvegieni.
Imagini: Formatul contează
Toate imaginile de pe kodemagisk.no sunt în format WebP. WebP oferă fișiere cu 25-35% mai mici decât JPEG la calitate comparabilă. Pentru un site cu multe imagini, doar acest lucru poate reduce timpul de încărcare cu câteva secunde.
Folosim și lazy loading — imaginile din afara viewport-ului nu se încarcă până când utilizatorul nu face scroll la ele. Și definim width și height în HTML, astfel încât browserul știe exact cât spațiu are nevoie imaginea înainte de a fi încărcată. Aceasta elimină schimbările de layout.
Date structurate (JSON-LD)
Google nu înțelege doar textul de pe site-ul tău — citește și date structurate în format JSON-LD. Pe kodemagisk.no am implementat:
Organization — îi spune Google-ului cine suntem, unde ne aflăm și ce servicii oferim. WebSite — leagă site-ul de organizație. Service — descrie fiecare serviciu cu nume, descriere și furnizor. BlogPosting — oferă Google-ului metadata despre fiecare articol: titlu, dată, autor, categorii. BreadcrumbList — arată Google-ului structura site-ului. AggregateRating — afișează recenziile clienților direct în rezultatele căutării.
Aceste date structurate sunt motivul pentru care Google poate arăta rezultate îmbogățite cu stele, breadcrumb-uri și informații suplimentare — lucruri care cresc semnificativ rata de click.
Ierarhia titlurilor: H1 → H2 → H3
Fiecare pagină de pe kodemagisk.no are exact un H1. Secțiunile de pe pagina principală au H2. Subsecțiunile au H3. Această ierarhie nu se rupe niciodată.
Google folosește ierarhia titlurilor pentru a înțelege despre ce este pagina. Și pentru site-urile de afaceri, Google folosește H2-urile de pe pagina principală pentru a genera Sitelinks — sublink-urile care apar sub rezultatul principal în căutări. O eroare aici (precum folosirea H3 unde ar trebui H2) poate însemna pierderea Sitelinks-urilor.
Meta title și description: Unul per pagină
Fiecare pagină are un titlu SEO și o meta descriere unice — niciodată copiate de pe altă pagină. Pentru paginile de servicii folosim formatul „[Numele serviciului] — [Propunere de valoare] | Kodemagisk".
robots.txt și sitemap
robots.txt îi spune Google-ului ce pagini ar trebui și nu ar trebui indexate. Blocăm paginile șablon precum /team/, /signin/ și /signup/ (rămășițe ale șablonului cu care am început), în timp ce toate paginile reale sunt deschise.
Sitemap-ul se generează automat și include toate paginile în toate cele patru limbi. Se trimite la Google Search Console după lansare.
9. Accesibilitate: Nu doar o cerință — un avantaj
Accesibilitatea WCAG nu este opțională în 2026. European Accessibility Act (EAA) al UE intră în vigoare, iar afacerile norvegiene sunt așteptate să urmeze standardul WCAG 2.1 AA.
Pe kodemagisk.no aceasta înseamnă în practică: contrast suficient între text și fundal (minimum 4.5:1 pentru textul de corp), link de salt pentru navigarea cu tastatura, HTML semantic (niveluri corecte de titluri, repere de navigare, atribute ARIA unde este necesar), toate imaginile au text alt, și toate elementele interactive sunt accesibile prin tastatură.
Accesibilitatea nu este doar etică și cerințe legale — este și SEO. Google recompensează site-urile care urmează standardele de accesibilitate, pentru că aceleași principii (structură clară, HTML semantic, text lizibil) sunt ceea ce Google însuși are nevoie pentru a înțelege conținutul tău.
10. Strategia de conținut: Copywriting care vinde fără să strige
Infrastructura tehnică este fundația. Dar ceea ce cititorul citește efectiv este textul. Și aici majoritatea agențiilor și afacerilor fac aceeași greșeală: scriu pentru ei înșiși, nu pentru client.
Scrie cum vorbești
Prima noastră versiune a textului de pe kodemagisk.no era plină de cuvinte precum „logică digitală", „scalează-ți afacerea" și „partener tehnologic strategic". Sună impresionant — dar nimeni nu caută pe Google „partener tehnologic strategic Oslo".
Oamenii caută „site web pentru afacere", „cât costă un site web" și „agenție web Oslo". Textul tău trebuie să folosească cuvintele pe care oamenii le folosesc cu adevărat.
Am rescris totul. Titlul hero a devenit „Afacerea ta merită un site web care lucrează la fel de mult ca tine." Serviciile au fost organizate după ceea ce clientul are nevoie (site web, magazin online, CMS, aplicație web), nu după tehnologie (frontend, backend, CMS).
FAQ cu link-uri interne
Secțiunea noastră FAQ face muncă dublă. Răspunde la întrebările pe care oamenii le pun cu adevărat („Cât costă un site web?", „Cât durează?"), și face link-uri natural către pagini relevante ale site-ului. Fiecare link dintr-un răspuns FAQ este un semnal pentru Google că acea pagină este importantă.
11. Blog: Structurat pentru Google
Articolele de blog de pe kodemagisk.no nu sunt doar articole — sunt documente structurate pe care Google le înțelege.
Fiecare articol are: un titlu SEO și meta descriere unice (din Sanity), o dată de publicare și o dată de actualizare (Google o folosește pe cea din urmă pentru a prioritiza conținutul actualizat), categorii care sunt link-uri clickabile (strategie de link-uri interne), un cuprins cu ancore (îmbunătățește experiența utilizatorului și poate genera Sitelinks în căutări), metadata Open Graph pentru partajare pe rețele sociale, și schema JSON-LD BlogPosting care oferă Google-ului toate metadatele de care are nevoie.
Imaginile din articolele de blog sunt în format WebP cu text alt descriptiv și dimensiuni definite.
12. După lansare: Google Search Console și vizibilitate
Lansarea site-ului nu este sfârșitul — este începutul muncii SEO.
Google Search Console
După deploy, am trimis sitemap-ul la Google Search Console. Apoi am folosit funcția „Inspectează URL" pentru a cere Google-ului să indexeze manual cele mai importante pagini: pagina principală, servicii, proiecte, blog, recenzii și contact.
Aceasta nu forțează indexarea, dar pune paginile în coada Google — în loc să aștepți ca Google să le descopere singur.
Google Tag Manager și Analytics
Am creat conturi în Google Tag Manager (GTM) și Google Analytics 4 (GA4). GTM este implementat în site și gestionează toate scripturile de urmărire — astfel încât putem adăuga și elimina urmărirea fără a modifica codul.
GA4 ne oferă informații despre cum folosesc vizitatorii site-ul: ce pagini vizitează, cât stau și ce acțiuni realizează.
Google Business Profile
Pentru vizibilitate locală, am creat un Google Business Profile (fostul Google My Business). Acesta ne oferă vizibilitate în Google Maps și rezultate locale de căutare — un site din Oslo care apare în căutări „agenție web Oslo" combinat cu un Business Profile are șanse semnificativ mai mari de a primi click-uri.
Business Profile-ul conține adresa, programul de lucru, link-ul site-ului, categoriile de servicii și recenziile clienților care corespund datelor AggregateRating de pe site.
Lista de verificare: Tot ce ai nevoie (în ordinea corectă)
Faza 1 — Strategie și securitate
- Definește publicul țintă, obiectivele și piețele
- Alege stack-ul tehnologic (frontend, CMS, bază de date, hosting)
- Creează repository GitHub cu protecție de branch-uri (main/develop/feature)
- Configurează .gitignore pentru a proteja informațiile sensibile
- Configurează securitatea serverului (.htaccess, php.ini, HTTPS, headere de securitate)
- Configurează CI/CD pentru deploy automat
Faza 2 — Sistem de design
- Definește paleta de culori (primar, secundar, neutru, semantic)
- Proiectează logo-ul și generează favicon-uri în toate dimensiunile
- Alege și auto-găzduiește fonturile (WOFF2)
- Construiește sistemul tipografic (scară, greutăți, înălțime de linie, spațiere litere)
- Definește stilurile de butoane, dimensiunile și stările
- Documentează totul ca proprietăți CSS personalizate
Faza 3 — Fundament tehnic
- Configurează structura proiectului și organizarea folderelor
- Instalează dependențele (pnpm)
- Construiește componentele de bază (layout, navigare, footer, head)
- Configurează rutele multilingve (i18n)
- Configurează robots.txt
- Configurează generarea sitemap-ului
Faza 4 — Conținut și CMS
- Construiește schemele Sanity cu câmpuri SEO (seoTitle, seoDescription)
- Construiește componentele de secțiune pentru fiecare pagină
- Configurează query-urile GROQ pentru a prelua conținutul
- Scrie conținutul pentru fiecare pagină (copywriting cu gândire SEO)
- Scrie titlurile SEO și meta descrierile pentru toate paginile
- Completează conținutul în Sanity Studio
Faza 5 — SEO și date structurate
- Implementează JSON-LD (Organization, WebSite, Service, BlogPosting, BreadcrumbList)
- Verifică ierarhia titlurilor (H1 → H2 → H3) pe toate paginile
- Optimizează imaginile (WebP, lazy loading, dimensiuni definite)
- Verifică contrastul WCAG AA (minimum 4.5:1 pentru textul de corp)
- Rulează PageSpeed Insights și rezolvă problemele
- Verifică metadata Open Graph și Twitter Card
Faza 6 — Lansare și vizibilitate
- Deploy în producție
- Trimite sitemap-ul la Google Search Console
- Inspectează și solicită indexarea paginilor cheie
- Implementează Google Tag Manager și Analytics 4
- Creează Google Business Profile cu informații complete
- Monitorizează Core Web Vitals și rezultatele căutărilor în săptămânile următoare
Concluzie
Să construiești un site web profesional în 2026 nu înseamnă să alegi șablonul potrivit sau cel mai frumos design. Înseamnă să iei sute de decizii mici și gândite — de la strategia de ramificare în Git la spațierea literelor în titluri — care împreună creează un site rapid, sigur, accesibil și vizibil în căutări.
Kodemagisk.no este construit pentru a fi exact acel exemplu. Nu pentru că ar fi perfect, ci pentru că fiecare alegere este deliberată. Și aceasta este adevărata diferență între un site care „funcționează" și un site care lucrează pentru afacerea ta.
Dacă vrei ca site-ul tău să urmeze aceleași principii — contactează-ne pentru o conversație fără obligații. Îți spunem cât va costa și cât va dura, fără angajamente.
Kodemagisk este o agenție web în Oslo care construiește site-uri web, magazine online și aplicații web pentru afaceri mici și mijlocii din Norvegia. Vorbim norvegiană, engleză, spaniolă și română.