Przejdź do głównej zawartości

Projekt semestralny

Projekt semestralny to pełnoprawna aplikacja webowa, którą tworzysz wspólnie z partnerem. W przeciwieństwie do miniprojektu, masz większy zakres funkcjonalności, ale też wsparcie drugiej osoby i możliwość podziału zadań.

Czas realizacji

6-8 tygodni

Cały semestr na realizację - planujcie mądrze i pracujcie systematycznie!

Forma

Praca zespołowa (2 osoby)

Razem planujecie, razem kodujecie, razem odpowiadacie za efekt.

Tematy

20 tematów do losowania

Temat jest losowany przez nauczyciela dla zespołu.

Warianty

3 poziomy trudności (A/B/C)

Wybieracie wspólnie - zadeklarujcie na początku pracy.

ElementA (3.0)B (4.0-5.0)C (5.0-6.0)
Formularz HTML
Walidacja PHP
Zapis do JSON/TXT
Odczyt i wyświetlanie
Podstawowy CSS
Min. 2 elementy JS
README.md
Historia operacji (log)
Filtrowanie / sortowanie
Podział na pliki PHP
Komunikaty sukcesu / błędu
Rozbudowana walidacja
Sesje PHP
System ról (admin/user)
Autoryzacja (hasła hashowane)
MVC-lite
Raporty i statystyki
Zaawansowana walidacja biznesowa
  1. Dobierzcie się w zespół (2 osoby)

  2. Otrzymajcie temat (losowanie przez nauczyciela)

  3. Zadeklarujcie wariant (A, B lub C)

  4. Zaplanujcie strukturę aplikacji

    • Jakie formularze i widoki?
    • Jakie dane i ich struktura?
    • Jak podzielicie pracę?
    • Jaki harmonogram?
  5. Podzielcie zadania

    • Kto robi co?
    • Jak będziecie synchronizować kod?
    • Kiedy spotkania robocze?
  6. Zaimplementujcie funkcjonalność

    • Zacznijcie od struktury i formularzy
    • Dodajcie walidację PHP
    • Zaimplementujcie zapis/odczyt
    • Dodajcie JavaScript
    • Integrujcie swoje części
  7. Przetestujcie projekt

    • Sprawdźcie wszystkie scenariusze
    • Przetestujcie błędne dane
    • Sprawdźcie na innym komputerze
    • Upewnijcie się, że działa bez Waszego środowiska
  8. Przygotujcie dokumentację

    • README.md z opisem projektu
    • Instrukcja uruchomienia
    • Opis podziału pracy
    • Wybrany wariant
  9. Oddajcie w terminie

    • Spakujcie do .zip
    • Nazwa: [KLASA]_projekt_[temat]_[nazwisko1]-[nazwisko2].zip

PHP

  • Logika aplikacji w PHP
  • Walidacja danych (obowiązkowa!)
  • Obsługa formularzy (GET/POST)
  • Funkcje do zapisu/odczytu
  • htmlspecialchars() przy wyświetlaniu
  • Podział na pliki (dla B/C)

HTML + CSS

  • Semantyczny HTML5
  • Formularze z odpowiednimi typami pól
  • Responsywny układ (podstawowy)
  • Czytelna typografia
  • Spójny styl wizualny

JavaScript

  • Minimum 2 elementy interaktywne
  • Walidacja po stronie klienta (dodatek do PHP)
  • Poprawa UX (np. live preview, potwierdzenia)
  • Dynamiczne elementy (dla B/C)

Dane

  • Zapis do pliku JSON lub TXT
  • Odczyt i wyświetlanie danych
  • Struktura zgodna że specyfikacją
  • Historia operacji (dla B/C)
  • Folderprojekt-semestralny/
    • index.php - strona główna
    • README.md - dokumentacja projektu
    • Folderdata/
      • dane.json - główny plik z danymi
      • historia.json - log operacji (dla B/C)
    • Folderlib/
      • functions.php - funkcje pomocnicze
      • validation.php - walidacja (dla B/C)
    • Folderviews/
      • header.php - nagłówek strony
      • footer.php - stopka strony
      • formularz.php - widok formularza
      • lista.php - widok listy danych
    • Foldercss/
      • style.css - style główne
    • Folderjs/
      • app.js - skrypty JavaScript
KryteriumPunktyCo to znaczy?
Realizacja wymagań35Czy aplikacja działa zgodnie z tematem i wariantem?
Poprawność kodu20Czy kod jest czytelny, logiczny, bez błędów?
Walidacja i bezpieczeństwo15Czy dane są walidowane? Czy output jest zabezpieczony?
JavaScript10Czy są min. 2 sensowne elementy JS?
Dokumentacja (README)10Czy README jest kompletne i pomocne?
Współpraca w zespole10Czy podział pracy był sprawiedliwy? Czy obaj rozumieją kod?
SUMA100

Jak dobrze współpracować?

Komunikacja:

  • Ustalcie sposób komunikacji (Discord, Teams, spotkania na żywo)
  • Regularnie informujcie się o postępach
  • Mówcie o problemach od razu - nie ukrywajcie ich

Podział pracy:

  • Podzielcie funkcjonalności sprawiedliwie
  • Każdy powinien pisać zarówno PHP jak i JS
  • Nie dzielcie na “backend” i “frontend” - to zbyt niski poziom projektu

Integracja:

  • Ustalcie wspólną strukturę plików od początku
  • Synchronizujcie kod regularnie
  • Testujcie razem przed oddaniem

Osoba A:

  • Formularz dodawania + walidacja
  • Zapis do pliku
  • JavaScript: podgląd na żywo

Osoba B:

  • Lista/wyświetlanie danych
  • Filtrowanie/sortowanie
  • JavaScript: potwierdzenia akcji

Wspólnie:

  • Struktura projektu
  • Styl CSS
  • README
  • Testowanie

Wykorzystajcie cotygodniowe lekcje!

Nie czekajcie do ostatniego dnia! Podczas każdej lekcji możecie:

  1. Pokazać postępy - nawet mały fragment kodu
  2. Zadać pytania - wyjaśnić wątpliwości
  3. Skonsultować rozwiązanie - uzyskać feedback
  4. Przetestować - sprawdzić czy działa na innym komputerze
  5. Zintegrować kod - połączyć swoje części
  1. Tydzień 1-2: Otrzymanie tematu, planowanie, podział pracy, struktura projektu

  2. Tydzień 3-4: Implementacja wariantu A (podstawowa funkcjonalność)

  3. Tydzień 5-6: Rozbudowa o wariant B (jeśli wybraliście), integracja kodu

  4. Tydzień 7: Funkcje wariantu C (jeśli celujecie wysoko), dopracowanie

  5. Tydzień 8: Testowanie, dokumentacja, przygotowanie do obrony