{"id":40696034,"url":"https://github.com/baueri/kozossegek-hu","last_synced_at":"2026-01-21T11:36:05.827Z","repository":{"id":177597193,"uuid":"658683445","full_name":"baueri/kozossegek-hu","owner":"baueri","description":"A kozossegek.hu közösségkereső portál forráskódja","archived":false,"fork":false,"pushed_at":"2025-04-17T08:02:54.000Z","size":22082,"stargazers_count":1,"open_issues_count":14,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-17T22:49:13.307Z","etag":null,"topics":["catholic","church","groups","hungarian","kozosseg","magyar"],"latest_commit_sha":null,"homepage":"https://kozossegek.hu","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/baueri.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-06-26T09:31:58.000Z","updated_at":"2025-04-17T08:02:58.000Z","dependencies_parsed_at":"2024-09-09T20:17:34.401Z","dependency_job_id":"cdd75ce1-d595-4747-9b1f-dcca02db03d5","html_url":"https://github.com/baueri/kozossegek-hu","commit_stats":null,"previous_names":["baueri/kozossegek-hu"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/baueri/kozossegek-hu","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baueri%2Fkozossegek-hu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baueri%2Fkozossegek-hu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baueri%2Fkozossegek-hu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baueri%2Fkozossegek-hu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/baueri","download_url":"https://codeload.github.com/baueri/kozossegek-hu/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baueri%2Fkozossegek-hu/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28632772,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-21T04:47:28.174Z","status":"ssl_error","status_checked_at":"2026-01-21T04:47:22.943Z","response_time":86,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["catholic","church","groups","hungarian","kozosseg","magyar"],"created_at":"2026-01-21T11:36:05.742Z","updated_at":"2026-01-21T11:36:05.818Z","avatar_url":"https://github.com/baueri.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# kozossegek.hu\n\nA kozossegek.hu egy katolikus közösségkereső portál, amelyet azért hoztunk létre, hogy segítsünk mindenkinek \nmegtalálni a közösségét akárhol is éljen, tanuljon, vagy dolgozzon, nemtől, kortól, életállapottól függetlenül.\n\nA projekt publikussá tételével szeretnénk másokat is bevonni a közös munkába, fejlesztésbe, hogy még hatékonyabb\nlegyen az oldal karbantartása, az újdonságok elkészítése, esetleg mások ötleteit is meg tudjuk valósítani.\n\n**Minden építő jellegű ötletet, fejlesztést örömmel fogadunk issue-k és pull requestek formájában!**\n\n_Részletes fejlesztői dokumentáció jelenleg nincs, de idővel igyekszünk ennek is eleget tenni._\n\n### Tech stack\n- `php8.1`\n- `mariadb`\n- `html`, `css`\n\n### Követelmények\n- Docker. Telepítése: https://docs.docker.com/engine/install/\n\n### Telepítés\n#### Instant telepítés, alap beállításokkal\n_(app port: 8000, pma port: 8001, username: admin, password: pw, email: amit lent megadsz)_\n```shell\ngit clone git@github.com:baueri/kozossegek-hu.git \\\n  \u0026\u0026 cd kozossegek-hu \\\n  \u0026\u0026 cp .env.example .env \\\n  \u0026\u0026 docker compose up -d --build\n```\n\n_Miután elindult a docker container, telepítéshez futtasd ezt:_\n\n```shell\ndocker exec kozossegek_app php console install --name=Admin --username=admin --email=\"your.eamil@kozossegek.hu\" --password=pw --seed\n```\n\n### VAGY\n\n#### Részletes telepítés\n\nKlónozd le a projektet, majd lépj be a könyvtárba\n\n```shell\ngit clone git@github.com:baueri/kozossegek-hu.git\n```\n\nMásold le a .env.example tartalmát a .env fájlba\n\n```shell\ncp .env.example .env\n```\n\nAz **alkalmazás** a `8000`-es, a **phpmyadmin** pedig a `8001`-es portokon lesznek kiszolgálva, ha ezen változtatnál,\nírd át az `APP_PORT` és a `PMA_PORT` változókat a `.env` fájlban.\n\n_A többi változót is igény szerint módosíthatod (sql usernév, jelszó, storage mappa stb)_\n\nIndítsd el a dockert:\n\n```shell\ndocker compose up -d --build\n```\n\n_A `-d` kapcsolóval a sikeres build után a háttérben fognak futni a containerek._\n\nMiután a dockeres telepítés megtörtént, a `kozossegek_app` containerben futtasd az `install.php`-t:\n\n```shell\ndocker exec kozossegek_app php install.php\n```\n\nA telepítőben\n\n1. létrejön az admin fiókod\n2. felkerül néhány dummy közösség, illetve a térkép modul és a keresőmotor frissül. Ez 1-2 percet igénybe vehet.\n\nHa minden sikeresen lefutott, akkor az alkalmazás a http://localhost:8000 (a port a konfigurációtól függ) linken elérhető lesz.\n\n### Docker containerek\nA kozossegek.hu projektben három containert futtatunk:\n\n- **kozossegek_app**: Ide van az apache szerver felrakva, az alkalmazás innen van kiszolgálva.\n- **kozossegek_pma**: Phpmyadmin image van behúzva. A phpmyadmin innen érhető el: http://localhost:8001\n  - Alapértelmezetten a **user:** `root`, **password:** `pw` adatokkal tudsz belépni.\n- **kozossegek_mysql**: Ez az sql container, szintén a fenti login adatokkal (`root, pw`) lehet használni az sql cli-t.\n\n## A keretrendszerről\nA kozossegek.hu egyedi keretrendszer alatt fut, `MVC` struktúrával. Ebben a fejezetben a legalapvetőbb dolgokat írjuk le, amivel már be tudsz kapcsolódni a fejlesztésbe.\n\nA **route**-ok határozzák meg az oldal belépési pontját, amik nagyrészt egy **controller** class adott **metódusára** mutatnak.\n\nA **controller** osztály metódusa tartalmazza a business logic-et, amit szükség szerint lehet külön service-be is kivezetni.  \n\nA megjelenítést pedig egy saját fejlesztésű, szintaktikájában a laravel `blade`-jére hasonlító templating rendszer valósítja meg.\n\nAz adatbázis táblák entitásainak kezelésére két implementációt használunk:\n\n- Az entitások reprezentálására model osztályok\n- Ezek szerkesztésére, lekérésére, létrehozására pedig a query builderek.\n\n\n### Routing\nAz aloldalak struktúrája `xml`-ben írt route fájlokban vannak meghatározva. Az egyes aloldalakra vonatkozó szabályokat (engedélyezett request method, middleware) szintén itt lehet meghatározni.\nAz alapvető útvonalak négy xml fájlba vannak rendezve szerepüktől függően.\n\n- `routes/web.xml`\n- `routes/api.xml`\n- `routes/admin.xml`\n- `routes/admin_api.xml`\n\n**Új route útvonal létrehozása**\nÚj route-ot az adott xml fájlban a `\u003croutes\u003e\u003c/routes\u003e` gyökér tag közé kell felvinni\n\nÁltalános használata:\n```xml\n\u003croute method=\"get\" uri=\"route-to-page\" controller=\"App\\Path\\To\\Controller\" use=\"routeEntrypoint\"/\u003e\n```\n\nEz a fenti route létrehozza a `kozossegek.hu/route-to-page` végpontot, ami az `App\\Path\\To\\Controller` osztály `routeEntrypoint` metódusát fogja lefuttatni\n\n#### Controllerek\nA controller osztályokban vannak a route-ok belépési pontjai implementálva.\n\n```php\n\u003c?php\n\nnamespace App\\Portal\\Controllers;\n\nuse Framework\\Http\\Controller;\n\nclass MyController extends Controller\n{\n    public function myEntryPoint(SomeService $service)\n    {\n        // some business logic here\n    }\n}\n```\n\n**Note: dependency injection**\n\nA fenti példában is látszik, hogy a controller `myEntryPoint` metódusának van egy `SomeService` függősége.\nA keretrendszer egy egyszer dependency injection resolverrel automatikusan megpróbálja **rekurzívan** feloldani a controller metódus függőségeit (és a függőségeinek függőségeit, ha vannak).\nEz segíthet abban, hogy egy service-t ne kelljen manuálisan példányosítani annak további függőségeivel.\n\n### Adatbázis modellek\nAz adatbázis sorok php-s reprezentálására a `Framework\\Model\\Entity`-ből származtatott osztályokat használjuk.\nMinden ilyen entity implementációnak van egy hozzá kapcsolódó query builderje is, ami a `Framework\\Model\\EntityQueryBuilder`-ből van származtatva.\n\nPélda a használatra:\n\n```php\n\u003c?php\n\nclass MyController extends \\Framework\\Http\\Controller\n{\n    public function users(\\App\\QueryBuilders\\Users $users)\n    {\n        return $users-\u003ewhere('email', 'test@gmail.com')-\u003efirst();\n    }\n}\n\n```\n\n**Entitás létrehozása**\n```php\n$user = $users-\u003ecreate(['name' =\u003e 'Test user', 'email', 'test@gmail.com']); // egy User példányt ad vissza\n```\n\n**Entitás adatainak frissítése**\n```php\n$user = $users-\u003efind(1); // egyetlen sor lekérése id alapján\n$users-\u003esave($user, ['name' =\u003e 'Másik user'])\n```\n\n**Sor törlése adatbázisból**\n\nKétféleképpen lehet törölni sort a query builder használatával:\n```php\n$users-\u003edeleteModel($user); // model átadásával\n\n// vagy\n\n$users-\u003ewhere('email', 'test@gmail.com')-\u003edelete() // sql-lel\n```\n\n**Note: adott entitás query builderjét a `query()` metódushívással tudod példányosítani**\n```php\n$users = Users::query();\n$users-\u003ewhere('...')-\u003eorderBy('name asc')-\u003eget();\n```\n\nTermészetesen van lehetőség a query builder helyett a plain sql használatára is:\n\n```php\n$testUsers = db()-\u003eselect('select * from users where name like %?%', ['test']);\n```\n\n**Fontos: plain sql esetén is mindenképp bindig-ot használjunk, ne írjunk sql-t konkatenálással**\n```php\n// NE CSINÁLD:\ndb()-\u003efirst('select * from users where email=\"' . request()-\u003eget('email') . \"'\");\n```\n\n### Templating\nA megjelenítést az egyedi fejlesztésű, `blade` által inspirált, de annál egyszerűbb template engine generálja.\nEzek is gyakorlatilag php fájlok, amik bizonyos kényelmi előnyökkel szolgálnak.\n\nA template fájlokat a `resources/views` mappában tároljuk\n\n`resources/views/minta.php`\n```html\n@title('Ez egy minta oldal')\n@extends('portal')\n\n\u003ch3\u003eHello {{ $nev }}, ez egy minta oldal...\u003c/h3\u003e\n\u003cp\u003e...ami köré a portal.php template fájl kerül, így erre a template-re a látogai oldal dizájnja, szerkezete kerül\u003c/p\u003e\n```\n\nA `@title()` direktíva a fejléc szekcióba jeleníti meg azt a szöveget, amit paraméterben átadunk\n\nAz `@extends()` direktíva határozza meg, hogy mely másik template-et akarjuk a tartalom köré berakni. Az ez alá kerülő tartalom, html kód kerül a `portal.php` fájlban a `@yield('portal')` helyére.\n\nLehetőség van dinamikus tartalmat is megjeleníteni, erre a `{{ $valtozo_neve }}` szintaxist lehet használni.\n\n#### Template megjelenítése\nEgy template tartalmát legegyszerűbben a `view()` függvényhívással lehet megjeleníteni\n```php\n\u003c?php\n\nclass MyController extends \\Framework\\Http\\Controller\n{\n    public function mintaOldal()\n    {\n        return view('minta', ['nev' =\u003e 'Minta János']);\n    }\n}\n```\n\n#### használható template utasítások:\n\nIteráció egy tömbön\n\n```html\n\u003cul\u003e\n@foreach($array as $value)\n    \u003cli\u003e{{ $value }}\u003c/li\u003e\n@endforeach\n\u003c/ul\u003e\n```\nFeltételvizsgálat\n```html\n@if($a === 'a')\n\n@else\n\n@endif\n```\n\nMásik template fájl betöltése\n```html\n\u003cp\u003eSome content\u003c/p\u003e\n\n@include('path.to.another.template')\n\n\u003cp\u003eSome other content\u003c/p\u003e\n```\n\nRoute linkjének lekérése\n\n```html\n\u003ca href=\"@route('admin.dashboard')\"\u003eAdmin felület\u003c/a\u003e\n```\n\n### Egyéb források\n\n- https://www.toptal.com/developers/css/sprite-generator: a címkék (jellemzők) sprite-tá alalkításához. 35x35 px-es képekkel! ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbaueri%2Fkozossegek-hu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbaueri%2Fkozossegek-hu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbaueri%2Fkozossegek-hu/lists"}