Kurs został zaprojektowany jako intensywny, 7-tygodniowy program, łączący regularną naukę z praktycznym projektem końcowym.
- Całkowity czas trwania: 7 tygodni.
- Moduły tematyczne: 5 tygodni poświęconych na realizację cotygodniowych list zadań.
- Projekt Finałowy: 2 tygodnie przeznaczone na samodzielną realizację projektu końcowego.
- Spotkania cykliczne: Cotygodniowe sesje "Lightning Talks" (20+ minut), poświęcone na omówienie kluczowych zagadnień i sesję Q&A.
- podstawowa znajomość paradygmatu obiektowego i funkcyjnego
- Lista 0 (Podstawy Darta i Konfiguracja Środowiska).
Zgłębianie kluczowych elementów składni języka Dart, instalacja Flutter SDK oraz przygotowanie profesjonalnego środowiska programistycznego (IDE i emulator/urządzenie). - Lista 1 (Podstawowe funkcjonalności Flutter'a).
Wprowadzenie do filozofii "Everything's a widget". Praktyczne wykorzystanie widżetów Stateless i Stateful oraz budowanie pierwszych, responsywnych layoutów. - Lista 2 (Zarządzanie stanem i nawigacja w aplikacji).
Implementacja przepływu danych i logiki za pomocą wzorców zarządzania stanem (Riverpod, flutter_hooks) oraz obsługa nawigacji między ekranami przy użyciu GoRouter API. - Lista 3 (Trwałość Danych i Adaptacyjny Interfejs).
Wykorzystanie pamięci lokalnej do przechowywania danych aplikacji (np. shared_preferences, sqlite, no-sql) oraz implementacja dynamicznej zmiany motywu (Light/Dark Theme) w oparciu o stan aplikacji. - Lista 4 (Pozyskiwanie danych z api i autentykacja użytkownika).
Obsługa zapytań HTTP do zewnętrznych API, przetwarzanie danych w formacie JSON oraz implementacja kompletnego procesu autentykacji użytkownika (rejestracja, logowanie). - Lista 5 (Filtrowanie, wyszukiwanie i dokończenie CRUD-a).
Kompleksowa implementacja operacji CRUD (Create, Read, Update, Delete) na zbiorze danych, uzupełniona o funkcjonalności dynamicznego wyszukiwania i filtrowania wyników.
Kulminacja kursu w formie intensywnego, dwutygodniowego sprintu. Celem jest samodzielne zaprojektowanie i zakodowanie w pełni funkcjonalnej aplikacji, która ugruntuje zdobytą wiedzę i stanie się centralnym punktem Twojego portfolio. Tematyka oraz zakres projektu muszą zostać uprzednio skonsultowane i zaakceptowane przez prowadzącego kurs.
Aby zapewnić sprawną organizację kursu oraz efektywną komunikację, wszyscy uczestnicy zobowiązani są do przestrzegania poniższych zasad:
-
Komunikacja i Wsparcie: Platforma Discord jest oficjalnym kanałem komunikacji. W przypadku jakichkolwiek problemów, pytań lub wątpliwości dotyczących materiału, jest to właściwe miejsce do uzyskania pomocy i prowadzenia dyskusji.
-
Organizacja Pracy w Git: Prace nad zadaniami należy prowadzić na osobnej gałęzi (branch) w systemie Git, stosując format nazewnictwa:
{numer_listy}-{imie}-{nazwisko}
. -
Zgłaszanie Zadań do Sprawdzenia: Ukończone zadania należy zgłaszać poprzez utworzenie Pull Requesta na platformie GitHub. Tytuł Pull Requesta musi być zgodny ze schematem:
{numer_listy}-{imie}-{nazwisko}
oraz w opisie pull requesta powinny być załączone screenshoty pokazujące stworzone UI. Pipeline (CI/CD) powiązany z Pull Requestem musi przechodzić poprawnie – wszystkie jego kroki muszą świecić się na zielono. -
Wyznaczenie Recenzentów: W polu "Reviewers" utworzonego Pull Requesta należy oznaczyć prowadzących kurs: tomasz-trela oraz simon-the-shark.
-
Proces Code Review: Wszelkie uwagi, sugestie oraz prośby o poprawki dotyczące kodu będą przekazywane bezpośrednio na platformie GitHub w formie komentarzy w ramach procesu Code Review zgłoszonego Pull Requesta.
-
Chronologia Realizacji Zadań: Poszczególne listy zadań (moduły) muszą być realizowane w porządku chronologicznym. Ukończenie i zaliczenie danej listy jest warunkiem koniecznym do rozpoczęcia pracy nad kolejną.
-
Terminowość: Każda lista zadań posiada termin na jej ukończenie, wyznaczony przez prowadzącego kurs. W przypadku przewidywanego opóźnienia, uczestnik jest zobowiązany do wcześniejszego poinformowania o tym fakcie prowadzącego wraz z podaniem przyczyny.