← Vissza a cikkekhez
technology

A mi stack-ünk — Angular, Firebase, Cloud Functions

ZS-Soft
#featured

Minden szoftvercégnek van egy bevált technológia-csomagja, amit a napi munkájában használ. A miénk az Angular + Firebase + Cloud Functions/NestJS. Ez nem véletlen választás, és nem is divat-követés. Évek tapasztalata, sok elvégzett projekt vezetett el oda, hogy pontosan tudjuk, mit miért használunk.

A kevesebb néha több

A szoftveriparban olyan eszközrobbanás zajlik, hogy lehetetlen mindenben naprakésznek lenni. Egy fejlesztőcég vagy kiváló néhány dologban, vagy átlagos sok dologban. Mi az elsőt választottuk. A választott technológiáink mind évek óta benne vannak a munkánkban. Mélyen ismerjük őket — tudjuk, hol vannak a határai, mire jó, mire nem. Ennek az az eredménye, hogy gyorsabban fejlesztünk, kevesebb hibát ejtünk, és pontosabban tudjuk árazni a munkánkat.

Kis- és középvállalkozásokra szabva

A célközönségünk szándékosan szűk: kis- és középvállalkozások, 5–50 fős cégek. Szűkebb pénzügyi keret, közepes bonyolultság, hosszú élettartam-igény. A választásunkat pontosan ehhez a környezethez igazítottuk. Egy banki rendszerhez nem a mi megoldásunk a legjobb. Egy nagy közösségi felülethez sem. De egy átlagos magyar KKV-nak, aki saját üzleti szoftvert szeretne — átláthatóan, megbízhatóan, kedvező havi költségekkel —, nehéz nálunk megfelelőbb partnert találni.

Az ígéretünk

  • Modern, hosszú életű eszközök — nem múló trend. Mind a négy fő elem (Angular, Firebase, NestJS, Google Cloud) világszerte használt szabvány.
  • Átlátható havi költségek — a használat-alapú díjazás miatt a kis projektek havi pár ezer forintot „esznek”. Egy klasszikus megoldás minimum havi 15–30 ezer.
  • Bővíthetőség újraépítés nélkül — ha a vállalkozásod nő, a szoftver együtt nő veled. Nem kell mindent újraírni 2 év múlva.
  • Cserélhető fejlesztők — minden elem nyilvános szabvány. Ha váltani kell, nem leszel hozzánk kötve.

A felület — amit a kollégáid és az ügyfeleid látnak — Angular-ral épül. Ez a Google által karbantartott keretrendszer, amit nagy cégek (banki, biztosítói, egészségügyi) is használnak. Megbízható, stabil, és kifejezetten alkalmas hosszú életű üzleti alkalmazásokhoz.

Miért Angular, és nem mondjuk React?

Két fő ok: a kiszámíthatóság és a teljes csomag. A kiszámíthatóság: az Angular egy keretrendszer, ami pontos rendet ad. Minden komponens, minden szerviz meghatározott szerkezet szerint épül. Ha új fejlesztő veszi át a projektet, gyorsan beleszokik. Egy React-projekt többször „kreatív”: minden csapat máshogy építi fel, ami egy karbantartás-átvételnél nehézséget okoz.

A teljes csomag: az Angular-ban benne van az útvonalkezelő, az űrlapkezelő, a HTTP-kliens, a tesztelési keretrendszer, a fordító. Egy React-projektnél ezeket külön kell összeválogatni — és minden ilyen választás egy újabb kockázat. Velünk a vállalkozó megspórolja ezeket a döntéseket.

A 2024–26-os Angular megújulása
Sokan még a 2018-as Angular képét hordozzák magukban: nehézkes, bonyolult, sok sablonkód. Ez ma már nem igaz. A 2024 utáni Angular (Signals, önálló komponensek, új vezérlő szintaxis, zoneless) sokkal egyszerűbb és gyorsabb — szinte React-szintű egyszerűséggel, miközben a kiszámíthatóság megmaradt.

Konkrét előnyök egy KKV-szoftvernek

  • Hosszú életű projektekhez ideális — az Angular minden 6 hónapban kiad új változatot, automatikus átállást segítő eszközökkel (ng update). Egy 5 éves projektnél óriási segítség.
  • Erős TypeScript-támogatás — sokkal kevesebb futásidejű hiba, mert a fordító már a kódoláskor jelzi a problémákat.
  • Beépített teszt-szemlélet — minden generált fájl mellé tesztkeret jön. A tesztelhetőség nem utógondolat.
  • Erős kész komponens-csomagok — Angular Material, PrimeNG, és más jól dokumentált csomagok gyorsítják a fejlesztést.

Egy ugyanazon Angular-projekt háromféleképpen tud „futni”: SPA, SSR vagy SSG. Mindhárom más célra való. Ezt projekt-szinten választjuk meg, néha keverve is használjuk őket.

SPA — Single Page Application

A klasszikus modern weboldal: a böngésző egyszer betölti az alkalmazást, és onnan minden navigáció pillanatnyi — nem kell újratölteni az oldalt. Olyan, mint egy asztali alkalmazás, csak böngészőben.

Mikor választjuk?
Belső felügyeleti felületek, ügyfél-nyilvántartó rendszerek, kimutató felületek. Ahol a felhasználó bejelentkezik, és sokáig az alkalmazásban marad. A keresőkben való megjelenés nem fontos, mert csak bejelentkezve elérhető.

SSR — Server-Side Rendering

A szerver előre legyártja az oldal HTML-jét, a böngésző megkapja és megjeleníti — és csak utána tölti be a JavaScript-et. Ezzel a kezdeti betöltés gyorsabb, és a Google keresőrobotjai is jól indexelik az oldalt.

Mikor választjuk?
Olyan szoftvernél, ahol van nyilvános rész (terméklisták, blogcikkek, márkaoldal), amit a Google-nek látnia kell, de van egy bejelentkezett alkalmazás-rész is. Pl. webshop, foglalási rendszer nyilvános felülettel.

SSG — Static Site Generation

Az oldalakat előre, fordítás-időben legyártjuk — és kész HTML-fájlokat szolgálunk ki. Nincs szükség szerverre, nincs adatbázis-lekérdezés. A leggyorsabb és legolcsóbb megoldás.

Mikor választjuk?
Marketing-oldalak, blogcikkek, dokumentációk, kampány-oldalak. Bármi, ami ritkán változik, és ahol a sebesség és a keresőkben való megjelenés a legfontosabb. (Ez a blog is így működik.)

A kombinált megközelítés

Egy átlagos KKV-projektnél gyakran kombináljuk a kettőt vagy hármat. Például: a céges weboldal és a blogcikkek SSG-vel (gyors és olcsó), a bejelentkezett felügyeleti felület SPA-val (élő, kattintós), és ha van nyilvános szolgáltatás-rész (pl. online időpontfoglalás), az SSR-rel (jól indexelhető). Mind egy Angular-projektben.

A felület mögött áll a háttér — ahol az adatok tárolódnak, a logika fut, és ahol a fizetős szolgáltatások bekötése történik. Erre a célra a Google Firebase felületét használjuk, ami egy KKV-méretű szoftvernek a legjobb mérleget adja: erős, megbízható, és a használat-alapú díjazás miatt a kis projekteknek szinte ingyenes.

Mi a Firebase?

A Firebase a Google felhő-szolgáltatásának egy KKV-barát átfogó csomagja. Több szolgáltatást egyesít egy felületen: adatbázis (Firestore, SQL Connect), fájltárolás (Storage), bejelentkezés (Authentication), szerver-funkciók (Cloud Functions), webhosting. Mind egy felügyeleti felületen.

Miért Firebase, és nem saját szerver?

  • Nincs szerver-üzemeltetés — a Google gondoskodik a gépekről, a biztonsági frissítésekről, a tűzfalakról. Nem kapsz hajnali háromkor SMS-t, hogy „leállt a szerver”.
  • Magától nő veled — ha holnap 10× annyi felhasználód lesz, a Firebase elviszi. Egy saját szerver ezen elbukik.
  • Beépített biztonsági mentés — automatikus, naponta, többszörözve.
  • Csak a használat után fizetsz — egy ritkán használt felügyeleti felület havi költsége akár pár száz forint. Egy saját szerver minimum havi 10–15 ezer.
  • Élő frissítés — a Firestore valós időben szinkronizál, ami sok funkciónál szinte ingyen ad „élő” érzést.

A Firestore a Firebase NoSQL adatbázisa — a gyors fejlesztés, az élő szinkronizáció, és a használat-alapú díjazás kulcsa. Az esetek 70%-ában ez a fő adatbázis, amit egy KKV-projektben használunk.

Mi az a NoSQL — és miért jó?

A klasszikus adatbázisok (PostgreSQL, MySQL) szerkezetűek: minden ügyfélnek ugyanaz a mezőszáma, minden megrendelésnek pontosan ugyanazok a tulajdonságai. A NoSQL — mint a Firestore — rugalmasabb: dokumentumokban tárol, és minden dokumentum lehet kissé más felépítésű.

Ez azért jó, mert egy szoftver-fejlesztés során az adatok szerkezete sokat változik. Egy NoSQL adatbázisban új mezőt hozzáadni egy adathoz pár perc. Egy SQL-adatbázisnál ez gyakran komoly átalakítás, fél napos leállással.

A Firestore kiemelt előnye: élő frissítés

A Firestore képes élőben szinkronizálni a változásokat. Ha valaki a recepciónál felvesz egy új ügyfelet, az a hátsó szobában futó képernyőn azonnal megjelenik — anélkül, hogy frissíteni kellene az oldalt, anélkül, hogy bonyolult, ismétlő-lekérdező kódot kéne írni. Ez sok KKV-szoftver esetében aranyat ér: belső felügyeleti felületek, naptárak, csomag-követések — minden, ahol több ember dolgozik egy időben.
A gyakorlati hatás
Egy „élő kimutató felület” megépítése egy klasszikus szerver-megoldással egy hét munka — Firestore-ral pár óra. Ez nemcsak gyorsabb fejlesztést jelent, hanem azt is, hogy a vállalkozó megkapja olyan funkciók kapcsán is, amiket egyébként túl drágának tartott volna.

Mikor használjuk a Firestore-t?

  • Belső felügyeleti felületek, ahol több kolléga dolgozik egy időben
  • Élő naptárak, foglalási rendszerek
  • Kimutató felületek élő mutatókkal
  • Csomag-követés, megrendelés-állapotok
  • Chat-szerű kommunikáció
  • Általában: minden, ami gyorsan változó, többfelhasználós, és nem igényel bonyolult kapcsolatokat az adatok között

Nem mindenre jó a NoSQL. Vannak olyan szoftverek, ahol a klasszikus, táblázatos adatbázis-szerkezet jobb választás — különösen, ha sok kapcsolat van az adatok között, vagy ha bonyolult kimutatások kellenek. Erre való a Firebase SQL Connect szolgáltatása.

Mi a SQL Connect?

A SQL Connect a Firebase 2025 őszén véglegesen elérhetővé tett szolgáltatása, ami egy felügyelt PostgreSQL adatbázist biztosít — vagyis a klasszikus, megbízható SQL-adatbázist, amit a Google üzemeltet és gondoz. Te csak használod.

Mikor választjuk az SQL Connect-et a Firestore helyett?

  • Bonyolult kapcsolatok az adatok között — pl. egy építőipari rendszerben: ügyfél → projekt → kivitelező → anyagok → számlák.
  • Bonyolult kimutatások, statisztikák — havi forgalmi, ügyfél-szegmens elemzések. Az SQL-nek erre vannak erős eszközei.
  • Pénzügyi vagy raktári mozgások — pl. két számla közötti pénzátutalás, ahol pontosan biztosnak kell lennie, hogy mindkét oldal megtörtént vagy egyik sem.
  • Költözés más rendszerről — ha egy meglévő SQL-rendszerről jövünk át, sokszor egyszerűbb az SQL-formát megtartani.

A kombinált használat

Nem kell választani egyiket vagy másikat. Egy projektben gyakran mindkét adatbázist együtt használjuk: az alapvető bonyolult adatokat (ügyfelek, projektek, számlák) SQL Connect-ben, az élő, gyorsan változó dolgokat (értesítések, élő-állapotok, chat) Firestore-ban. Mindkettő ugyanahhoz a háttérhez kapcsolódik.
A 2025-ös változás
A SQL Connect 2025-ben lett véglegesen elérhető (korábban Data Connect néven futott, előzetes változatban). Először lehet a Firebase felületen belül teljes értékű PostgreSQL adatbázist használni, anélkül, hogy külön felhő-szolgáltatóhoz kéne menni érte.

A Firebase-csomag két másik fontos eleme: a Storage a fájlok kezelésére, és az Authentication a felhasználói belépésre. Mindkettő olyan funkció, amire szinte minden szoftverben szükség van, és amit klasszikusan komoly munkával kellene saját kézzel megépíteni.

Firebase Storage — fájlok tárolása

Egy felhőben élő fájltároló, ahova a felhasználók képet, dokumentumot, videót tölthetnek fel. Pl. egy építőipari rendszernél a helyszíni fotók, az ajánlatok PDF-ben, az aláírt szerződések.

Konkrét előny
Egy saját fájltároló megépítése (biztonsággal, hozzáférés-szabályozással, biztonsági mentéssel) hetekbe telik. A Storage-dzsal pár óra alatt működik. Plusz a fájlok darabonként is hozzáférhetők, jogosultságokkal — pl. egy ügyfél csak a saját dokumentumait láthatja.

Firebase Authentication — belépés

A felhasználói belépés kezelése: e-mail+jelszó, Google-fiók, Apple-fiók, telefonszám-alapú belépés, SMS-megerősítés. Mindezt kész állapotban kapod, a Google biztonsági szabványaival.

Konkrét előny
Egy saját bejelentkezési rendszer biztonságos megépítése 2–3 hét munka — és sok kockázat (jelszó-tárolás, próbálkozások szűrése, behatolási kísérletek elleni védelem). Az Authentication ezt a kockázatot leveszi a vállalkozóról. A Google szabványaival és európai adatvédelmi megfeleléssel.

Nem minden logika egyszerű. Vannak feladatok, amik bonyolultabb szerver-oldali kódot igényelnek — pl. NAV-számla előállítása, e-mail-küldés, fizetés-feldolgozás, AI-modell lekérdezése. Erre a célra a Firebase Cloud Functions szolgáltatást használjuk, amiben NestJS-keretrendszerben írjuk a kódot.

Mi az a Cloud Functions?

A Cloud Functions a Firebase azon szolgáltatása, ami szerver nélkül (serverless módon) futtatja a háttér-kódot. Nincs külön szerver, amit fenn kell tartani. A kód csak akkor fut, amikor szükség van rá — pl. egy felhasználó kéri, vagy egy esemény kiváltja. A használat alapján fizetsz, ami egy KKV-projektnél nagyon olcsó.

Miért NestJS?

A Cloud Functions önmagában elég egyszerű — egy JavaScript-függvény, ami kérésre lefut. Ez egy nagyobb projekten kaotikussá válik. A NestJS egy keretrendszer, ami a Cloud Functions tetejére rendet ad: modulok, függőség-befecskendezés, jelölő szintaxis, beépített ellenőrzések. Olyan ez, mint az Angular a felület-oldalon — egy bevált rend, ami nagy projekteken is áttekinthető marad.

Konkrét NestJS-feladatok

  • NAV-szabványos számla előállítása és bejelentése
  • Számlázz.hu vagy Billingo bekötése
  • E-mail-küldés (Mailgun, SendGrid, Brevo)
  • SMS-küldés (Twilio, BulkSMS)
  • Fizetés-feldolgozás (Stripe, Barion, K&H, OTP)
  • Bonyolult adatfeldolgozás, ütemezett feladatok
  • AI-szolgáltatások lekérdezése (OpenAI, Google Vertex AI)
  • Külső szolgáltatások bekötése (Google Calendar, futárszolgálatok)
Egy fontos eszközünk: a NestJS Swagger-bekötés
A NestJS automatikusan le tudja írni a saját felületét (API-ját) egy OpenAPI nevű szabvány szerint. Ebből pedig automatikusan tudunk Angular-szolgáltatásokat előállítani a felület-oldalra. A háttér és a felület között nincs félreértés a kommunikációban — minden mező, minden típus pontosan ugyanaz a két oldalon. Egy ZS-Soft sajátosság, ami sok hibalehetőséget kiküszöböl.

És Cloud Run?

A nagyobb, hosszabb futású feladatokhoz (pl. egy bonyolult AI-modell, képfeldolgozás, videó-átalakítás) a Cloud Run szolgáltatást használjuk — ez egy testvér-szolgáltatás, ami nem 60 másodperces függvényeket futtat, hanem akár hosszabb folyamatokat is. Ugyanúgy szerver nélkül működik, használat-alapú díjazással.

Angular ↔ Firestore — élő felület

Az Angular Signal-alapú reaktivitása és a Firestore élő-szinkronizációja egy különleges párost alkot. Az Angular felület közvetlenül „feliratkozik” a Firestore-ra, és minden adatváltozás magától megjelenik a képernyőn — anélkül, hogy bármilyen extra kódot kellene írni. Egy klasszikus megoldáson ez napokig tartó munka. Itt percek alatt működik.

NestJS ↔ Angular — egységes típus-rendszer

A NestJS automatikusan le tudja írni a saját felületét (API-ját) egy OpenAPI nevű szabvány szerint. Ebből pedig automatikusan állítunk elő Angular-szolgáltatásokat a felület-oldalra. Eredmény: a háttér és a felület között nincs félreértés — minden mező, minden típus pontosan ugyanaz a két oldalon. Kevesebb hiba, gyorsabb fejlesztés.
Az entitás-motor
Ezen a típus-egyesítésen felül kifejlesztettünk egy saját entitás-motort, ami egyetlen entitás-leírásból magától előállítja a NestJS adat-osztályait, az OpenAPI-leírást, és az Angular TypeScript-szolgáltatásokat. Egy mező hozzáadása vagy módosítása így egyetlen helyen történik, és minden egyébbel magától frissül.

Firestore + SQL Connect — együtt a két világ

Egy projektben gyakran mindkét adatbázist együtt használjuk: az alapvető bonyolult adatokat (ügyfelek, projektek, számlák) SQL Connect-ben, az élő, gyorsan változó dolgokat (értesítések, élő-állapotok, chat) Firestore-ban. Mindkettő ugyanahhoz a Firebase-projekthez tartozik, ugyanazzal a belépéssel, ugyanazzal a biztonsági szabályrendszerrel. Minden funkciónak a számára legmegfelelőbb adattároló jut — nem kell kompromisszumokat kötni.

Felhő-natív, kezdettől fogva

Az általunk választott minden eszköz a felhőre épül. Nemcsak azt jelenti, hogy „a felhőben fut” — hanem azt, hogy a felhő-szolgáltatások erősségeit (magától növekedés, automatikus mentés, használat-alapú díjazás) kezdettől fogva kihasználja. Ha holnap a forgalom megduplázódik, semmit nem kell csinálni. Ha lecsökken, a költségek magától csökkennek.

Ha velünk dolgozol, nemcsak egy szoftvert kapsz — egy egész szemléletmódot is. Néhány konkrét ígéret, amit a választásunk lehetővé tesz, és amiket a napi munkánkban betartunk.

  • Modern, stabil eszközök — az Angular és a Firebase nem múló divat. 8–10 éve léteznek, a Google folyamatosan fejleszti őket. A projekted 5–10 év múlva is karbantartható lesz.
  • Átlátható havi költségek — a Firebase használat-alapú díjazása miatt egy kis projekt havi költsége akár pár ezer forint. Egy klasszikus szerver-megoldás minimum havi 15–30 ezer.
  • Magától nő veled — ha holnap 10× annyi felhasználód lesz, nem kell semmit átépíteni. A Firebase és a Cloud Run magától együtt nő veled.
  • Élő frissítés ott, ahol kell — a Firestore élő-frissítése sok funkciónál szinte ingyen-extra.
  • Automatikus biztonsági mentés — a Google készíti és tárolja. Nem kell rá külön szerződni.
  • Európai szabványos belépés — az Authentication ugyanaz a rendszer, amit a Google saját szolgáltatásai is használnak. GDPR-megfeleléssel.
  • Egységes típus-rendszer — a háttér és a felület között nincs félreértés. Egy mező hozzáadása egy helyen történik.
  • Cserélhető fejlesztők — minden elem, amit használunk, nyilvános szabvány. Ha valamiért váltani kell, a projekted nincs hozzánk kötve.
A „beragadás” elleni elv
A „cserélhető fejlesztők” pont különösen fontos számunkra. Egy fejlesztőcég, aki a projekted kódját egyedi, csak általa ismert módon írja meg, hosszú távra magához láncol téged. Mi szándékosan szabványos szerkezetet építünk — még akkor is, ha ez a mi szempontunkból kevésbé „egyedi”, mert hosszú távon ez a vállalkozónak jó.

Nem akarjuk azt állítani, hogy ez mindenre jó. Vannak olyan projektek, amikre más megoldás megfelelőbb — fontos őszintén elmondani, mert egy KKV-vezető megérdemli az átlátható tájékoztatást.

Amikor nem javasoljuk a Firebase-t

  • Ha az adatoknak Magyarországon kell maradniuk jogi okból — pl. bizonyos egészségügyi, banki, gyermekvédelmi szabályozások. Ekkor magyar vagy európai szolgáltatóra megyünk át.
  • Nagyon nagy, állandó forgalom — havi sok millió kérés esetén egy saját szerverpark hosszú távon olcsóbb lehet. De ez a KKV-szektorban ritka.
  • Különleges adatszerkezet — egyes ipari szoftverekhez (pl. CAD, képfeldolgozás, ipari mérőrendszerek) más adattároló jobban illik.

Amikor nem javasoljuk az Angular-t

  • Egyszerű marketing-oldal — egy ötoldalas céges weboldalhoz nem kell Angular. Egy egyszerű HTML+CSS, vagy egy WordPress jobb választás.
  • Egyszemélyes prototípus — gyors kísérletezésre egy egyszerűbb keretrendszer (Vue.js, Svelte) gyorsabban indul.
A becsületes elv
Egy fejlesztő, aki azt mondja, hogy „mindenre ez a legjobb megoldás”, vagy nem őszinte, vagy nem ismeri a többi lehetőséget. Mi tudjuk, mire való a mi választásunk — és tudjuk, mire nem. Ha egy projekt nem illik bele, ezt megmondjuk, és más utat javaslunk.

Ez a cikk egy bemutatkozás volt — a teljes munkánk áttekintése. A blogon a következő cikkekben minden elemet külön, részletesen is elmagyarázunk, mert úgy gondoljuk, hogy egy átlátható partnerség az alapja annak, hogy hosszú távon sikeres legyen a közös munka.

Részletes cikkek az egyes elemekről

  • Angular áttekintés — a keretrendszer 2024–26-os megújulása, Signals, zoneless, önálló komponensek
  • Firebase felület áttekintés — a teljes csomag bemutatása
  • Firestore adatszervezés — hogyan tervezzünk adatszerkezetet
  • Firebase SQL Connect — a Postgres-megoldás részletei
  • Firebase Security Rules — adat-szintű biztonsági szabályok
  • Firebase Hosting — a felhő-szolgáltatás
  • Firebase Authentication — felhasználó-kezelés és belépés
  • Firebase Cloud Functions — szerver nélküli háttér
  • Cloud Run — hosszabb feladatok futtatása
  • GraphQL bevezetés — a modern lekérdezési stílus

A választott eszközök nem önmagukért vannak. Azért vannak, hogy az ügyfél jó szoftvert kapjon — gyorsan, megbízhatóan, és hosszú távon. Mi azokat választottuk, amik ezt a legjobban szolgálják.


Beszélgessünk egy projektről
Ha van egy projekt-ötleted, vagy kíváncsi vagy arra, hogy mit tudunk építeni neked ezekkel az eszközökkel, szívesen átbeszéljük együtt. Egy kötetlen, díjmentes beszélgetéssel indul. info@zs-soft.hu
Vissza az elejére