Fáze 1: Katalog kurzů a správa lektora

V této fázi bychom chtěli implementovat katalog kurzů. Každý kurz má svůj název a krátký popisek, aby bylo jasné, o čem je. Uživatelé si budou moct projít nabídku kurzů a rozkliknout jednotlivé kurzy pro více informací. Kurzy jsou veřejně dostupné, bez nutnosti přihlášení uživatele.

Vzhled aplikace

Aplikace by měla být v souladu s naším firemním brandmanuálem, který najdete pod tímto odkazem.

Struktura aplikace

Úvodní stránka

  • Může mít libovolný design, ale měla by být přehledná, upoutat pozornost uživatele a umožnit snadno se dostat na seznam kurzů.

Seznam kurzů

  • Stránka musí být dostupná na /courses, na které budou zobrazené všechny dostupné kurzy.
  • Mělo by být možné kurzy vyhledávat podle názvu.
  • Každý kurz by měl jít otevřít na vlastní stránce /courses/:uuid s dalšími informacemi, které nejsou viditelné na seznamu kurzů, a které přibudou v pozdějších fázích. uuid je unikátní identifikátor daného kurzu.

Administrace

  • Lektor se přihlásí přihlašovacím formulářem na stránce /login.
  • Dostupná na stránce /dashboard, kde lektor spravuje kurzy, jak je popsáno výše.
  • Proklik na tuto stránku by měl být viditelný pouze pro přihlášené lektory.
  • Pokud se někdo pokusí dostat na tuto stránku přepsáním adresy v prohlížeči, musí být nepřihlášený uživatel automaticky přesměrován na /login. Tam bude mít možnost se přihlásit.

Lektor

Lektor bude jediný uživatel, který bude kurzy spravovat. Registrace se zatím neřeší, proto mějte prosím tento lektorský účet pevně daný s následujícími přihlašovacími údaji:

Jméno: lecturer

Heslo: TdA26!

Po přihlášení lektor získá přístup k ovládacím prvkům, kde může:

  • přidávat nové kurzy (název + popisek)
  • upravit existující kurzy
  • mazat kurzy
  • a také se odhlásit

Info: v pozdější části budeme chtít řešit i registrace, mějte to na paměti při návrhu aplikace.

Backend

Samotná webová stránka by ale bez nějakých dat byla celkem prázdná. Proto je třeba implementovat i backend – tedy část aplikace, která běží čistě na serveru a poskytuje data pro frontend (frontend je část aplikace, se kterou může uživatel přímo interagovat).

Vaším úkolem bude implementovat REST API, které umožní správu kurzů, jejich materiálů a aktivit (např. kvízů).

Celou specifikaci API jsme pro vás připravili ve formátu OpenAPI – najdete v ní detailní popis všech dostupných endpointů (“přístupových bodů”), jaká data očekávají a co vrací. Specifikace je ve formě yaml souboru, který stačí stáhnout a nahrát do některého z online vizualizátorů, jako je například Swagger.

Tato specifikace je minimální API, kterou vaše aplikace musí obsahovat, aby prošla automatickými testy. Pokud chcete parametry nějakým způsobem rozšířit, je to čistě na vás.

Databáze

Data aplikace je třeba nějak ukládat, proto byste měli do své aplikace implementovat databázi[?], která bude uchovávat záznamy o kurzech, podkladech a aktivitách. Pokud jste začátečníci, doporučujeme využít některou z jednodušších databází jako například SQLite nebo MySQL.

Je důležité mít na paměti, že databáze v našem systému nebudou perzistentní. To znamená, že při restartu aplikace nebo nahrání nové verze se veškerá data ztratí. Silně proto doporučujeme do databáze při startu aplikace automaticky nahrát sadu základních dat (tzv. seeding), abyste nemuseli pokaždé vše přidávat manuálně. Toto pochopitelně není problém, pokud používáte externě hostovanou databázi.