← Înapoi la linie
03 · Proiect intern · Tipăresc AmintiriLansat

Oglinda Clasică

Oglindă foto pentru evenimente, cu galerii și contracte online.

Ce am făcut

Site-ul, SEO-ul, sistemul de galerii, contractele online și grafica ramelor foto. Logo-ul exista; restul l-am construit în jurul lui.

  • print
  • site
  • aplicație
  • cod
PINfiecare galerie se deschide doar pentru invitații ei
Semnatcontractul, de pe telefon, fără Word și fără drumuri
#1pe Google la căutările din zonă, cu nota 5,0 din 15 recenzii

Construit cuPHP 8 · JavaScript · HTML · CSS · JSON · GD / Imagick · WebP · tFPDF · MailerLite API · Schema.org

Intră pe site oglindaclasica.ro

Tip
Proiect intern · Tipăresc Amintiri
An
2026
Ce am făcut
Site, SEO, galerii, contracte online, grafica ramelor
Platformă
PHP pe un hosting partajat, fără bază de date

Contextul

Amintirile nu trebuie să expire.

Oglinda Clasică e o cabină foto în formă de oglindă, pe care Tipăresc Amintiri o duce la nunți, botezuri și evenimente din Constanța și de pe litoral. Invitații își fac poze și le primesc printate pe loc, într-o ramă făcută pentru evenimentul lor.

După eveniment, pozele plecau pe WeTransfer sau DigiStorage, iar contractele se scriau în Word și se semnau față în față. Am construit totul in-house: site-ul, SEO-ul, galeriile, contractele online și grafica ramelor. Logo-ul exista deja; restul l-am clădit în jurul lui.

Oglinda la evenimente, din Instagramul @oglindaclasicaconstanta.

Regula jocului

Totul pe un hosting ieftin.

Sistemul rulează pe un hosting partajat obișnuit, genul pe care îl plătește orice firmă mică: PHP, câțiva gigabytes și atât. Fără server dedicat, fără servicii plătite în plus, fără abonamente noi. Fiecare decizie de mai jos pleacă de aici.

  1. 01

    Fișiere JSON, nu bază de date

    în loc de o bază de date MySQL

    O galerie înseamnă un fișier și un folder cu poze: se mută, se salvează și se refac ușor. Când urci zeci de poze deodată, scrierile trec pe rând, cu blocare de fișier, ca să nu se piardă nimic.

  2. 02

    PHP simplu, fără framework

    în loc de Laravel, Node sau WordPress

    Merge pe orice hosting, de la PHP 7.4 la 8, fără pași de build. Urci fișierele și funcționează, iar lună de lună nu rămâne nimic de actualizat.

  3. 03

    Pozele, procesate o singură dată

    în loc de imagini redimensionate la fiecare vizită

    La urcare se fac miniatura și varianta pentru ecran, în WebP, întoarse corect după cum a fost ținut telefonul. Cu Imagick dacă hostingul îl are, altfel cu GD. Invitații încarcă repede, iar serverul nu muncește la fiecare vizită.

  4. 04

    Arhiva ZIP, făcută în browser

    în loc de o arhivă construită pe server

    „Descarcă toate” strânge pozele și face arhiva direct pe telefonul sau calculatorul invitatului, fără compresie, pentru că JPG-urile sunt deja comprimate. Hostingul nu ține arhive mari și nu-și consumă procesorul pe ele.

  5. 05

    Statistici proprii, fără cookie-uri

    în loc de Google Analytics

    Nu se salvează adrese IP și nu se pune niciun cookie, deci site-ul n-are nevoie de banner. Se văd vizitele, de unde vin oamenii și cine deschide doar galeria; roboții și previzualizările de link nu se numără.

  6. 06

    PDF generat pe server

    în loc de o platformă plătită de semnături

    Contractul se generează cu o bibliotecă PHP, în același format ca vechiul contract din Word, cu semnătura și dovezile semnării la final. Fără abonament pentru fiecare contract semnat.

Site-ul

Un logo care exista deja, o lume în jurul lui.

Forma de arc a oglinzii se repetă peste tot: în fotografii, în carduri, în galerii. Chihlimbarul și maroul închis vin din logo, titlurile sunt în Cormorant Garamond, iar textul în Manrope. Prima pagină e un singur fișier static, așa că se încarcă repede chiar și pe un hosting ieftin.

oglindaclasica.ro
Pe telefon, butonul de WhatsApp e mereu la îndemână.
Lista galeriilor publicate
O galerie, înainte de cod
Aceeași galerie, deschisă

SEO și recenzii

Găsită pe Google, recomandată de clienți.

SEO-ul n-a fost un strat pus la final, ci o parte din fiecare decizie: o pagină rapidă, texte scrise pentru ce caută oamenii din zonă și date structurate care îi spun lui Google exact ce e firma și unde ajunge. Apoi am construit partea care aduce recenziile singură. Rezultatul se vede în căutări.

#1
pe Google la căutările din zonă, de cele mai multe ori; altfel, în primele trei rezultate
5,0 ★
nota firmei pe Google, din 15 recenzii
↑
recenziile au crescut de când există site-ul și galeriile care le cer singure
  1. 01

    Căutările din zonă

    Titlul, descrierea și textele răspund la ce caută oamenii: „oglindă magică Constanța”, „cabină foto”, „video booth 360°”, „polaroid photobooth”.

  2. 02

    Date structurate

    Firma, cu orașele în care ajunge (Constanța, Mamaia, Năvodari, Eforie, Mangalia, Medgidia și tot județul), serviciile, întrebările frecvente și filmul de prezentare, descrise pentru Google.

  3. 03

    Viteză

    Prima pagină e un singur fișier static, iar imaginile de mai jos se încarcă doar când ajungi la ele, așa că pornește repede și pe telefon.

  4. 04

    Search Console

    Site-ul e verificat în Google Search Console, de unde se urmăresc căutările care aduc oameni pe site.

index.html · JSON-LD (extras)
{
  "@type": "LocalBusiness",
  "name": "Oglinda Clasică",
  "areaServed": ["Constanța", "Mamaia", "Năvodari",
    "Eforie", "Mangalia", "Medgidia", "Județul Constanța"],
  "hasOfferCatalog": { "itemListElement": [
    "Închiriere oglindă magică",
    "Video Booth 360° pentru evenimente",
    "Polaroid Photobooth alb-negru" ] }
}

Cum se strâng recenziile

Cel mai bun moment să ceri o recenzie e când omul tocmai și-a văzut pozele. Sistemul o face singur, de două ori, fără ca cineva să-și amintească să trimită un mesaj în plus.

  1. EvenimentulInvitații se pozează în oglindă, iar pozele ajung în galeria evenimentului.
  2. Mesajul de WhatsAppClientul primește linkul, codul și, în același mesaj, rugămintea pentru o recenzie. Linkul se adaugă singur, chiar dacă mesajul e rescris de mână.
  3. Cardul din galerieDupă poze, exact când invitații sunt cei mai bucuroși, galeria cere o recenzie pe Google, cu un singur buton.
  4. Recenzia, pe GoogleRecenziile întăresc profilul firmei în căutările din zonă, iar cele reale ajung și pe prima pagină a site-ului.
Cardul de la finalul fiecărei galerii
Recenziile reale, pe prima pagină a site-ului

Intră pe site oglindaclasica.ro

Grafica din oglindă

Fiecare eveniment, cu rama lui.

Fiecare poză iese din oglindă printată pe loc, la 10×15, într-o ramă desenată pentru evenimentul acela: numele, data și decorul potrivit, de la flori pentru o nuntă la baloane aurii pentru un majorat. Ramele sunt desenate de mine.

Printuri de la evenimente reale, publicate pe site-ul Oglinda Clasică.

Ramele din 2026, de pe Instagram: o nuntă și o bandă foto cu trei cadre.
Polaroid Photobooth: aceeași idee, în alb-negru.

Galeriile

Din oglindă, direct în telefon.

După eveniment, galeria se face din admin: urci pozele, le împarți pe albume dacă au fost mai multe cabine, alegi coperta și publici. Clientul primește pe WhatsApp un mesaj gata scris, cu linkul, codul de acces și rugămintea pentru o recenzie. Invitații deschid galeria, își găsesc pozele și le descarcă pe toate sau doar pe ale lor.

Încearcă galeria reală · Codul de acces, pentru demo: 2580 ·

Și linkul arată bine când e trimis

Pentru fiecare galerie, sistemul compune o singură dată imaginea de previzualizare: coperta în prim-plan, pe un fundal estompat, cu logo-ul alături. Pe WhatsApp, linkul se recunoaște din prima.

Pozele nu stau în folderul public al site-ului. Fiecare cerere trece printr-un filtru care verifică codul sau sesiunea de admin, așa că nimeni nu ajunge la ele ghicind o adresă.

Pagina reală a galeriei Women In Charge Dobrogea, exportată din sistem, cu scriptul ei original; codul e schimbat pentru demo, iar WhatsApp, telefonul și recenziile sunt oprite. Rama de pe printuri e desenată pentru eveniment.

Contractele

Semnat de pe telefon, fără drumuri.

Înainte, fiecare contract se scria în Word și se semna față în față. Acum se face din admin, chiar de pe telefon: completezi clientul și evenimentul, bifezi pachetul, iar totalul, avansul și restul se calculează singure. Clientul primește linkul, citește contractul, cere un cod pe e-mail și semnează cu degetul. PDF-ul iese în formatul vechiului contract din Word, cu semnătura și dovezile semnării la final, și ajunge pe e-mail la amândoi.

01
Contractul, făcut de pe telefon
02
Clientul îl deschide din link
03
Semnat, cu PDF-ul trimis pe e-mail

Semnează și tu

Semnătura ta ajunge în PDF exact cum ajunge și a clientului.

Semnați cu degetul sau cu mouse-ul

Contract demonstrativ, cu date fictive.

BeneficiarVizitator byaba.ro
PrestatorSC Tipăresc Amintiri SRL

Document semnat electronic. Confirmare prin cod unic trimis pe e-mail.

✓ Semnat. Așa apare semnătura în PDF.

Panoul

O seară întreagă, într-un singur loc.

Adminul merge la fel de bine pe telefon ca pe calculator, ca nimic să nu mai aștepte până ajungi la birou.

oglindaclasica.ro/admin
GaleriiO galerieContracteUn contractTraficAbonațiSetări

Capturi din sistemul real, rulat cu date fictive.

Sub capotă

Nimic în plus de întreținut.

Tot sistemul e PHP și JavaScript simplu: fără bază de date, fără framework, fără pași de build. Datele stau în fișiere JSON scrise sub blocare, ca două cereri care sosesc deodată să nu se calce una pe alta.

  • Galerii cu cod de acces; pozele trec printr-un filtru, nu stau în folderul public
  • Miniaturi și variante WebP, cu Imagick sau GD, după ce are hostingul
  • Arhiva ZIP construită în browser, cu suma de control calculată în JavaScript
  • Imaginea de previzualizare a fiecărei galerii, compusă pe server și păstrată
  • Contracte cu cod pe e-mail, semnătură desenată și PDF generat cu tFPDF
  • Abonări cu capcană pentru roboți, limită de cereri și coadă pentru MailerLite
  • Statistici fără cookie-uri și fără adrese IP salvate
  • Date structurate: LocalBusiness, FAQPage, VideoObject
sistem/functii.php (prescurtat)
function oc_json_update($file, callable $fn)
{
    $fh = @fopen($file, 'c+b');
    @flock($fh, LOCK_EX);          // o singură scriere odată
    $s = stream_get_contents($fh);
    $data = $s !== '' ? json_decode($s, true) : array();
    $nou = $fn($data);             // modificarea, pe datele proaspete
    ftruncate($fh, 0);
    rewind($fh);
    fwrite($fh, json_encode($nou, JSON_PRETTY_PRINT));
    @flock($fh, LOCK_UN);
    fclose($fh);
    return $nou;
}
Oglinda Clasică

Designed & developed by Aba, as part of Tipăresc Amintiri.

Logo-ul Oglinda Clasică exista deja. Galeria Women In Charge Dobrogea e reală; contractele, abonații și celelalte galerii din capturi sunt fictive.

Următorul proiect

04Premier LakeRestaurant & Lounge pe malul lacului, în Mamaia Nord.