Studiu de caz · 2025-2026
AmBilet: un marketplace de bilete mutat de pe WordPress fără să-și piardă clienții.
AmBilet vinde bilete la concerte, stand-up, teatru, festivaluri și evenimente pentru copii din toată România. În 2026 l-am reconstruit pe ePAS, platforma din spatele Tixello: site nou, cont de client nou, panou nou pentru organizatori. Clienții vechi au intrat în noul site cu aceeași parolă.
- Rol
- Fondator. Produs, design, cod, migrare
- Perioadă
- Decembrie 2025 - prezent
- Stare
- Live pe ambilet.ro
- Construit pe
- ePAS, platforma din spatele Tixello
- Problema
- Vechiul AmBilet rula pe WordPress, WooCommerce și un plugin de bilete, un sistem care nu fusese gândit pentru locuri, rezervări și deconturi.
- Ce am construit
- Un site nou, rapid, legat de ePAS: hărți de locuri, coș cu rezervarea locului, carduri cadou, cont de client și un panou complet pentru organizatori.
- Rezultatul
- Live pe ambilet.ro din aprilie 2026, cu evenimentele, comenzile, biletele și conturile vechi mutate în platforma nouă.
- 1.394 commit-uri în zece luni
- 7.777 bilete mutate dintr-un singur import
- 3.080 comenzi mutate, pentru 45 de evenimente
- 453 tipuri de bilete aduse din vechiul site
Numărate în git și în fișierele de import, pe 5 noiembrie 2026.
01 · Problema
Un magazin WordPress care vindea bilete.
Vechiul AmBilet era un magazin WooCommerce cu un plugin pentru bilete. Pentru un magazin obișnuit e suficient. Pentru bilete, nu: locurile pe hartă, rezervarea locului cât timp clientul plătește, scanarea la intrare și decontul către organizator erau toate adăugate peste un sistem care nu fusese gândit pentru ele.
Aveam deja ePAS, platforma pe care rulează Tixello. Am mutat AmBilet pe ea, ca să primească tot ce aveau deja organizatorii Tixello.
02 · Ce face
Găsești evenimentul, alegi locul, intri cu telefonul.
Cumpărătorul caută pe oraș, categorie, artist sau zi: azi, mâine, weekendul ăsta. Pe pagina evenimentului își alege locul pe hartă. Locul îi rămâne rezervat cât timp e în coș, iar biletul vine pe email și în cont.
Organizatorul are un panou al lui: evenimente create pas cu pas, vânzări, participanți, coduri de reducere, echipă, documente și deconturi. Pentru intrare are o aplicație web de scanare.
03 · Arhitectura
Un site PHP rapid în față, ePAS în spate.
AmBilet nu are bază de date proprie. E un site PHP separat, fără framework, care cere totul de la ePAS printr-un API de marketplace. ePAS are 35 de controlere doar pentru acest tip de clienți.
- 01
Vizitatorul
- Pagini HTML, prin Cloudflare
- Hartă de locuri desenată cu Konva
- Plată cu Netopia sau Stripe
- 02
Cache pe trei niveluri
- Pagini întregi pe disc, la 5 minute
- Răspunsuri API servite și după expirare
- Golit de ePAS când se schimbă ceva
- 03
API de marketplace
- Evenimente, comenzi, plăți, clienți
- Organizatori, artiști, locații, căutare
- Cereri de pe server direct, fără ocol
- 04
ePAS
- Bilete, rezervări de locuri, deconturi
- Facturi și e-Factura
- Aceleași module ca Tixello
Când un organizator schimbă un banner sau un eveniment în ePAS, platforma anunță site-ul, iar pagina se reface fără să aștepte expirarea cache-ului.
04 · Migrarea
Clienții vechi au intrat cu aceeași parolă.
La mijlocul lui aprilie 2026, AmBilet a trecut pe platforma nouă. Am scris un ghid care leagă fiecare tip de date din WordPress de echivalentul lui din ePAS: evenimente, tipuri de bilete, comenzi, bilete. Apoi am importat pe bucăți, din fișiere CSV, ca fiecare pas să poată fi verificat.
Conturile au venit cu tot cu parolele criptate din WordPress, așa că clienții s-au logat în site-ul nou cu parola veche. Linkurile din emailurile vechi duc spre o copie a vechiului site, ca nimeni să nu dea de o pagină goală.
05 · Viteza
Vizitatorii din reclame primeau cea mai lentă pagină.
Cache-ul de pagină folosea adresa completă ca cheie, cu tot cu parametrii pe care Facebook și Google îi adaugă la fiecare click. Fiecare vizitator venit dintr-o reclamă avea altă adresă, deci primea o pagină generată de la zero. Exact oamenii pentru care plăteam. Acum acești parametri sunt scoși din cheie.
Altă problemă a apărut în loguri: cereri către API care expirau după 3 secunde, deși serverul răspundea în circa 600 de milisecunde. Timpul se pierdea la conexiunea securizată prin Cloudflare. Cererile de la server la server merg acum direct.
06 · Metrici
Ce am numărat.
Măsurat în repo și pe site, pe 5 noiembrie 2026. Cifrele de vânzări nu sunt aici, pentru că nu le-am verificat încă dintr-un export.
- 1.394commit-uri, între 27 decembrie 2025 și 5 noiembrie 2026git
- 239commit-uri în ianuarie 2026, cea mai intensă lunăgit
- 7.777bilete și 3.080 de comenzi mutate pentru 45 de evenimentemăsurat
- 5 mincât stă o pagină în cache înainte să se refacăîn cod
- 0,15 stimpul de răspuns al paginii principale, o singură măsurătoaremăsurat
- 35de controlere în API-ul de marketplace din ePASîn cod
Cât cod
- 249
- fișiere PHP
- ~100k
- linii PHP
- 102
- fișiere JavaScript
- ~44k
- linii JavaScript
- 42
- fișiere CSS
- 27
- commit-uri de migrare
07 · Ce am învățat
Ce iau cu mine.
O migrare se face pe bucăți mici
Un import mare care pică la jumătate e greu de reluat. Importurile pe evenimente și pe tipuri de date se verifică unul câte unul.
Nu-i pune pe clienți să-și refacă parola
Fiecare cont pierdut la migrare e un client care poate nu mai revine. Parolele criptate se pot muta, dacă știi cum au fost criptate.
Cache-ul trebuie testat pe traficul adevărat
Pe adresele curate, cache-ul mergea perfect. Pe adresele din reclame nu mergea deloc.
Ascunde ce nu e gata
Recompensele și insignele au stat ascunse până au avut beneficii reale. Un buton care nu face nimic strică încrederea mai mult decât lipsa lui.
08 · Mai departe
Platforma de sub AmBilet.
Totul rulează pe ePAS, platforma din spatele Tixello. Studiul de caz Tixello.
Ai un magazin sau o platformă care a crescut peste WordPress?
Fac migrări fără pierderi de date sau de clienți, pe o platformă construită pentru ce vinzi. Scrie-mi și vedem dacă se potrivește.