Zafra Chalet: ce se află sub capotă
Site-ul Zafra Chalet este creat de doITmagic — S.C. Do IT Magic Software S.R.L.. În această pagină explicăm ce am construit și cum ajută oaspeții și proprietara.
Trabantul și bolidul
Și Trabantul, și un bolid construit de mână sunt mașini. Amândouă au patru roți, volan și un motor. Diferența se vede abia când apeși pedala, când plouă sau când drumul urcă.
La fel și cu site-urile. Un site făcut dintr-o temă gata făcută și o grămadă de module arată bine în poze. Dar proprietarul ajunge să învețe programe de editat poze, să plătească pe cineva pentru fiecare traducere și să aștepte ca pagina să se încarce pe telefon, cu semnal slab, la munte. Oaspetele pleacă înainte să vadă ciubărul.
Zafra Chalet e bolidul. L-am construit de la zero, pentru o singură casă, cu o singură regulă: proprietara nu trebuie să știe nimic tehnic și nu are voie să greșească din neatenție. Tot ce se poate automatiza, face site-ul singur. Ce urmează sunt deciziile prin care am ajuns aici.
| Site obișnuit, pe temă gata făcută | Zafra Chalet | |
|---|---|---|
| Viteză | zeci de module, scripturi și fonturi încărcate la fiecare pagină | pagina vine gata făcută de pe server, cu doar ce trebuie |
| Google și AI | module SEO configurate separat, care ajung să spună altceva decât pagina | datele pentru Google generate din aceleași date ca pagina |
| Securitate | module de actualizat, bază de date expusă | un singur program, fără bază de date expusă, fără scripturi de la terți |
| Design | se strică la prima modificare făcută de proprietar | secțiuni fixe: se schimbă conținutul, nu arhitectura |
1. Un admin în care e greu să greșești
Toată pagina într-o singură listă
Proprietara vede toate secțiunile paginii într-o listă. Le mută trăgându-le cu mouse-ul sau, pe telefon, cu săgețile ▲▼. Le pornește sau le oprește și bifează anotimpurile și momentul zilei în care apar. Pentru o secțiune din afara sezonului alege dacă dispare sau coboară la finalul paginii. După „Salvează”, site-ul e deja schimbat, fără publicare separată. Lista funcționează și pe telefon, și pe un browser vechi, fără efecte. O salvare fără schimbări nu șterge câmpurile lăsate intenționat goale.
Datele comune se scriu o singură dată
Telefonul, adresa, emailul și WhatsApp-ul se scriu o singură dată, în setări. Toate secțiunile le folosesc de acolo. Un număr nou de telefon apare peste tot deodată, fără să rămână undeva unul vechi. Pe site funcționează deja așa; editarea lor din admin urmează.
O poză încărcată o dată, folosită oriunde
Toate pozele stau într-o galerie comună. Aceeași fotografie poate apărea în galerie, la ciubăr și într-o ofertă, fiecare cu legenda potrivită locului, fără s-o încarce de mai multe ori. Pe site funcționează deja așa; alegerea pozelor din admin urmează.
2. Viteză: pagina care se deschide și cu semnal slab
Pagina vine gata făcută de pe server
Pagina se construiește pe server și ajunge în telefon completă. Nu se asamblează în browser din zeci de bucăți, deci textul se poate citi înainte să se încarce orice script, și funcționează chiar și fără JavaScript. Google, asistenții AI și telefoanele vechi o văd întreagă.
HTTP/2
Toate fișierele paginii (stiluri, scripturi, poze) vin în paralel, pe o singură conexiune securizată, în loc să aștepte la coadă unul după altul.
Încărcare pe zone
Poza principală de sus e cerută prima, înainte de orice altceva. Pozele de mai jos se încarcă doar când vizitatorul ajunge la ele. Restul pregătim discret în fundal, cât timp vizitatorul citește, așa că la derulare pozele sunt deja acolo.
Se desenează doar ce e pe ecran
Pagina e lungă, dar telefonul nu o „construiește” pe toată de la început. Calculează doar partea pe care o vede vizitatorul, iar restul pe măsură ce derulează. Titlul și textul de sus apar din prima clipă, fără să aștepte scripturile, iar pe un telefon obișnuit pagina e gata de folosit mult mai repede.
Telefonul nu descarcă ce nu arată
Pe telefon, poza mare pentru calculator nu se mai descarcă degeaba, iar clipurile se aduc abia când vizitatorul se apropie de ele, nu toate din start. Pe date mobile, asta înseamnă câțiva megabytes economisiți la fiecare vizită.
Fonturile vin de pe site, nu de la Google
Literele elegante ale site-ului sunt găzduite chiar pe site, doar cu setul de caractere de care avem nevoie, cu tot cu diacriticele românești. Pagina nu mai deschide o conexiune separată spre Google și nu trimite adresa vizitatorului unei alte firme. Primul text apare pe ecran cam de două ori mai repede, iar poza mare de sus se vede cu aproape trei secunde mai devreme pe un telefon obișnuit.
Compresie și cache
Textul paginii se trimite comprimat. Pozele se păstrează în memoria browserului o lună, iar stilurile și scripturile un an, deci la a doua vizită totul apare instantaneu. Fiecare fișier are în nume o „amprentă” a conținutului: când schimbăm ceva, se schimbă și numele, iar vizitatorul primește imediat versiunea nouă, fără să rămână blocat pe una veche.
Un singur program, fără piese în plus
Tot site-ul e un singur program: pagini, poze, calendar și administrare. Nu are server de baze de date separat, module de actualizat sau servicii care pot cădea pe rând.
3. Site-ul se schimbă singur după anotimp și după oră
Patru anotimpuri
Același site arată altfel în fiecare anotimp, ca vila:
- iarna, imaginea mare de sus e creasta Bucegilor înzăpezită. Ciubărul apare aburind în curtea albă, iar experiențele propuse sunt pârtiile și castelele sub zăpadă;
- primăvara și vara apar terasa, grădina și traseele spre Caraiman; toamna, pădurea colorată;
- secțiuni întregi apar doar în sezonul lor (de exemplu banda „Bucegii iarna” sau recomandările de vară).
Proprietara marchează o poză, un text sau o secțiune „doar iarna” ori „primăvara și vara”, iar site-ul le arată singur în perioada potrivită. Nimeni nu trebuie să-și amintească să schimbe pozele la 1 decembrie.
Până la lansarea variantelor de sezon, vizitatorul vede varianta de vară fără selectorul de anotimp. Textele și imaginile rămân astfel coerente în această etapă.
Pagina vine gata făcută pentru acest moment
Anotimpul și ora (după ora României) le alege serverul, înainte să trimită pagina. Vizitatorul din ianuarie primește direct pagina de iarnă. Nu descarcă pozele de vară ca să fie ascunse, iar pagina nu „sare” de la o variantă la alta în timp ce se încarcă. Google vede exact ce vede și oaspetele.
Textele și ofertele potrivite anotimpului
Nu doar pozele se schimbă: și ce îi spunem oaspetelui. Nimeni nu vrea să citească „Veniți să vă răcoriți la munte” când afară sunt -10 grade. Iarna, site-ul vorbește despre ciubărul fierbinte, livingul spațios și pârtii. Vara, despre răcoarea de la 1.000 de metri, terasă și trasee. Fiecare text, ofertă sau recomandare poate avea o variantă pentru fiecare anotimp, iar site-ul o alege singur pe cea potrivită. Oferta de Revelion dispare singură în ianuarie, iar cea de vară apare singură în iunie. Pe site funcționează deja: titlul de sus, ciubărul („37°C” iarna, „Răcoare” vara), citatele și ofertele de sezon se schimbă singure. Scrierea lor din admin urmează.
Zi și seară
După apus, pagina trece singură pe atmosfera de seară:
- poza de sus se întunecă și capătă nuanța albastră a înserării;
- apare un clip de seară, cu ciubărul aburind, iar pe telefon clipul de zi e înlocuit cu cel de seară.
Ora apusului e diferită pentru fiecare lună a anului. În decembrie seara începe pe la 16:30, iar în iunie după 21:00.
4. Harta care prezintă singură zona
Tur automat al reperelor
Harta mare a zonei nu stă pur și simplu pe ecran. Trece singură, pe rând, prin punctele de interes: castelele Peleș și Cantacuzino, Casa memorială George Enescu, gările, traseele. Pe fiecare îl evidențiază pe hartă, cu distanța față de vilă, și arată cu o bară cât mai stă pe el. Vizitatorul primește un tur al zonei fără să atingă nimic.
Se oprește când vrei tu
La primul clic pe un reper, turul se oprește și harta rămâne pe ce a ales vizitatorul. Nu fuge de sub deget.
Pe categorii
Reperele sunt grupate pe atracții, restaurante și transport, cu file separate. Pe telefon, harta apare deasupra și lista dedesubt, ca să nu se acopere una pe alta.
5. Galerie și clipuri scurte
- Galeria se filtrează pe spații (vedere, interior, dormitoare, wellness). Pozele se deschid pe tot ecranul, cu săgeți și legendă.
- „Clipe de la Zafra”: clipuri verticale scurte, ca pe rețelele sociale, cu săgeți mari pe laterale. Pornesc doar când ajung pe ecran, ca să nu consume date degeaba.
- Drepturile de autor sunt respectate: pozele împrumutate (castelele, de pe Wikimedia) își afișează singure autorul, sursa și licența, în anotimpul în care apar.
- Descrierea vilei spune clar câți oaspeți și câte băi sunt și nu promite un șemineu real doar fiindcă televizorul îl arată într-o fotografie.
Recenzii și conturi la vedere
Oaspetele poate deschide recenziile de pe Booking și Google Maps din același loc. Spre finalul paginii găsește butoane clare pentru Facebook, Instagram și TikTok, fără să caute în subsol.
6. Găsit ușor de Google și de asistenții AI
Date pentru Google generate din pagină
Google primește descrierea vilei (adresă, capacitate, notă, check-in, întrebări frecvente) într-un format structurat, special pentru el. Pe majoritatea site-urilor aceste date se scriu separat și ajung să difere de pagină. La noi se generează din aceleași date ca pagina, deci nu pot rămâne în urmă.
Rezumat pentru asistenții AI
Când cineva întreabă ChatGPT, Claude sau Perplexity „o vilă cu ciubăr lângă Bușteni”, aceștia
pot citi /llms.txt: un rezumat curat al vilei, generat automat, mereu actual.
O singură sursă pentru tot
Fotografiile sunt grupate după spațiul real — living și masă, bucătărie, dormitoare și băi, mansardă — atât în prezentarea camerelor, cât și în filtrele galeriei.
Facilitățile, reperele din zonă și întrebările frecvente sunt scrise o singură dată. Din același loc se construiesc pagina, harta, datele pentru Google și rezumatul pentru asistenții AI. Dacă proprietara adaugă „saună” la facilități, apare peste tot deodată. Nu rămâne nicăieri o listă veche, uitată.
Fără legături moarte
Adresele vechi, indexate de Google înainte, trimit automat la pagina nouă. Pozițiile câștigate în căutări nu se pierd. Iar cine scrie greșit o adresă nu dă de o eroare tehnică: vede o pagină în stilul vilei, cu drum înapoi spre pagina principală, galerie, calendar sau WhatsApp.
7. Rezervare directă, fără comision
Cerere cu perioada deja completată
Oaspetele alege sosirea, plecarea și numărul de persoane, iar mesajul către gazdă include automat aceste detalii. Calendarul respectă minimum două nopți, dar nu arată zile libere sau ocupate. Gazda confirmă perioada și prețul în conversație; trimiterea cererii nu înseamnă rezervare confirmată. Îndemnurile din pagină cer alegerea perioadei, fără să promită verificarea automată a disponibilității.
8. Securitate fără compromisuri
- Fișierele private de acces sunt excluse din versionare și din pachetul de publicare al site-ului.
- Publicăm numai programul pregătit pentru rulare și fotografiile necesare; codul sursă rămâne pe calculatorul de dezvoltare.
- Accesul direct din internet la bazele de date ale serverului este blocat, iar aplicațiile își păstrează accesul intern.
- Bazele de date ale aplicațiilor sunt separate de celelalte site-uri de pe server, pentru a limita efectele unei probleme la un alt site.
- Baza de date nu e expusă în internet: o poate citi doar site-ul însuși.
- Site-ul rulează izolat, cu cele mai mici drepturi posibile.
- Conexiune securizată HTTPS, cu certificat reînnoit automat.
- Orice text venit din baza de date e curățat automat înainte de afișare, așa că nu poate strecura cod în pagină.
- Regulile datelor sunt impuse chiar în baza de date (anotimpuri valide, legături între tabele), nu doar în cod.
- Browserul primește o listă strictă cu locurile de unde pagina are voie să încarce ceva: doar site-ul însuși și hărțile OpenStreetMap. Chiar dacă cineva ar reuși să strecoare un script în pagină, browserul refuză să-l ruleze. Harta, fonturile și scripturile sunt toate găzduite pe site, nu la terți.
- Textele scrise în admin pot avea doar formatare simplă (îngroșat, cursiv) și legături spre paginile site-ului. Chiar dacă cineva ar intra în admin, nu poate strecura în pagină cod sau trimiteri spre alte site-uri.
9. Construit ca să nu se strice
Designul nu se poate strica din greșeală
Proprietara schimbă texte, poze, ordinea secțiunilor și anotimpurile. Nu poate muta coloane sau schimba fonturi fără să vrea. Pagina arată mereu ca în designul aprobat. Când mută sau oprește o secțiune, numerotarea din titluri („03 · Vila”) se reface singură, fără goluri, iar meniul de sus se construiește din secțiunile vizibile, deci nu rămâne niciodată un link care nu duce nicăieri.
Secțiuni noi, ca din piese de construcție
Fiecare secțiune a paginii e o piesă completă: aspectul, conținutul și setările ei. Proprietara adaugă o „Ofertă de Revelion” și o „Ofertă de vară” din aceeași piesă, fiecare cu textele, pozele și anotimpul ei. Nu are nevoie de programator și nu riscă să strice designul. Imaginea mare de sus poate avea o variantă de iarnă și una de vară. Site-ul arată mereu una singură, pe cea potrivită momentului. Piesele există deja și funcționează pe site: „Iarna la Zafra” și „Primăvara și vara” sunt aceeași piesă, cu conținut diferit. În admin, o piesă se adaugă dintr-o listă. Secțiunea nouă pornește oprită, ca să nu apară pe site pe jumătate completată.
Pagina se construiește doar din ce e pe ea
Serverul citește din baza de date doar datele secțiunilor care apar efectiv pe pagină în acel moment. O secțiune oprită sau din alt anotimp nu costă nimic, oricâte ar fi.
Teste automate la fiecare versiune
Înainte de fiecare publicare rulează teste automate: paginile, ordinea secțiunilor, calendarul, datele pentru Google, regulile bazei de date. Ele verifică și că fiecare secțiune are text și poze în fiecare anotimp și la fiecare oră, că niciun text nu depășește locul lui din design și că fiecare poză are o descriere scrisă. Descrierea nu se vede pe ecran: o citesc cu voce tare programele folosite de nevăzători, apare în locul pozei dacă aceasta nu se încarcă și o folosește Google ca să înțeleagă ce e în imagine. Excepție fac doar fundalurile decorative, pe care programele de citire le sar intenționat. Dacă un test pică, versiunea nouă nu se publică.
Degradare elegantă
Când ceva extern nu răspunde (calendarul, traducerea), site-ul nu cade. Afișează ce are și continuă să funcționeze.
10. Pentru oricine, la orice vârstă
-
Titlul principal spune ce se închiriază și unde este Zafra Chalet; sloganul de lângă el păstrează atmosfera potrivită anotimpului și orei.
-
Prima secțiune prezintă închirierea integrală, capacitatea, suprafața, dormitoarele, băile și ciubărul, ca oaspetele să înțeleagă imediat oferta.
-
Text mare și contrast bun: publicul vilei e adesea peste 50 de ani.
-
Întrebările frecvente funcționează fără JavaScript, cu elemente native ale browserului.
-
Cine a cerut sistemului mai puțină mișcare nu primește animații.
-
Contact direct: telefon și WhatsApp la un clic, pe orice ecran.
-
Pe telefon, scorul oaspeților are spațiul lui deasupra titlului; textele nu se suprapun nici pe ecrane joase.
-
Pe calculator, clipul de seară are spațiul lui lângă prezentare, fără să acopere sloganul sau descrierea vilei.
-
Pe telefon, meniul deschis acoperă pagina cu un fundal opac, fără texte suprapuse; pe ecrane joase, lista se poate derula până la ultimul link.
-
Harta nu acoperă comenzile de navigare, iar categoriile reperelor se așază pe mai multe rânduri când ecranul este îngust.
-
Clipurile de pe telefon se văd câte unul, pe toată lățimea disponibilă, fără jumătăți din clipul următor și fără decuparea imaginii.