# Projekt: System 2FA + Notatnik (PHP MVC) ## Cel projektu - Prosta aplikacja logowania 2FA w PHP z notatnikiem użytkownika. - MVC (kontrolery, modele, widoki). Bootstrap UI. ## Najważniejsze funkcje (stan na dziś) - Logowanie użytkownika + weryfikacja kodem 2FA (testowy kod w konsoli). - Panel użytkownika po zalogowaniu. - Notatnik: lista, dodawanie, edycja, usuwanie z ładnym modalem potwierdzenia. - Kalendarz: widok miesięczny, dodawanie/edycja/usuwanie wydarzeń. ## Dane testowe - Login: projectpro - Hasło: testowehaslo ## Routing (przyjazne URL) - /logowanie - /uwierzytelnianie (POST) - /weryfikacja - /weryfikuj-kod (POST) - /panel lub /pulpit - /notatnik - /notatka/nowa - /notatka/edytuj?id=ID - /notatka/zapisz (POST) - /notatka/usun (POST) - /kalendarz - /wydarzenie/nowe - /wydarzenie/edytuj?id=ID - /wydarzenie/zapisz (POST) - /wydarzenie/usun (POST) - /wyloguj-sie - /inicjalizacja ## Baza danych (SQLite) - users: użytkownicy (hasła haszowane) - verification_codes: kody 2FA z wygasaniem - notes: notatki per user (created_at/updated_at) - calendar_events: wydarzenia per user (event_date, created_at/updated_at) ## Struktura MVC - controllers: InitController, LoginController, DashboardController, NotesController - controllers: InitController, LoginController, DashboardController, NotesController, CalendarController - models: Database, User, Notes, CalendarEvent - views: login, verify, dashboard, notes/index, notes/form, calendar/index, calendar/form - layout wspólny: views/layout.php ## Wygląd UI - Bootstrap 5 - Dodatkowe style: public/css/style.css, public/css/notes.css, public/css/calendar.css - JS: public/js/app.js ## Ważne uwagi techniczne - Layout obsługuje: $pageTitle, $bodyClass, $extraHead, $extraScript, $content. - Widoki korzystają z layoutu i generują zawartość przez output buffering. - Notatnik używa modala Bootstrap do potwierdzenia usunięcia. ## Pliki kluczowe - index.php: router i bootstrap aplikacji - .htaccess: przepisywanie URL - models/Notes.php: inicjalizacja tabeli notatek przy użyciu ## Do dalszego pilnowania - Utrzymywać spójność URL z routerem. - Aktualizować ten plik po kolejnych zmianach.