Aplikacja została napisana w języku Kotlin przy użyciu frameworku Jetpack Compose i przeznaczona jest dla systemu Android. Jest dedykowana dla osób trenujących pole dance, mając na celu wspieranie treningów w tej dziedzinie. Ze względu na wybór grupy docelowej, interfejs aplikacji jest w języku polskim.
Projekt składa się z kilku głównych modułów:
Moduł data_structure
stanowi rdzeń aplikacji, zawierając wszystkie elementy związane z zarządzaniem danymi w bazie.
Głównym celem tego modułu jest obsługa bazy danych opartej na Room,
która przechowuje kluczowe informacje dotyczące figur pole dance.
Centralną tabelą jest Pose
, zawierająca nazwy figur, zdjęcia, poziomy trudności i tagi.
Dodatkowo, ta tabela gromadzi dane użytkownika, takie jak poziom opanowania figury czy osobiste notatki.
Moduł ten zawiera podfoldery:
- daos: Interfejsy do komunikacji z bazą danych.
- models: Definicje struktur danych używanych w bazie.
- references: Referencje tworzące relacje między strukturami danych. oraz pliki zawierające konwertery, dane początkowe, domyślnie znajdujące się w bazie, oraz implementację samej bazy.
W module navbar
znajduje się logika nawigacji między ekranami mojej aplikacji oraz implementacja wysuwanego menu.
Ten moduł umożliwia użytkownikowi wygodne poruszanie się po aplikacji.
Kolejne moduły związane są z poszczególnymi ekranami interfejsu aplikacji.
Każdy z nich zawiera podfolder composables
z kompozytami napisanymi z użyciem Jetpack Compose.
Główny ekran zawsze znajduje się w pliku o nazwie postaci [nazwa widoku]Screen.kt.
Każdy widok ma dedykowany ViewModel znajdujący się poza podfolderem composables
.
Moduł pose_adding_view
pozwala użytkownikowi na dodanie nowej figury do bazy danych.
Jeśli dana figura jeszcze nie istnieje, użytkownik może ją wprowadzić,
zapewniając unikalność i elastyczność listy treningowej.
W pose_detail_view
użytkownik może sprawdzić szczegóły wybranej figury pole dance, takie jak jej opis i poziom trudności.
To miejsce umożliwia wprowadzenie zmian w edytowalnych polach takich jak notatki i poziom opanowania figury.
Użytkownik ma także możliwość edycji i usuwania figur dodanych przez siebie.
Dodatkową funkcjonalnością aplikacji jest codzienne losowanie "figury dnia", która wyświetlana jest na głównym (początkowym) ekranie aplikacji. . Ta funkcjonalność motywuje użytkowników do eksploracji nowych elementów treningowych.
poses_list_view
zawiera listę wszystkich dostępnych figur w aplikacji.
Użytkownik Z tego widoku użytkownik może dodawać figury do polubionych oraz wchodzić do ich
podglądu (Detail view). Ponadto zaimplementowana jest zakładka pozwalająca na filtrowanie
oraz pasek wyszukiwania
Projekt zawiera rozbudowany zestaw testów, co pozwala na zapewnienie solidnej jakości kodu i działania aplikacji.
Testy jednostkowe znajdują się w dwóch głównych podfolderach i są uruchamiane za pomocą AndroidJUnit4:
Folder daoTests
zawiera testy jednostkowe dla operacji bazodanowych.
Testy te sprawdzają poprawność działania interfejsów komunikacji z bazą danych (DAOs), zapewniając integralność przechowywanych danych.
viewmodelsTests
zawiera testy jednostkowe dla poszczególnych ViewModels
.
Dane są mockowane w celu sprawdzenia poprawności logiki biznesowej oraz interakcji między warstwą prezentacji a warstwą danych.
Aby zainstalować aplikację:
- Sklonuj repozytorium:
git clone https://github.com/Hortensjaa/Pole_Planner
- Otwórz projekt w Android Studio.
- Skompiluj i uruchom aplikację na emulatorze lub fizycznym urządzeniu.
Na aktualnym etapie projekt jest działającą aplikacją, która zapewnia podstawowe funkcjonalności ujęte w założeniach. Nie mniej jednak mam wiele pomysłów na jej dalsze rozbudowywanie, które planuję zaimplementować w przyszłości (lista aktualizowana na bieżąco, więc część została już zaimplementowana):
- możliwość dodawania własnych figur, z własnymi zdjęciami
- losowanie "figury dnia"
- opcja dodawania swojego zdjęcia do figury istniejącej w bazie
- możliwość grupowania figur w numerowane kolekcje (układy taneczne)
- kalendarz do umożliwiający planowanie treningów
- wersja aplikacji na system iOS (preferowany przez przytłaczającą większość społeczności pole dance...)