Tracker nawyków
Codzienne nawyki z serią dni „pod rząd" i podsumowaniem tygodniowym postępu.
Technologie: .NET MAUI (mobilna) + SQLite
Po co ten projekt
Zbudujecie aplikację do budowania nawyków: definiujesz nawyk (nauka, sport, woda), odhaczasz każdy dzień, a program liczy Twoją „serię" dni pod rząd i pokazuje postęp w tygodniu. Mechanizm serii to prosta, ale ciekawa logika z datami.
Co budujemy
- definiowanie nawyków (nazwa, cel np. „codziennie", kolor/ikona),
- odhaczanie nawyku na dany dzień,
- liczenie serii — ile dni pod rząd nawyk był wykonany,
- podsumowanie tygodnia: ile dni z 7 dla każdego nawyku,
- historia wykonania (kalendarz lub lista).
Struktura danych
Nawyki 1 ────< Wpisy Nawyki(id, nazwa, cel, kolor) Wpisy(id, nawyk_id →, data, wykonany) REGUŁA: (nawyk_id, data) niepowtarzalne — jeden wpis na nawyk na dzień
Kontekst z życia
Aplikacje typu „streak" (jak seria w Duolingo) działają na tej zasadzie: liczą, ile dni pod rząd coś robisz, i motywują, żeby nie przerwać. Wy zaprogramujecie ten sam mechanizm serii dni.
Podział obowiązków
| Rola | Konkretne zadania w tym projekcie |
|---|---|
| Lider / analityk | ustala zakres, rysuje diagram danych, zakłada tablicę w Trello, pilnuje terminów, pisze dokumentację (instrukcja użytkownika + opis bazy), przygotowuje i prowadzi prezentację, scala pracę zespołu (Git / wspólny dysk) |
| Projektant bazy danych | baza SQLite (2 tabele, klucz + reguła unikalności wpisu na dzień), dane testowe (kilka nawyków + wpisy z ostatnich 2 tygodni), zapytania: dni wykonane w tygodniu, najdłuższa seria |
| Programista interfejsu (UI) | widoki: lista nawyków z aktualną serią, ekran odhaczania na dziś, podsumowanie tygodnia, historia (kalendarz/lista) |
| Programista logiki / tester | odhaczanie nawyku (jeden wpis na dzień), liczenie serii dni pod rząd, podsumowanie tygodnia, walidacja (brak podwójnego wpisu na ten sam dzień), testy |
Harmonogram
| Tydzień | Kamień milowy |
|---|---|
| 1 | Analiza i projekt: zakres, diagram danych, podział zadań, harmonogram |
| 2 | Baza SQLite + szkielet aplikacji działa |
| 3 | Lista nawyków i odhaczanie połączone z bazą |
| 4 | Liczenie serii dni + podsumowanie tygodnia + testy |
| 5 | Scalenie, poprawki, dokumentacja, prezentacja przed klasą |
Kryteria oceny
Każdy uczeń dostaje ocenę indywidualną za swoją rolę (kryteria zero-jedynkowe) plus wspólny bonus zespołowy. Proporcja: 70% rola + 30% zespół.
Projektant bazy danych (0–10 pkt):
- baza SQLite z 2 tabelami i kluczem obcym (2)
- reguła: jeden wpis na nawyk na dany dzień (2)
- dane testowe: kilka nawyków + wpisy z 2 tygodni (2)
- zapytanie „dni wykonane w tygodniu" (2)
- zapytanie „najdłuższa seria" (2)
Programista logiki / tester (0–10 pkt):
- odhaczenie zapisuje wpis na dziś (2)
- seria dni pod rząd liczy się poprawnie (3)
- podsumowanie tygodnia pokazuje X z 7 dni (2)
- walidacja: brak dwóch wpisów na ten sam dzień (2)
- spisane wyniki testów (1)
Analogiczne zestawy kryteriów obowiązują Lidera (dokumentacja, harmonogram, prezentacja, scalanie) oraz Programistę UI (kompletność widoków, czytelność, połączenie z bazą, walidacja formularzy).
Ocena zespołowa (0–10 pkt):
- aplikacja uruchamia się i działa jako całość (3)
- części zespołu są zintegrowane, nie luźne kawałki (3)
- prezentacja jasno pokazuje działanie i podział pracy (2)
- dokumentacja kompletna: instrukcja + opis bazy (2)
Typowe błędy w pracy zespołowej
- brak wspólnego miejsca na kod → wersje się rozjeżdżają; ustalcie od razu Git albo jeden dysk,
- „zrobimy wszystko na końcu" → kamienie milowe są po to, żeby tego uniknąć,
- każdy pisze w swoim stylu → uzgodnijcie nazewnictwo tabel i zmiennych na starcie,
- nikt nie testuje integracji → tester wchodzi już w 4. tygodniu, nie na końcu.
W tym projekcie szczególnie: błędne liczenie serii przy przerwie (jeden opuszczony dzień musi zerować serię) — przetestujcie na danych z luką.
Nawiązanie do egzaminu
Ten projekt łączy logikę aplikacji, interfejs i lokalną bazę SQLite — czyli rdzeń części praktycznej INF.04 (aplikacja desktopowa/mobilna). Podział ról pozwala każdemu skupić się na innym fragmencie tego, co na egzaminie robi się w pojedynkę.