Zadání Nominačního kola

flag{3e3eaaa3-6871-43b2-af6b-fc888a1ec2f0}

Dynamický katalog lektorů

„Prvním krokem na cestě ke štěstí je učení se.“ ~Dalajláma

Pamatuješ si nejlepší burger, co jsi kdy jedl? Určitě nebyl první, který dotyčný kuchař v životě připravil. Musel postupně zkoušet správné pořadí ingrediencí a bezchybnou kombinaci chutí. Možná si na začátku vůbec nevěřil a začínal s jednoduchým receptem, kde byl popsaný krok po kroku. Proč to vůbec zkoušel? Zřejmě chtěl umět dělat přesně ten burger, na který teď s chutí vzpomínáš. Chtěl se to naučit. A je jedno, jestli tím kuchařem byl Přemek Forejt, kuchař v restauraci na Václaváku nebo tvoje babička, která burger nikdy předtím ani neochutnala.

Naučit se programovat je podobné. Ukážeme ti, jak s ním začít nebo se v něm zdokonalit. A vplujeme do toho zlehka; receptem. Tvým úkolem v Nominačním kole nebude nic jiného, než následovat kroky, které ti zadá fiktivní firma Teacher digital Agency. Cílem tvého týmu bude vytvořit funkční aplikaci, která bude splňovat ideálně všechny požadavky. Tak co, vyzkoušíš si s námi takový burger?


Teacher digital Agency

O nás

Teacher digital Agency je mladá společnost zaměřená na vyhledávání špičkových odborníků z řad učitelů, lektorů a tutorů. Sestavujeme exkluzivní databázi těchto specialistů, abychom mohli efektivně propojovat klienty s ideálními odborníky dle jejich přání a specifických potřeb. Vaše vzdělávání je u nás v dobrých rukou.

Co potřebujeme

Skrze soutěž Tour de App si Vás dovolujeme pozvat do výběrového řízení, ve kterém během tří kol vybereme ten nejlepší vývojový tým, se kterým budeme nadále spolupracovat. V prvním kole nejdříve potřebujeme zjistit, zda máte minimální potřebné technické dovednosti pro tento projekt.

Do našich kanceláří přicházejí odborníci zabývající se vzděláváním a pokud projdou naším přijímacím systémem, chceme jim vytvořit jejich osobní vizitku na webu. Právě tento web po Vás budeme chtít vytvořit v rámci prvního kola, na které máte zhruba 8 týdnů. Ale abychom Vás neházeli rovnou do ohně, rozdělili jsme tento proces na čtyři navazující části, kde si každou z částí budete moci otestovat na naší automatizované platformě, ale o tom až dále.

Fáze 1: Docker, Git, odevzdávání a testování

V první fázi si potřebujeme ověřit, zda jste schopni něco odevzdat (viz Odevzdání aplikace) a následně to něco otestovat (Testování aplikace). Nic složitého, že?

  • Založte si GitHub repozitář s názvem ve tvaru TdA24 IdealneNazevTymu a zprovozněte github akce s Dockerem
  • Publikujte aplikaci, která bude na http://server-url.cz/ (u vás poběží na http://localhost, server url vám bude přiděleno po odevzdání – pracujte tedy jen s relativními cestami) obsahovat HTML stránku s textem “Hello TdA” (kdekoliv v obsahu stránky).
  • Aplikace bude také poskytovat první primitivní API[?] na http://server-url.cz/api, které bude obsahovat JSON[?] objekt ve tvaru {"secret":"The cake is a lie"}.
  • Přihlaste se do testovacího frameworku a spusťte testy pro první fázi.
  • Tuto fázi je (jako jedinou) nutno odevzdat a otestovat do 22. 12. 

Fáze 2: Frontend

Přichází čas vytvářet první HTML stránku, vybrat správný framework, pohádat se nad volbou grafické knihovny a řešit první merge konflikty v týmu. A aby to nebylo tak jednoduché, ještě musíte uspokojit nás, zákazníka.

  • Vytvořte na http://server-url.cz/lecturer vizitku k jednomu z našich lektorů:
    • Nadesignujte jednu statickou stránku, která bude zahrnovat tato data.
    • Stránka, kterou vytvoříte, by měla obsahovat přehlednou vizitku našeho lektora (obsahovat všechna data, dobře je strukturovat).
    • Profilový obrázek získáte jako URL. Obrázek na dané adrese nestahujte, pouze na něj odkazujte – chceme mít možnost obrázek měnit při zachování stejné URL adresy.
    • Spusťte testy a ověřte svoji aplikaci.
  • Dodržujte náš brand manual, který si můžete stáhnout zde.
  • Prázdné stránky z fáze 1 již nebudou testovány.

Fáze 3: Backend

Super! Když už to nějak vypadá, bylo by super, aby to i něco umělo. Vaše aplikace by měla poskytovat veřejné REST API[?], skrze které budeme z našeho interního systému automaticky spravovat lektory – přidávat, mazat, upravovat…

  • Aktualizujte aplikaci dle následujících specifikací (zachovejte část z fáze 2)
  • Vytvořte na http://server-url.cz/api veřejné REST API pro správu lektorů v systému:
    • Kompletní specifikaci API – poskytované endpointy, očekávané navrátové HTTP kódy, formát dat – si můžete stáhnout zde.
    • Tento soubor vám dodáváme ve formátu OpenAPI (Swagger), takže ho můžete využít v řadě různých nástrojů, jako je třeba https://editor.swagger.io nebo mnoho automatizovaných generátorů kódu.
    • Bude také pravděpodobně potřeba implementovat databázový systém, do kterého se budou data ukládat. Je na vás, zda se vydáte lehkou cestou SQLite, či jakýmkoliv jiným nástrojem vaší volby.
    • Vaše řešení by mělo být robustní[?] a stabilní. Nemáme rádi, když naše aplikace padají v produkčním nasazení např. kvůli dělení nulou.
    • Spusťte testy a ověřte svoji aplikaci.

Fáze 4: Fullstack

Pokud se vám úspěšně podařilo implementovat Frontend i Backend, nezbývá už nic jiného než to spojit do jedné úhledné webové aplikace. Náš Dynamický katalog lektorů má za úkol prezentovat námi zadané lektory na jejich generovaných stránkách. To znamená, že každý lektor bude mít svoji vlastní generovanou URL adresu. Dále chceme, aby bylo možné v aplikaci lektory vyhledávat dle níže uvedených kritérií.

  • Aktualizujte aplikaci dle specifikací (zachovejte část z fáze 3)
  • Vytvořte na http://server-url.cz/ titulní stránku aplikace, na které bude uveden seznam našich lektorů. Nechceme však prostý seznam, pro každého lektora vytvořte vizuálně atraktivní „vizitku“.
    • Každá vizitka bude obsahovat obrázek, claim, cenu za hodinu, lokalitu a tagy popisující, čím se lektor zabývá.
    • Každá vizitka bude odkazovat na samostatnou stránku lektora na http://server-url.cz/lecturer/UUID, kde UUID odpovídá unikátnímu identifikátoru daného lektora.
    • Kromě seznamu lektorů zde bude i možnost filtrovat mezi nimi na základě:
      • cenového rozpětí zadaného uživatelem
      • tagů
      • lokality
    • V případě více filtrů hledáme průnik zadaných vlastností.
    • Zatím máme 5 lektorů, ale do budoucna počítáme, že jich bude až několik stovek.
  • Jak již bylo zmíněno, pro každého lektora v databázi bude existovat stránka http://server-url.cz/lecturer/UUID, jejíž design jste navrhli již v 2. fázi.
  • Aplikaci nechte otestovat naším Plně automatizovaným systémem®.

Odevzdání aplikace

K úspěšnému odevzdání vaší aplikace musíte provést následující:

  • Kód vaší aplikace nahrát do repozitáře na platformě github.com a přidat jako spolupracovníka (‘collaborator’) uživatele “Tour-de-App-user”.
  • využít GitHub akci, která se postará o nasazení na náš server. Jako parametry musíte této akci předat:
    • docker image[?] vaší aplikace, která bude mít jeden libovolný otevřený port. Tento port musí být zpřístupněný příkazem EXPOSE ČÍSLO_PORTU
    • jeho název
    • identifikační token (TEAM_SECRET) poskytnutý při registraci.

Pokud jste se s Dockerem či GitHubem ještě nesetkali, doporučujeme využít jednu z námi připravených šablon, které se postarají o vytvoření docker image a spuštění github akce, a vykonají tak většinu práce za vás. Dále vám doporučujeme navštívit naše webináře, kde tento proces projdeme spolu.


Testování aplikace

Běží vaše aplikace na našem serveru jak má? Skvěle! Teď to ale musíme zjistit i my.

Pomocí vašeho TEAM_SECRET se přihlaste na stránku https://odevzdavani.tourdeapp.cz, kde uvidíte několik sad automatických testů, které se budou postupně odemykat v průběhu soutěže.

  • Testy můžete spouštět vícekrát, ale uchovávat se bude jen nejlepší výsledek, vyjádřený v % úspěšně prošlých testů.
  • S výjimkou 1. testu budou jednotlivé testy časově neomezeny. První test bude z kapacitních důvodů uzamčen 22. 12. a je z něj potřeba získat alespoň 50% bodů (= pokud do té doby neodevzdáte alespoň 1. fázi, máte smůlu).

Závěrem

Ještě jednou vám jménem společnosti Teacher digital Agency děkuji za váš zájem podílet se na budoucnosti vzdělávání. V případě nejasností prosím využijte primárně komunity (a případně členů TdA) na soutěžním Discordu. Hodně štěstí!