Esettanulmány · Zárt közösségi platform

ECO Közösségi Portál

Hogyan lett egy 16 szintű képzési ranglétrát követő, 1000+ fős magyar önfejlesztési egyesületből tíz hét alatt egy auditálható, GDPR-kompatibilis, AI-asszisztáltan épített digitális otthon.

Megrendelő: ECO – Tudatosság Energiája EgyesületSzékhely: Göd, MagyarországFejlesztés: 2026.05.30 – folyamatban
39
adatbázis-tábla, 154 migráció
29
Edge Function — Backend-for-Frontend réteg
~10
hét a nulláról éles rendszerig
97,7%
AI-asszisztált commit — 260-ból 254

I. Vezetői összefoglaló

Egy fokozatrendszer, egyetlen digitális térben

Az ECO Közösségi Portál egy zárt, meghívásos community-platform, amely a Göd székhelyű ECO – Tudatosság Energiája Egyesület tagjainak fokozat-nyilvántartását, belső hírfolyamát, zárt csoportjait, szakértő-keresőjét és képzési naptárát integrálja egyetlen, auditálható rendszerbe.

A szervezet működésének gerince egy 16+ lépcsős, egymásra épülő modulrendszer (ECO 1–16, Karma, Formázás modulok és workshopok) — ez korábban nyilvánvalóan táblázatokban és privát csatornákon élt. A portál ezt egy szerepkör-alapú, naplózott, GDPR-megfelelő digitális rendszerbe konszolidálta.

A projekt technikai szempontból is figyelemre méltó: a 260 commit 97,7%-át AI-eszközök jegyzik — egy no-code AI platform építette fel a gyors prototípust, majd a Claude Code vitte végig a biztonsági hardening, a Backend-for-Frontend architektúra és a produkciós minőségbiztosítás munkáját. Az eredmény tíz hét alatt egy 39 táblás adatbázis, 29 szerveroldali endpoint és 40+ oldal — nem prototípus, hanem éles, karbantartott rendszer.

Első benyomás

A felület

Nyilvános regisztráció nincs — a portál kizárólag meghívásos, adminisztrátori jóváhagyáshoz kötött hozzáférés-igénylési folyamaton (AccessRequestPage) keresztül nyílik meg, amely már a belépés előtt rákérdez a jelölt meglévő ECO-fokozataira.

Bejelentkezési képernyő desktop nézetben
Bejelentkezés — a felület meleg, papír-szerű alapszíne és a zöld ECO-márkajelzés desktop nézetben.
Bejelentkezés mobil nézetben
Mobil nézet — teljes reszponzivitás, azonos komponensrendszerrel.
Hozzáférés igénylése űrlap
Hozzáférés igénylése — az űrlap már itt rögzíti a jelölt ECO-fokozatait (Konzulens / Oktató / Megalkotó), amit az admin külön hitelesít.
Adatkezelési tájékoztató
Adatkezelési tájékoztató — a GDPR-megfelelőség a tervezés szintjén, nem utólagos ráépítésként jelenik meg.

II. Projekt áttekintés

Háttér, célcsoport, célok

Háttér

Az egyesület minősítési rendszere tagokat ECO 1-től ECO 16-ig terjedő alapmodulokon vezet végig, kereszthivatkozásokkal kapcsolódó Karma- és Formázás-modulokkal, illetve workshopokkal (WS0–WS4), szigorú előfeltétel-láncolattal. A projekt első commitja 2026. május 30-án egy zöldmezős, AI-asszisztált projektként indult, és gyorsan egy teljes körű, védett belső portállá nőtte ki magát.

Célcsoport és szerepkörök

A rendszer kettős tengelyen szervezi a jogosultságokat: közösségi hierarchia (a tag képzési/felelősségi szintje) és technikai szerepkör (rendszeradminisztráció) — a kettő szándékosan elválik egymástól.

felhasználó
Profil, hírfolyam, zárt csoportok, recepttár, hibabejelentés
moderátor
+ Hírfolyam moderálása saját csoportokban
szervező
+ Naptár és esemény kezelése
mester
+ Tananyag, csoportkezelés, fokozat hozzáadása
admin / fejlesztő
Technikai szerepkör — teljes admin panel, illetve olvasási hozzáférés hibakereséshez (párhuzamos, nem hierarchikus)

Célok és sikerkritériumok

  • A táblázatalapú fokozat-nyilvántartás kiváltása auditálható, workflow-alapú digitális rendszerrel
  • Zárt, biztonságos közösségi tér — nyilvános internetes jelenlét nélkül, meghívásos hozzáféréssel
  • GDPR-megfelelőség beépítése tervezési szinten, nem utólagos ráépítésként
  • Moduláris backend, amely admin-eszközökkel (CSV-import, tömeges jelvényadás, vészhelyzeti jogvisszavonás) bővíthető külső fejlesztői beavatkozás nélkül

Idővonal

  1. 2026.05.30

    Első commit — AI-asszisztált projektindítás

  2. 2026. június

    Alapfunkciók: hírfolyam, csoportok, profil, admin panel váza

  3. 2026. július

    Fokozat-rendszer, jelvények, szakértő-kereső, recepttár

  4. 2026.08.03–07

    Intenzív biztonsági hardening: BFF-migráció, rate limiting, admin-recovery, jelszó-erősség riasztás

  5. 2026.08.10

    Éles, karbantartott rendszer, folyamatos finomítás alatt

III. Technikai architektúra

Rétegek: SPA → BFF → Supabase

A rendszer klasszikus háromrétegű felépítést követ, azzal a tudatos megszorítással, hogy a kliens soha nem éri el közvetlenül az adatbázist — minden kérés egy dedikált Backend-for-Frontend rétegen megy keresztül.

┌──────────────────────────────────────────────────────────────┐
│                        FRONTEND (SPA)                          │
│  React 18 + TypeScript + Vite 5 + React Router 6                │
│  Tailwind CSS + shadcn/ui (Radix)  ·  TanStack Query            │
│  react-hook-form + Zod  ·  next-themes (light / dark)            │
└─────────────────────────────┬────────────────────────────────┘
                               │ supabase.functions.invoke()
                               │  — SOHA nincs közvetlen DB hívás
                               ▼
┌──────────────────────────────────────────────────────────────┐
│               BACKEND-FOR-FRONTEND · 29 Edge Function           │
│   api-profiles · api-groups · api-recipes · api-notifications   │
│   api-grades · api-training · api-storage · api-admin  (+21)    │
└─────────────────────────────┬────────────────────────────────┘
                               │ service_role kliens
                               ▼
┌──────────────────────────────────────────────────────────────┐
│                 SUPABASE · Postgres + Auth + Storage             │
│   39 tábla · Row-Level Security · pg_cron ütemezett feladatok    │
│   JWT auth (getClaims)  ·  Storage (signed URL)                  │
└──────────────────────────────────────────────────────────────┘

A BFF-döntés

Minden kérés egységes biztonsági csővezetéken fut végig, dokumentálva a projekt belső architektúra-dokumentációjában:

Request → CORS (origin allowlist) → Zod séma-validáció → JWT auth
        → Rate limiting (user + function) → Szerepkör-ellenőrzés
        → Üzleti logika (service_role kliens)

Ez a minta tudatos elmozdulás a „kliens közvetlenül hívja a Supabase RLS-t” alapértelmezéstől egy központosított API-réteg felé — a Row-Level Security itt csak másodlagos védelmi vonal.

Adatbázis-séma (kivonat, 39 táblából)

┌───────────────┐        ┌────────────────────┐      ┌──────────────┐
│   profiles    │──1:1───│    user_roles       │      │ user_grades  │
├───────────────┤        ├────────────────────┤      ├──────────────┤
│ id (PK, auth) │        │ user_id (FK)        │      │ user_id (FK) │
│ full_name     │        │ role (enum)         │      │ modul/system │
│ theme, badges │        └────────────────────┘      │ level, status│
└───────┬───────┘                                     └──────┬───────┘
        │                                                     │
        │              ┌────────────────────┐          ┌──────▼───────┐
        ├──1:N─────────│  group_memberships  │          │ grade_audit_ │
        │              └─────────┬──────────┘          │     log      │
        │                        │                       └──────────────┘
┌───────▼──────┐          ┌──────▼──────┐        ┌───────────────┐
│ group_posts  │──1:N─────│   groups     │        │ expert_reviews │
├──────────────┤          └─────────────┘        ├───────────────┤
│ post_comments│                                  │ professional_ │
│ post_reactions│                                 │  profiles     │
└──────────────┘                                  └───────────────┘

+ access_requests · audit_log · security_events · bug_reports
+ recipes / recipe_ratings / recipe_favorites · training_events
+ notifications · user_badges · gdpr_requests · file_scan_results …

A szerepkörök szándékosan külön táblában (user_roles) élnek, nem a szerkeszthető profiles táblán belül — privilege-escalation elleni védelem.

Fejlesztői eszközök

KategóriaEszközök
NyelvTypeScript (frontend + Deno edge functions)
BuildVite 5 (SWC plugin), Bun (CI), npm (lokálisan)
TesztelésVitest + Testing Library (unit), Playwright (E2E)
Lint / FormatESLint 9 (flat config) + typescript-eslint
CIGitHub Actions — advisory bundle-size riport minden PR-en
DeploymentFelhőalapú menedzselt hosting (Supabase-backend), preview + production domain

IV. Funkció-leltár

Amit a portál valóban tud

Frontend

  • Hitelesítés: e-mail/jelszó login, kötelező e-mail-megerősítés, 60 perces inaktivitás utáni automatikus kijelentkezés, session-szinkronizáció böngészőfülek között, kényszerített onboarding (jelszóváltás + témaválasztás)
  • Hírfolyam: posztolás, reakciók, kommentek, említés-rendszer, poszt-rögzítés moderátoroknak
  • Zárt csoportok: csoport-specifikus hírfolyam, tananyag-feltöltés, meghívásos tagság
  • Fokozat- és modulrendszer: 16 ECO alapmodul + Karma/Formázás kereszt-modulok + workshopok, előfeltétel-validáció, valós idejű szinkronizáció
  • Jelvény- / gamifikációs rendszer: automatikus és manuális jelvények (pl. 5 szintű „Szakember” csoport, DB-trigger vezérelt), jelvény-katalógus
  • Szakértő-kereső: AI-indexelt profilok (Gemini-alapú indexelés), értékelési rendszer és ranglista
  • Recepttár: CRUD, kedvencek, értékelés, napi megtekintés-számláló, ranglista
  • Képzési naptár: jogosultság-alapú részvétel
  • Admin központ: 15 alpanel — felhasználók, kérelmek, fokozatok, receptek, szakemberek, jelvények, csoportok, események, hibajegyek, értesítések, audit, GDPR, riportok, biztonság
  • Teljesítmény: minden route lazy-loaded, cache-elt szerver-state, bundle-size riport minden PR-en

Backend / API

  • Action-alapú BFF API 29 Edge Function-ön, 6 kategóriában: BFF (8), admin-only (7), speciális/IT-admin (3), publikus/webhook (4), cron/belső (5), előnézeti/dev (2)
  • Rate limiting: in-memory fixed-window, felhasználó + function szerint, külön olvasási/írási limittel
  • Fájlfeltöltés + víruskeresés: signed URL, VirusTotal-integráció, aszinkron scan-eredmény
  • E-mail alrendszer: tranzakciós sablonok, sor-feldolgozás, heti összefoglaló, leiratkozás- és suppression-kezelés
  • Audit & biztonsági napló: minden érzékeny művelet nyomon követhető
  • GDPR workflow: kérelem-tábla, hozzájárulás-napló, admin GDPR-panel

V. Biztonsági architektúra

„Nem díszdokumentum”

A projekthez tartozó 21 KB-os biztonsági inventory explicit módon így jellemzi önmagát — ez a hozzáállás a kódban is tetten érhető.

Enforcement rétegek valós megbízhatósága — a saját dokumentáció önkritikus megfogalmazásában: frontend feltételes renderelés = csak UX; Row-Level Security = másodlagos védelem; Edge Function requireAuth() / requireAdmin() shared guard = elsődleges, megbízható enforcement (24/29 function lefedve).

Kiemelt hardening-intézkedések

  • Session sessionStorage-ban (nem perzisztens), 60 perces inaktivitási timeout
  • CORS: nincs wildcard origin, dinamikus allowlist-ellenőrzés minden function-ben
  • emergency-revoke — vészhelyzeti jogosultság-visszavonás admin vészgombbal
  • admin-recovery — JWT nélküli, de IP-allowlistával és per-e-mail/per-IP rate limittel védett admin-helyreállítási csatorna
  • Sikeres bejelentkezések szerveroldali logolása (security_events)
  • 90 napos biztonsági esemény-megőrzés, napi automatizált pg_cron takarítással
  • Jelszó-erősség riasztás — az egyik legutóbbi módosítás a rendszerben

VI. AI-asszisztált fejlesztés

Ki írta a kódot?

A git-előzmények önmagukban is esettanulmány-témát adnának: a 260 commitból 254 (97,7%) Claude Code-dal készült, mindössze 6 származik közvetlenül emberi fejlesztőtől.

Claude Code
254 · 97,7%
Emberi fejlesztő
6 · 2,3%

Ez a munkamegosztás a modern AI-asszisztált fejlesztés két fázisát tükrözi:

  • Gyors, prompt-alapú prototípusépítés: UI-komponensek, oldalstruktúra, Supabase-integráció és CRUD-funkciók gyors, iteratív, természetes nyelvi utasításokból történő felépítése
  • Mélységi hardening: a projekt belső architektúra- és biztonsági dokumentációjának tanúsága szerint a BFF-migráció, a rate limiting és az auth-guard központosítás már célzott, dokumentált mérnöki munka — nem generatív „vibe coding”, hanem tudatos refaktorálási hullám

Ez a kétfázisú modell — gyors AI-generált MVP, majd emberi felügyelet alatt álló biztonsági hardening, mindkettő Claude Code-dal — reális mintát ad arra, hogyan lehet éles, érzékeny adatokat kezelő rendszert felelősségteljesen, mégis rendkívül rövid idő alatt piacra vinni.

VII. Kihívások és megoldások

Amivel meg kellett küzdeni

KihívásMegoldás
A „gyors AI-prototípus → éles rendszer” átmenet biztonsági kockázataiTeljes BFF-migráció — minden adatelérés Edge Function mögé kerül
16+ szintű, kereszthivatkozásokkal teli képzési modulrendszer digitalizálásaKözpontosított modul-konfiguráció + előfeltétel-validációs logika, külön audit-napló fokozatváltásra
Privilege escalation kockázataSzerepkörök külön táblában, nem a szerkeszthető profil-táblán
Admin-fiók helyreállítás JWT-mentes forgatókönyvbenIP-allowlist + technikai szerepkör-ellenőrzés + perzisztens rate limit
Fájlfeltöltések biztonságaSigned URL + aszinkron VirusTotal-integráció
Dokumentáció hiánya egy gyorsan induló, AI-generált projektbenUtólagos, de szisztematikus dokumentáció: function- és biztonsági inventory, 300+ soros manuális teszt-lista

VIII. Eredmények és tanulságok

Mi jött ki belőle

10 hét
nulláról éles, auditált rendszerig
40+
frontend oldal, 15 admin alpanel
3
karbantartott technikai dokumentum
  • Teljes funkcionális lefedettség egy komplex, valós szervezeti igényre — tagfelvétel → fokozat-nyilvántartás → közösségi interakció → adminisztráció, egyetlen zárt rendszerben
  • Auditálhatóság: minden érzékeny művelet naplózva és admin felületen visszakereshető
  • GDPR-megfelelőség tervezési szinten, nem utólagos ráépítésként

Tanulságok

  • Az AI-asszisztált fejlesztés legnagyobb üzleti értéke nem a prototípusnál, hanem az azt követő, célzott biztonsági és architekturális refaktorálásban keletkezett
  • A BFF-minta jól skálázódik AI-generált kódbázisokon is — egy explicit, dokumentált architekturális szabály könnyen betartatható és auditálható marad gyors iteráció mellett is
  • A „nem díszdokumentum” hozzáállás valós, karbantartott referenciává teszi a biztonsági dokumentációt
  • A kettős szerepkör-tengely (közösségi hierarchia vs. technikai jogosultság) jó minta olyan szervezeteknek, ahol a képzési rang és a rendszeradminisztrációs jog elvileg és gyakorlatilag is elválik
Összegzés — az ECO Közösségi Portál meggyőző példa arra, hogyan lehet AI-asszisztált eszközökkel — no-code prototípusépítéssel kombinált, célzott mérnöki hardeninggel — rövid idő alatt egy komplex, érzékeny adatokat kezelő, biztonságos és auditálható belső platformot létrehozni.

Az esettanulmány a repository statikus elemzése, a git-előzmények, a docs/ alatti és a projekt belső architektúra-dokumentációja, valamint a helyi fejlesztői szerveren renderelt éles UI screenshotok alapján készült · 2026.08.10

// Kezdjük el

Kérj visszahívást — beszéljük át, mit építsünk neked

Írd meg az elérhetőségeidet, mi visszahívunk, és átbeszéljük, milyen modulokra van szükséged — weboldal, foglalás, fizetés, ügyfél-CRM vagy zárt közösségi felület. AI-val gyorsított fejlesztéssel, a piaci árak töredékéért.