webtech-projects

WEBTE2 Zadanie 1 - Slovenski olympionici

1. Zakladne info

Tento projekt je webova aplikacia o slovenskych olympionikoch. Aplikacia ma:

Na verejnej casti sa zobrazuje tabulka olympionikov. V privatnej casti sa nachadza:

Funkcne nasadenie:

2. Ako sme postupovali pri tvorbe projektu

Projekt sme robili postupne, po logickych castiach.

2.1 Najprv sme navrhli databazu

Najprv sme vytvorili databazovu schemu podla suboru oh_v2.xlsx.

Databaza je rozdelena do viacerych tabuliek:

Tabulky su navzajom prepojene pomocou cudzich klucov. Databaza teda nie je postavena na jednej tabulke.

Subory suvisiace s databazou:

Finalny SQL dump na odovzdanie:

2.2 Potom sme vytvorili vstupny bod aplikacie

Hlavny vstupny bod aplikacie je:

Tento subor funguje ako jednoduchy router. Podla parametra page z URL nacita prislusnu cast aplikacie.

Pouzivane include subory su hlavne v adresari:

2.3 Nasledne sme doplnili pripojenie na databazu

Na pracu s databazou pouzivame PDO.

Pripojenie riesi:

Konfiguracia sa nachadza v:

2.4 Potom sme doplnili import dat zo suboru

Databaza sa nenaplnala rucne. Naplnenie je riesene dynamicky nacitanim suboru a jeho spracovanim na strane servera.

Formular pre import je v:

Serverove spracovanie importu je v:

Pouzivatel po prihlaseni nahra .xlsx subor a aplikacia ulozi data do databazy.

2.5 Potom sme vytvorili verejnu cast

Verejna cast zobrazuje tabulku olympionikov.

Subory:

Vo verejnej casti je:

2.6 Neskor sme doplnili autentifikaciu

Implementovali sme dve moznosti prihlasenia:

Subory:

2.7 Potom sme doplnili registraciu a lokalny login

Pouzivatel sa moze zaregistrovat pomocou:

Hesla sa ukladaju iba hashovane pomocou:

Pouzivatelia su ulozeni v tabulke:

2.8 Potom sme doplnili 2FA

Pre lokalne konto je implementovane dvojfaktorove overenie cez Google Authenticator.

Subory:

Vo profile sa da:

2.9 Potom sme doplnili historiu prihlaseni

Kazde prihlasenie sa uklada do:

Ukladane udaje:

Pouzivane hodnoty login_type:

2.10 Potom sme doplnili profil pouzivatela

Subor:

Prihlaseny pouzivatel moze:

2.11 Potom sme doplnili cookies notice a prepnutie jazyka

Cookies notice je rieseny cez:

Jednoduche preklady su riesene cez:

Jazyky:

2.12 Nakoniec sme upravili vizual

Vzhlad aplikacie je rieseny vlastnym CSS a JavaScriptom.

Subory:

Pouzite web fonty:

Aplikacia je responzivna a obsahuje:

3. Struktura projektu

Najdolezitejsie adresare:

4. Pouzite kniznice a baliky

Pouzili sme Composer a tieto PHP kniznice:

Konfiguracny subor:

Adresar vendor/ sa do odovzdavaneho ZIP archivu nepridava.

5. Validacia formularov

Vo formularoch je implementovana:

Validovane su hlavne:

Nepouzivame:

Pouzivame vlastne stavove hlasky a validacne spravy v rozhrani.

6. Lokalne spustenie projektu

Projekt sa lokalne spusta cez PHP built-in server:

php -S localhost:8000 -t public

Potom je aplikacia dostupna na:

7. Nasadenie na server

Projekt je nasadeny do podadresara:

Funkcny odkaz:

Konfiguracny subor pre Nginx:

Pri nasadeni bolo potrebne:

  1. skopirovat projekt na server
  2. doplnit route pre /webte_pro1/ v Nginx
  3. nastavit public/ ako web root cez alias
  4. nastavit spracovanie PHP cez php8.4-fpm
  5. nastavit pristup k databaze v config/config.php
  6. doplnit Google OAuth redirect URI
  7. vytvorit alebo aktualizovat databazu cez SQL dump

8. Zmeny vykonane na serveri / VPS

Na serveri bolo potrebne:

Pouzite systemove casti servera:

Ak je potrebne doinstalovat zavislosti na serveri, pouzije sa:

composer install

9. Konfiguracia databazy

Aplikacia ocakava databazu:

Na vytvorenie aktualnej schemy odporucame pouzit:

10. Google OAuth2 nastavenie

V Google Cloud Console bolo potrebne vytvorit OAuth klienta a nastavit redirect URI:

Do config/config.php sa doplnaju:

11. Postup na znovunasadenie riesenia

Odporucany postup:

  1. nakopirovat projekt na server
  2. upravit config/config.php
  3. nastavit Nginx konfiguraciu
  4. restartovat nginx
  5. skontrolovat php8.4-fpm
  6. nainstalovat kniznice cez Composer alebo skopirovat vendor
  7. vytvorit databazu z sql/webte2_z1_dump.sql
  8. skontrolovat Google OAuth redirect URI
  9. otestovat login, registraciu, 2FA, Google login a import

12. Co odovzdat

Do ZIP archivu odporucame dat:

Do ZIP archivu sa nema davat:

13. Zhrnutie

Projekt je vytvoreny v cistom PHP bez frameworku. Obsahuje:

Projekt bol vyvijany lokalne a nasledne nasadeny na skolsky server. Public portfolio verzia pouziva anonymizovane deployment priklady.