HotScrew jest mobilną aplikacją, umożliwiającą robotom znalezienie swojej drugiej połówki i umówienie się z nią na randkę przy pomocy wbudowanego czatu. Wzorem przy projektowaniu i programowaniu była aplikacja Tinder. HotScrew dostępna jest na smartfony z systemem operacyjnym Android. Zastosowana technologia umożliwia przy niewielkiej modyfikacji zbudowanie działającej aplikacji na smartfony z systemem iOS lub aplikacji webowej. Aplikacja wykonana na laboratorium z przedmiotu “Programowanie aplikacji mobilnych” w semestrze zimowym 2021/2022.
Podział prac
Nad projektem aplikacji pracowała czteroosobowa grupa. Skład i podział prac wyglądał następująco:
- Karpiński Maciej:
- Project Manager
- DevOps;
- Implementacja backendu aplikacji;
- Backend AWS Amplify.
- Krysa Marcin:
- Backend AWS Amplify;
- Implementacja backendu aplikacji;
- Implementacja czatu.
- Kuczma Łukasz:
- Projekt graficzny makiet;
- System dopasowań;
- Implementacja frontendu aplikacji.
- Mertuszka Adam:
- Implementacja frontendu aplikacji;
- Implementacja czatu;
- System dopasowań.
Ale jak to powszechnie wiadomo w pracach grupowych jeden robi więcej, drugi mniej. W tym wypadku większość pracy wykonałem samodzielnie, zostawiając chłopakom czas nad pracę nad aplikacją Lodovka, gdzie to oni wykonali większość roboty 🙂
Opis funkcjonalny
Aplikacja HotScrew realizuje następne funkcjonalności:
- Rejestracja i logowanie przy pomocy e-maila;
- Logowanie przy pomocy konta Facebooka;
- Logowanie przy pomocy konta Google;
- Personalizacja profilu;
- Przeglądanie dopasowanych profilów;
- Polubienie i odrzucenie profilu;
- Czat między dopasowanymi profilami;
- Obsługa AWS Amplify;
- Aplikacja działająca na systemie operacyjnym Android.
Interfejs
Makiety interfejsu aplikacji został zaprojektowane w aplikacji Figma.
Bazując na zaprojektowanych makietach udało się stworzyć następujący interfejs aplikacji:
Ekrany odpowiedzialne za logowanie, rejestrację i resetowanie hasła zostały wygenerowane automatycznie przez SDK AWS, niestety ze względu na brak czasu nie został od dopasowany do pozostałej części funkcjonalności.
Backend
Aplikacja wykorzystuje AWS Amplify a w szczególności poniższe części:
Po zakończeniu projektu backend aplikacji został wyłączony aby nie generował niepotrzebnych kosztów.
Stack technologiczny
W projekcie wykorzystany zostały następujące technologie:
- Amazon Cognito Identity SDK for JavaScript
- Android Studio
- AWS Amplify
- AWS Amplify React Native
- Core Asynciterator Polyfill
- Expo
- Expo AV
- Expo ImagePicker
- Expo Linking
- Expo React Native ActionSheet
- Feather icons
- InAppBrowser for React Native
- Node.js
- NPM
- React
- React Native
- React Native Async Storage
- React Native Community
- React Native Emoji Selector
- React Native Gesture Handler
- React Native Image Picker
- React Native Permissions
- React Native Picker
- React Native Picker Select
- React Native Reanimated
- React Native SafeAreaContext
- React Native VectorIcons
- uuidv4
- Visual Studio Code
Podsumowanie
Projekt aplikacji mobilnej był bardzo ciekawy, choć nie jest to pierwsza aplikacja mobilna, którą robiłem była ona zdecydowanie najbardziej rozbudowana. Największym wyzwaniem okazało się wykorzystanie języka JavaScript, mimo że znak kilka innych języków to sprawiał mi on trochę problemu. Jestem zdecydowanie zwolennikiem języków statycznie typowanych, znacznie ułatwia mi to pisanie i debugowanie kodu - kompilator Rusta mnie chyba za bardzo rozpieścił 😅. Oczywiście zamiast JavaScripta mogłem wykorzystać TypeScripta ale duża część różnego rodzaju tutoriali do ReactNative była pisana z uwzględnieniem JS więc i tego się trzymałem. Zdecydowanym zaskoczeniem było dla mnie gdy w czasie prezentacji funkcjonalności czatu działał on bezproblemowo, wcześniej podczas testów zdarzało się że wiadomości przychodziły ze sporym opóźnieniem i często w dosyć losowej kolejności, mimo że w bazie danych były one prawidłowo zapisane. Czy bym jeszcze z własnej nieprzymuszonej woli wybrał ReactNative i JS do pisania kolejne aplikacji mobilne? Odpowiedź brzmi: Zdecydowanie nie, takie połączenie jest dla mnie zbyt pokręcone 🤣, zdecydowanie lepiej wspominam aplikacje, które kiedyś pisałem w Javie.
Nazwa HotScrew jest “lekko” kontrowersyjna, zupełnie przypadkowo 😅 wymyśliłem sobie “Gorącą śrubkę” i tak też to przetłumaczyłem i zgłosiłem podczas pierwszego etapu projektu… dopiero później zostałem uświadomiony że jest w niej drugie dno 🤣 na szczęście wszystko obyło się bez afery a i jak później się okazało “Śrubka” została zapamiętana i dzięki niej zaliczyłem laboratorium z przedmiotu Programowanie dla inżynierów na magisterce 😁
Repozytorium kodu
Repozytorium projektu znajduje się na moim GitHubie