## Autorzy
Michał Hajahmadov \
Mateusz Garncarczyk
# Specyfikacja wymagań
### 1. Historyjki użytkownika
#### Rejestracja i Profil Użytkownika:
- Jako nowy użytkownik, chcę móc zarejestrować się w aplikacji, używając swojego konta e-mail lub konta społecznościowego.
- Po zalogowaniu, chciałbym mieć możliwość uzupełnienia swojego profilu, dodając zdjęcie, opis oraz preferencje dotyczące trasy rowerowej.
#### Śledzenie Trasy i Postępu:
- Jako użytkownik, chciałbym móc uruchomić funkcję śledzenia mojej trasy podczas jazdy na rowerze.
- Podczas jazdy, chciałbym mieć dostęp do informacji na temat aktualnie pokonanej odległości, średniej prędkości oraz czasu trwania trasy.
- Po zakończeniu trasy, chciałbym zobaczyć szczegółową analizę mojego przejazdu, w tym wysokość przewyższenia i mapę trasy.
#### Rywalizacja i Wyzwania:
- Jako użytkownik, chciałbym móc brać udział w różnych wyzwaniach rowerowych, takich jak "Najwięcej kilometrów w miesiącu" lub "Najszybsza trasa".
- Pragnę mieć możliwość tworzenia własnych wyzwań i zapraszania innych użytkowników do udziału.
- Po zakończeniu wyzwania, chciałbym zobaczyć ranking uczestników i ewentualnie zdobyć nagrody.
### 2. Wymagania funkcjonalne
#### Rejestracja i Profil Użytkownika:
- Umożliwienie rejestracji przy użyciu adresu e-mail lub konta społecznościowego.
- Tworzenie i edycja profilu użytkownika z opcjonalnymi informacjami i zdjęciem.
#### Śledzenie Trasy i Postępu:
- Funkcja GPS do śledzenia trasy i zbierania danych dotyczących przejazdu.
- Wyświetlanie na bieżąco informacji o odległości, prędkości i czasie trwania trasy.
- Tworzenie szczegółowych statystyk i analiz po zakończeniu trasy.
#### Rywalizacja i Wyzwania:
- System rankingowy dla użytkowników oparty na ilości pokonanych kilometrów.
- Tworzenie i uczestnictwo w publicznych i prywatnych wyzwaniach.
- Przyznawanie odznak i nagród dla zwycięzców wyzwań.
#### Powiadomienia:
- Wysyłanie powiadomień push o nowych wyzwaniach, zaproszeniach do przyłączenia się do grupy oraz aktualizacjach związanych z aplikacją.
#### Integracja Społecznościowa:
- Możliwość udostępniania tras i osiągnięć na platformach społecznościowych.
- Integracja z mapami online do łatwiejszego planowania tras.
#### Panel administratora
- Możliwość usuwania użytkowników, grup oraz postów.
- Możliwość zmiany hasła użytkownikom.
- Zarządzanie (czyli dodawanie, edytowanie, usuwanie, czy samo przeglądanie), bonusów, tras, wyzwań i odznak.
### 3. Wymagania niefunkcjonalne:
#### Wydajność
- Aplikacja powinna szybko reagować na działania użytkownika, zapewniając płynne śledzenie trasy i aktualizacje statystyk.
#### Bezpieczeństwo
- Wszystkie dane użytkowników, w tym informacje o trasach, powinny być przechowywane bezpiecznie i chronione przed nieautoryzowanym dostępem.
#### Dostępność
- Aplikacja powinna być dostępna na popularnych platformach mobilnych, takich jak iOS i Android, zapewniając jednolite doświadczenie użytkownika.
#### Skalowalność
- System powinien być elastyczny i skalowalny, aby obsłużyć rosnącą liczbę użytkowników i danych związanych z trasami rowerowymi.
#### Interfejs Użytkownika:
- Aplikacja powinna posiadać intuicyjny interfejs użytkownika, umożliwiający łatwe nawigowanie i korzystanie z funkcji.