Az ügyfél véleménye
Nagyon elégedett vagyok a weboldal elkészítésével! Maximálisan megértették az elképzeléseimet, és azt nagyszerűen, igényesen és az általam megálmodott módon valósították meg.
Tagsági rendszer, ahol a bevétel hónapról hónapra, emberi munka nélkül érkezik: automatikus kártyaterhelés, automatikus számlázás, védett CDN-es videólejátszás, közösségi chat és mért nézettség – egy oldalon.
A Fitten Ircsivel Edzésklub egy előfizetéses edzésplatform, amit a nulláról építettünk. Nem videógyűjtemény jelszóval, hanem tagsági rendszer: a tag havi, negyedéves, féléves vagy éves csomagot választ, a rendszer ezután a kártyáját magától újraterheli, a számlát kiállítja, a videókat pedig csak annak adja ki, akinek éppen él az előfizetése.
Egy ilyen oldalon nem a videólejátszó a nehéz rész. Az a nehéz, hogy a bevétel emberi munka nélkül, hónapról hónapra megérkezzen, és hogy a tag akkor is pontosan értse, mi történik a pénzével, amikor valami félremegy: lejár a kártyája, elutasítja a bank, vagy meggondolja magát. Ez az oldal arról szól, hogyan oldottuk meg.
Egy webshopnál a vásárlás egy esemény. Egy tagságnál a vásárlás egy állapot, ami minden hónapban újra eldől. Ez két dolgot jelent a fejlesztésre nézve. Egyrészt a fizetésnek magától kell működnie, mert ha havonta kézzel kell utalásokat párosítani, akkor a taglétszám növekedése nem bevétel, hanem munka. Másrészt minden olyan pillanatot végig kell gondolni, amikor a tag el akar vagy el tudna menni – mert a lemorzsolódás egy előfizetéses oldalon nem a marketing kérdése, hanem a rendszeré.
Ezért a munka nagyobbik része nem a látható felületen van, hanem a háttérben: az ismétlődő terhelésben, a sikertelen fizetés kezelésében, a számlázásban és a hozzáférés-ellenőrzésben.
A tag egyszer fizet bankkártyával a SimplePay felületén, és ezzel együtt – külön, kötelező jelölőnégyzettel – hozzájárul az ismétlődő terheléshez. Innentől a rendszer minden ciklus végén magától levonja a díjat a mentett kártyaregisztrációval, egy éjszakai ütemezett folyamatból, a felhasználó jelenléte nélkül.
Négy részlet, ami ezt működővé teszi:
A lemondás egy gomb, megerősítő ablakkal. Utána nincs több levonás, de a már kifizetett időszak végéig minden tartalom elérhető marad, és a mentett kártyaregisztrációt a szolgáltatónál is töröljük. Aki meggondolja magát, a lejárat előtt is előfizethet újra – ilyenkor az új időszak a jelenlegi lejáratakor indul, tehát egy kifizetett nap sem vész el, és nincs dupla terhelés ugyanarra az időszakra.
Minden sikeres fizetésről automatikusan készül számla Billingo-integrációval, e-mailben kimegy, és a tag a saját felületén is letöltheti PDF-ben. A profil Tranzakcióim oldalán egy listában látszik minden fizetés – előfizetés-indítás, automatikus megújítás, külön megvett edzésprogram –, állapottal és számlával együtt.
A számlázási adatokat a rendszer a fizetés pillanatában elmenti, akkor is, ha a vásárló nem kéri a tárolást: a megújítási számlák ebből készülnek. A bankkártya mellett átutalásos fizetés is választható, amit az üzemeltető egy kattintással nyugtáz az adminban.
A videók nem a saját szerverről mennek, hanem a Bunny Stream CDN-ről. Ennek két oka van, és mindkettő gyakorlati.
Az egyik a feltöltés. Egy hosszú edzésvideó több giga is lehet, amit egy megosztott tárhely PHP-időkorlátja nem visel el. Ezért a feltöltés közvetlenül a böngészőből megy a CDN-re, darabokban, megszakadás után folytathatóan, folyamatjelzővel – a szerver csak az aláírt hitelesítő adatokat állítja elő, az API-kulcs sosem kerül ki a felületre. A CDN utána magától elkészíti a különböző minőségű változatokat, tehát gyengébb mobilneten is elindul a lejátszás.
A másik a védelem. A lejátszáshoz a szerver minden alkalommal időkorlátos, aláírt hivatkozást állít elő, ami néhány óra után értéktelen. Előtte ellenőrzi, hogy a kérőnek tényleg él-e az előfizetése, vagy megvette-e azt az edzésprogramot, amiben a videó szerepel. Ez nem tisztán műszaki kérdés: ha a lejátszási cím továbbadható lenne, akkor a tagságnak nem lenne értelme.
A videótár egy megszokott, keresős-kategóriás felületen él. A rendszer megjegyzi, hol hagyta abba a néző, tehát a félbehagyott edzés folytatható, és látszik, melyiket vitte végig. A lista háromszáznál több videónál görgetésre tölt tovább – az első változat az egészet egyszerre rajzolta ki, és ettől lett lassú a belépés utáni első képernyő.
Emellett letölthető segédanyagok, új videóról szóló e-mail értesítő (egy kattintással lemondható, aláírt linken, bejelentkezés nélkül is), és egy állandó „Nézz bele” belépési pont, ami mindig az aktuális ingyenes mintára visz. Ez utóbbi szándékosan nem egy konkrét videóra mutat: így a mintaedzés cseréje tartalmi döntés marad, nem fejlesztői feladat, és a gomb akkor sem vezet sehova, ha az a videó eltűnik.
A több héten át vezetett edzésprogramok külön, egyszeri díjjal is megvásárolhatók, előfizetés nélkül is. Ez másik vásárlót szólít meg: aki nem akar tagságot, de egy konkrét, végigvezetett programot igen – és aki ezen bejön, később könnyebben lesz tag.
Digitális tartalomnál a tizennégy napos elállási jog külön figyelmet igényel: a vásárló a hozzáférés megnyitása előtt nyilatkozik arról, hogy lemond róla, és ezt a rendszer időbélyeggel rögzíti. Az elállási nyilatkozat ettől függetlenül nyilvános űrlapon benyújtható, ahol a benyújtó személyazonosságát a megadott címre küldött, aláírt megerősítő link igazolja, az ügyintézés pedig az adminban követhető.
Az Edzésklub tagjai egy közös beszélgetésben találkoznak. Szándékosan egyetlen szál van, nem csatornák és nem privát üzenetek: néhány tíz egyidejű tagnál a több csatorna nem közösséget csinál, hanem üres szobákat.
A chat lekérdezéssel frissül, nem állandó kapcsolattal. Ez tudatos kompromisszum: az oldal megosztott tárhelyen fut, ahol nincs tartósan futó háttérfolyamat, amire egy valós idejű szerver épülhetne. A kliens nyitott ablaknál néhány másodpercenként kérdez rá az új üzenetekre, csukottnál csak az olvasatlanok számára, rejtett böngészőfülön pedig egyáltalán nem – így a megoldás a valós terhelésnél bőven elbírható, és nem köt külön szerverköltséget az üzemeltetőre.
A tagok csak a nevet és a profilképet látják egymásról, e-mail címet nem. Saját üzenetét bárki törölheti, bárkiét csak a moderátor, aki egy tagot időlegesen ki is tilthat az írásból. A moderált üzenet a már megnyitott ablakokból is eltűnik, nem csak az újratöltés után.
Az adminban napi bontású nézettségi kimutatás van, ami tagonként, videónként és naponként összesít: hányan néztek, mennyi időt, melyik videót nyitották meg a legtöbben, és kik a legaktívabb tagok. Az időszak választható (7 nap, 30 nap, 90 nap, egy év), és minden mutató ugyanabból a szűrt halmazból számol, hogy a számok ne mondhassanak ellent egymásnak.
Két részlet, ami többet ér, mint amilyennek látszik. A nézés nélküli napok is szerepelnek a diagramon, nullával – enélkül a görbe összenyomná a szüneteket, és folyamatosnak mutatna egy szaggatott hetet. A másik az átlag nézőnként mutató: nem napokra osztunk, hanem tagokra, mert egy előfizetéses oldalon nem az a kérdés, hány megtekintés volt, hanem hogy egy aktív tag mennyit edz – ez a megtartás előrejelzője, és ebből lehet időben látni, ha valaki elkezd lemorzsolódni.
Az előfizetéses videókat nem rejtjük el a kereső elől, hanem kimondjuk róluk, hogy fizetősek. A videó adatlapja nyilvános – cím, leírás, hossz, borítókép –, a lejátszás marad a tagi felületen, a strukturált adat pedig jelöli, hogy a tartalom előfizetéshez kötött. Ez a Google által javasolt megoldás: ha a robot mást látna, mint a látogató, azt a kereső megtévesztésnek tekintené.
Az oldal minden videóhoz és kategóriához teljes strukturált jelölést ad ki, több részre bontott sitemapet generál élő adatból, és llms.txt fájlt is kiszolgál az AI-keresőknek. A vezető elv végig ugyanaz: ami a keresőnek szól, az adatból származzon, ne kézzel karbantartott másolatból – mert ha a sitemap mást mond, mint a canonical, arról semmi nem jelez, csak a forgalom marad el.
A tartalom teljes egészében szerkeszthető, fejlesztő nélkül: blokk-alapú oldalösszeállító, médiatár, menükezelő, blog, felugró ablakok, e-mail sablonok és e-mail napló (látszik, mi ment ki és mi nem, és újraküldhető), videókategóriák és edzésprogramok sorrendezhető kezelése, előfizetés-kezelés kézi hosszabbítással, átutalások nyugtázása és aktivitásnapló. A süti-hozzájárulás kezelése és a jogi oldalak is a rendszer részei.
Laravel 12 az alap, a videókiszolgálás Bunny Stream CDN-ről megy, a fizetés SimplePay ismétlődő fizetéssel, a számlázás Billingo-integrációval. A lassabb feladatok – számlakészítés, e-mail küldés – sorba állítva futnak, tehát egy nagyobb küldés nem lassítja be az oldalt. A hasonló rendszereket ugyanezen az alapon építjük, akkor is, ha csak weboldal készítésről van szó, és akkor is, ha összetett üzleti rendszerről.
Három dolog dönti el egy előfizetéses oldal sorsát, és egyik sem a megjelenés. Az első, hogy a második hónapban is megérkezik-e a pénz emberi munka nélkül – ha nem, akkor nem tagságot épített, hanem havi adminisztrációt. A második, hogy mi történik, amikor a fizetés elhasal: a türelmi idő és a jól megírt értesítő levél több tagot tart bent, mint bármilyen új funkció. A harmadik, hogy látja-e, kik használják ténylegesen a tartalmat – mert a lemondás nem a lemondás napján kezdődik, hanem három héttel korábban, amikor az illető abbahagyta a nézést.
Nézze meg a többi referencia munkánkat is, vagy ha van egy konkrét ötlete, vegye fel velünk a kapcsolatot. Az első konzultáció ingyenes, és a végén akkor is okosabb lesz, ha nem velünk dolgozik tovább.
Amit a tagsági, ismétlődő bevételre épülő rendszerek előtt a leggyakrabban kérdeznek tőlünk.
Ha olyan oldalt tervez, ahol nem egyszer kell eladni, hanem hónapról hónapra megtartani az ügyfelet, nézzük meg együtt, mi kell hozzá ténylegesen: fizetés, számlázás, tartalomvédelem és mérés. Az első egyeztetés ingyenes, és a végén tételes ajánlatot kap arról, melyik funkció mennyi.
Nézze meg a weboldal készítés szolgáltatásunkat, vagy hívjon minket a +36 70 430 8133 számon.
Készítsünk együtt egy hasonlóan sikeres projektet a Te vállalkozásodnak is!