Nagy házi feladat¶
Specifikáció, beadás, bemutatás¶
A specifikációval, beadással, és bemutatással kapcsolatos információk és határidők Moodle-ben találhatók.
Minimális követelmények¶
- A megvalósítandó feladat egy webes alkalmazás elkészítése PHP, HTML és CSS technológiákat használva. Az alkalmazásnak MySQL relációs adatbázist kell használnia.
- Az adatbázis séma legalább 3 adatbázistáblából álljon. Mindegyik táblában legalább 3 oszlop, a táblák között legalább 1 külső kulcs legyen.
- Az alkalmazásban legyen mód minden adatbázisban tárolt adat kiolvasására az adatbázisból, azok megjelenítésére, új adatok bevitelére és a meglévő adatok módosítására. Tehát nem elegendő, ha csak írni vagy olvasni tudjuk az adatokat, szerkeszteni is tudnunk kell azokat.
- Legyen lehetőség az adatbázistáblák közötti külső kulcs kapcsolatok megjelenítésére, szerkesztésére és törlésére. Ha például egy adatbázisban könyvek és szerzők adatait tároljuk, akkor legyen lehetőség szerkeszteni, hogy melyik könyv melyik szerzőhöz tartozik és ezt a kapcsolatot tudjuk változtatni is. A szerkesztés nem azt jelenti, hogy kitöröljük a kapcsolatot, majd egy újat létrehozunk, hanem a meglévőt szerkesztjük.
- Legyen CSS stíluslap az oldalak egységes formázásához.
- Az alkalmazásnak legyen egységes fejléce, lábléce és menüje, amelyek minden oldalon megjelennek. A menüből legyenek elérhetők a főbb funkciók.
- A felületen az adatok elérése a felhasználó számára kényelmes módon történjen. Ez azt jelenti, hogy ha például szerzőket és könyveket kell összerendeljünk, akkor nem egy szövegdobozban kell megadnunk a szerző és a könyv azonosítóját, hanem a megfelelő szerzőt és könyvet legördülő menüből ki tudjuk választani.
- A felhasználó által beírt bemenetet ellenőrizni kell mielőtt az adatbázisba írjuk. Az SQL injection elleni védelmet biztosítani kell. Az adatmódosításkor, felvitelnél figyelni kell a hibás értékek kiszűrésére, például üresen hagyott mezők, értelmetlen értékek (szöveg beírása szám helyett stb.). Ezeket jelezni kell a felhasználónak.
- Legyen lehetőség az adatbázis egyik táblájában keresni (pl. könyveket kilistázni megadott címrészlet alapján).
Pontozási szempontok¶
A nagy házi feladattal maximum 9 pont szerezhető, ami beleszámít a félév végi eredménybe. Ezen felül maximum 25 IMSc pont is kapható, ez a házi feladat pontszámával egyezik meg. Tehát például egy 20 pontos házi feladat 9 pluszpontot (ami hozzáadódik a ZH és kisházik pontszámához), valamint 20 IMSc pontot ér.
A házi feladatra pont csak akkor adható, ha a ZH legalább elégséges szintű lett, tehát az aláírás feltétele (a ZH) nem váltható ki csak a házi feladat megírásával.
A fenti minimális elvárásoknak megfelelő megoldás pull requestként, videóval, időben leadva 5 pontot ér.
További pontszerzési lehetőségek¶
A minimális megoldás 5 pontja felett további pontot érnek (részleges megoldásért részpontszámok is adhatók):
Adatbázis¶
- Legalább 5 adatbázis tábla használata, mindegyikben legalább 3 oszloppal és összesen legalább 3 idegen kulcs használatával: 2p
- NOT NULL (ahol van értelme) és AUTO_INCREMENT értelmes használata: 1p
- Összetett kulcs (elsődleges vagy idegen) használata: 1p
- Legalább egy bonyolultabb SQL lekérdezés használata: 1p
- SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY együttes használata
- Beágyazott lekérdezés használata legalább egy nemtriviális helyen: 1p
- Egysoros minimum vagy maximum keresés pl. nem számít
- NoSQL adatbázis használata (a relációs adatbázison kívül, nem ahelyett): 3p
Frontend¶
- Esztétikus megjelenés: 1p
- CSS váltás (skin cserélése) az alkalmazásból (pl: világos-sötét mód): 1p
- CSS generálása (pl: SCSS, Sass, Less segítségével): 2p
- CSS áttűnés vagy animáció alkalmazása: 1p
- Reszponzív felület, vagyis optimális megjelenés különböző méretű képernyőkön: 1p
- Bootstrap, vagy egyéb frontend elemkészlet használata (teljes UI): 1p
- Legalább két JavaScript (kliensoldali) segítségével megoldott dinamikus funkció: 2p
- TypeScript használata: 2p
- Böngésző API-jának használata (pl.: Local storage): 1p
Backend¶
- Felhasználó kezelés jelszóval (nem plain textben tárolva, saját implementáció): 1p
- Külső szolgáltatás integrálása (pl. Composer package, API endpoint, OAuth): 2p
- Kettőnél több jogosultsági kör támogatása: 1p
- Legalább két, nem triviális reguláris kifejezés használata: 1p
- Egy nem triviális, komplex validációs szabály készítése: 1p
- Objektum orientált szolgáltatás készítése: 1p
- Laravel keretrendszer megfelelő (dokumentáció szerinti) használata: 3p
- Legalább 2 REST API endpoint készítése: 1p
- Saját ORM jellegű implementáció: 2p
- Saját router készítése és használata: 2p
- MVC architektúra helyes alkalmazása: 2p
- Legalább 2 unit teszt írása: 2p
- Legalább 1 integrációs / ui teszt: 2p
- Egy külső szolgáltatás integrálása API segítségével: 1p
Hibapontok¶
- Videó vagy pull request nem készült el időben: -2p
- Videó hossza több, mint 5 perc: -1p
- Videóban nincs se felirat, se hangalámondás: -1p