Skip to content

PiotrG2015/Run

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 

Repository files navigation

###Piotr Gorczyca

###Aplikacja mobilna dla biegaczy Run!

####Krótki opis działania aplikacji Aplikacja ma na celu umożliwienie jej użytkownikom łatwej komunikacji w celu ustalenia wspólnych treningów biegowych, dzięki implementacji następujących funkcjonalności:

  • Tworzenie nowego konta
  • Edycja profilu
  • Wysyłanie i odbieranie prywatnych wiadomości
  • Przeglądanie profilów innych użytkowników
  • Odczytywanie/dodawanie komentarzy na profilach innych użytkowników
  • Wyświetlanie listy treningów dodanych przez użytkowników
  • Dodawanie/usuwanie treningów
  • Możliwość zgłoszenia udziału w danym treningu
  • Wyszukiwanie użytkowników

####Technologie zastosowane przy budowie aplikacji oraz bazy danych Projekt składa się z dwóch części:

  • Bazy danych zaimplementowanej w MySQL do której obsługi użyłem ogólnodostępnego frameworka Phalcon PHP. Do jego wyboru przekonały mnie liczne opinie nt. jego wysokiej wydajności w porównaniu do innych popularnych framworków. Stworzyłem proste API, które ma za zadanie ułatwić komunikację z aplikacją poprzez pobieranie danych oraz kodowanie ich w formacie JSON (analogicznie w przypadku zapisu danych).

  • Aplikacji android do której utworzenia wykorzystałem bibliotekę Volley ułatwiającą tworzenie zapytań.

####Opis struktury bazy danych

Baza danych składa się z 6 tabel:

  • users – tabela reprezentująca pojedynczego użytkownika
  • trainings – tabela reprezentująca pojedynczy trening
  • comments – tabela reprezentująca pojedynczy komentarz
  • messages – tabela reprezentująca pojedyńczą wiadomość
  • attendings – tabela reprezentująca powiązanie pomiędzy treningiem a osobą biorącą w nim udział
  • profiles – tabela reprezentująca profil pojedynczego użytkownika

####Struktura zbudowanego API Struktura zbudowanego API

Implementacje powyższych metod znajdują się w pliku index.php, w katalogu api/ projektu. Oprócz standardowych zapytań typu SELECT, INSERT, UPDATE, DELETE stworzyłem również kilka funkcji pomocniczych w bazie MySQL:

  • getAverageDistanceByGender(Gender VARCHAR(10)) – zwraca średni dystans treningów względem płci

  • getMaxDistanceById(id INT(11)) – zwraca maksymalny przebiegnięty dystans przez użytkownika o podanym id

  • getNewUserCountByGender(Gender VARCHAR(10)) – zwraca liczbę nowych użytkowników zarejestrowanych w bieżącym miesiący względem płci

  • getTotalDistanceById(id INT(11)) – zwraca całkowity dystans przebiegnięty przez osobe o podanym id

  • idIntoUniqueId(id INT(11)) – zwraca unikalne id użytkownika bazując na publicznym id, funkcja służy do przypisania wiadomości do odpowiedniego odbiorcy, bez znajomości jego unikalnego (prywatnego) id Utworzyłem trigger odpowiedzialny za dodanie nowego wiersza do tabeli profiles po utworzeniu nowego konta, a także widok do wyświetlania wszystkich przyszłych treningów. #####Struktura plików katalogu api/ :

  • .htaccess – plik konfiguracyjny serwera Apache

  • index.php – plik zawierający implementację podanych wyżej metod GET, POST, PUT, DELETE

  • config.php – plik zawierający dane potrzebne do połączenia się z serwerem lokalnym oraz bazą danych takie jak: nazwa użytkownika, hasło, nazwa bazy danych

  • PassHash.php – plik zawierający implementację funkcji odpowiedzialnych za (de)kodowanie hasła oraz sprawdzanie jego poprawności

  • models/ - folder zawierający pliki php opisujące model danych zawartych w poszczególnych tabelach

####Opis struktury aplikacji mobilnej Aplikacja składa się na 12 „ekranów”, są to:

  • Ekran logowania
  • Ekran rejestracji
  • Lista treningów
  • Ekran danego treningu
  • Profil użytkownika
  • Statystyki
  • Wiadomości
  • Ekran czatu
  • Edycja danych profilu
  • Ekran dodawania komentarza (formularz)
  • Ekran dodawania treningu (formularz)
  • Wyszukiwanie użytkowników

Zarządzanie sesją logowania Aplikacja dodatkowo korzysta z bazy SQLite, aby przechowywać najczęściej używane, powtarzające się dane. Tabela przechowuje dane aktualnie zalogowanego użytkownika takie jak:

  • Imię
  • Adres e-mail
  • Unikalne id
  • Publiczne id
  • Datę utworzenia konta

Dane te przekazywane są podczas pomyślnego zalogowania do aplikacji i przechowywane do momentu wylogowania się przez użytkownika. W celu zarządzania sesją logowania stworzyłem klasę o nazwie SessionManager, w której przy pomocy Shared Preferences przechowuję wartość typu boolean mówiącą o tym czy użytkownik jest zalogowany. Po pomyślnym zalogowaniu wartość wspomnianego pola ustawiana jest na true, a przypadku wylogowania na false.

####Przykładowe screeny z działającej aplikacji Przykładowe screeny z działającej aplikacji

Źródła, z których korzystałem:

About

Projekt aplikacji dla biegaczy

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published