|
1 |
| -# Welcome to your Expo app 👋 |
| 1 | +# Aplikacja Treebie |
| 2 | +**Nazwa aplikacji:** Treebie |
| 3 | +**Twórcy:** Jakub Lagierski, Filip Skoczylas, Jan Niewiadomski, Tymon X |
2 | 4 |
|
3 |
| -This is an [Expo](https://expo.dev) project created with [`create-expo-app`](https://www.npmjs.com/package/create-expo-app). |
| 5 | +Aplikacja pozwala na wykonywania ekologicznych wyzwań, za które można odbierać punkty i ulepszać swoje drzewko. Aplikacja jest skierowana dla każdego, kto chce się przyczynić dla dobra planety. |
| 6 | +W tym formacie, dobre uczynki przestają być nudne i pozwalają na bardziej przystępne podejście do ekologii. Aplikacja jest przeznaczona na platformy iOS oraz Android. |
4 | 7 |
|
5 |
| -## Get started |
| 8 | +## Spis streści |
| 9 | +1. [Instalacja](#instalacja) |
| 10 | +2. [Struktura plików](#struktura-plikow) |
| 11 | +3. [Wykorzystane technologie](#wykorzystane-technologie) |
| 12 | +4. [Funkcjonalności](#funkcjonalnosci) |
6 | 13 |
|
7 |
| -1. Install dependencies |
| 14 | +## Instalacja |
| 15 | + |
| 16 | +1. Sklonuj repozytorium |
| 17 | + |
| 18 | +```bash |
| 19 | +git clone https://github.com/Fivlas/treebie.git |
| 20 | +cd treebie |
| 21 | +``` |
| 22 | + |
| 23 | +2. Pobierz potrzebne zależności |
8 | 24 |
|
9 | 25 | ```bash
|
10 | 26 | npm install
|
11 | 27 | ```
|
12 | 28 |
|
13 |
| -2. Start the app |
| 29 | +3. Uruchom aplikację |
14 | 30 |
|
15 | 31 | ```bash
|
16 | 32 | npx expo start
|
17 | 33 | ```
|
18 | 34 |
|
19 |
| -In the output, you'll find options to open the app in a |
| 35 | +W wynikach znajdziesz opcje otwierania aplikacji w formacie: |
20 | 36 |
|
21 | 37 | - [development build](https://docs.expo.dev/develop/development-builds/introduction/)
|
22 | 38 | - [Android emulator](https://docs.expo.dev/workflow/android-studio-emulator/)
|
23 | 39 | - [iOS simulator](https://docs.expo.dev/workflow/ios-simulator/)
|
24 |
| -- [Expo Go](https://expo.dev/go), a limited sandbox for trying out app development with Expo |
25 |
| - |
26 |
| -You can start developing by editing the files inside the **app** directory. This project uses [file-based routing](https://docs.expo.dev/router/introduction). |
27 |
| - |
28 |
| -## Get a fresh project |
29 |
| - |
30 |
| -When you're ready, run: |
31 |
| - |
32 |
| -```bash |
33 |
| -npm run reset-project |
| 40 | +- [Expo Go](https://expo.dev/go) |
| 41 | + |
| 42 | +## Struktura plików |
| 43 | + ```bash |
| 44 | +treebie/ |
| 45 | +├───%ProgramData% |
| 46 | +│ └───Microsoft |
| 47 | +│ └───Windows |
| 48 | +│ └───UUS |
| 49 | +│ └───State |
| 50 | +├───.vscode |
| 51 | +├───app |
| 52 | +│ ├───(auth) |
| 53 | +│ ├───(tabs) |
| 54 | +│ ├───ai |
| 55 | +│ ├───all |
| 56 | +│ ├───challenge |
| 57 | +│ │ └───[id] |
| 58 | +│ ├───shop |
| 59 | +│ └───tip |
| 60 | +│ └───[id] |
| 61 | +├───assets |
| 62 | +│ ├───fonts |
| 63 | +│ ├───images |
| 64 | +│ └───jsons |
| 65 | +├───components |
| 66 | +│ ├───Ai |
| 67 | +│ ├───Challenges |
| 68 | +│ ├───elements |
| 69 | +│ ├───HomePage |
| 70 | +│ ├───LoginSignup |
| 71 | +│ ├───navigation |
| 72 | +│ ├───TipsPage |
| 73 | +│ └───__tests__ |
| 74 | +│ └───__snapshots__ |
| 75 | +├───constants |
| 76 | +├───functions |
| 77 | +├───hooks |
| 78 | +├───scripts |
| 79 | +└───styles |
34 | 80 | ```
|
35 | 81 |
|
36 |
| -This command will move the starter code to the **app-example** directory and create a blank **app** directory where you can start developing. |
37 |
| - |
38 |
| -## Learn more |
39 |
| - |
40 |
| -To learn more about developing your project with Expo, look at the following resources: |
41 |
| - |
42 |
| -- [Expo documentation](https://docs.expo.dev/): Learn fundamentals, or go into advanced topics with our [guides](https://docs.expo.dev/guides). |
43 |
| -- [Learn Expo tutorial](https://docs.expo.dev/tutorial/introduction/): Follow a step-by-step tutorial where you'll create a project that runs on Android, iOS, and the web. |
| 82 | +## Wykorzystane technologie |
| 83 | +### Aplikacja wykorzystuje następujące technologie i biblioteki: |
| 84 | +- **React Native** - framework do budowania aplikacji mobilnych. |
| 85 | +- **TypeScript** - statyczne typowanie i większa czytelność kodu. |
| 86 | +- **React Navigation** - zarządzanie nawigacją między ekranami. |
| 87 | +- **Expo** - ułatwia konfigurację i testowanie aplikacji. |
| 88 | +- **Firebase** - nierelacyjna baza danych, przechowująca dane aplikacji |
| 89 | + |
| 90 | +### Typowanie z TypeScript |
| 91 | + |
| 92 | +W projekcie wykorzystano **TypeScript** do poprawienia czytelności kodu i minimalizacji błędów. Typy i interfejsy są zorganizowane w katalogu `treebie/typing.d.ts`, a przykładowe interfejsy obejmują: |
| 93 | + |
| 94 | +- **TipData** - interfejs obsługujący właściwosći wskazówek ekologicznych |
| 95 | +- **ChallengeData** - interfejs obsługujący właściwosći wyzwań ekologicznych |
| 96 | + |
| 97 | +### Baza danych |
| 98 | + |
| 99 | +W aplikacji wykorzystano nierelacyjną bazę danych Firestore. Pozwala ona na szybkie i kompleksowe przechowywanie, zarządzanie oraz przeglądanie danych. |
| 100 | +W bazie danych istnieje 4 tabele (kolekcje) z polami: |
| 101 | ++ **likedTips** - kolekcja przechowuje dane o polubionych poradach |
| 102 | + + timestamp (number) - czas dodania do polubionych |
| 103 | + + tipId (string) - id polubionej porady |
| 104 | + + userId (string) - id użytkownika, który polubił poradę |
| 105 | ++ **quests** - kolekcja przechowuje dane o wyzwaniach: |
| 106 | + + title (string) - tytuł (nazwa) wyzywania |
| 107 | + + pointsToGain (number) - punkty za wykonanie zadania |
| 108 | + + difficultyName (string) - pisemna nazwa poziomu trudności wyzwania |
| 109 | + + difficultyLevel (number) - poziom trudności wyrażony jako liczba |
| 110 | + + description (string) - opis wyzywania |
| 111 | + + challengeGroup (string) - grupa do której zalicza się wyzywanie |
| 112 | ++ **tips** - kolekcja przechowuje dane o dostępnych ekologicznych poradach |
| 113 | + + title (string) - tytuł (nazwa) porady |
| 114 | + + popularity (number) - ilość razy odwiedzonej porady przez użytkowników |
| 115 | + + list (array) - tablica przechowująca konkretne wskazówki |
| 116 | + + imageName (string) - adres URL do wyświetlanego zdjęcia |
| 117 | + + description (string) - opis porady |
| 118 | ++ **users** - kolekcja przechowuje dane o użytkownikach |
| 119 | + + currentQuest (string) - przechowuje id obecnie wykonywanego zadania |
| 120 | + + email (string) - email użytkownika |
| 121 | + + likedTips (array) - tablica przechowująca polubione porady przez użytkownika |
| 122 | + + questsDone (array) - tablica przechowująca wykonane wyzwania |
| 123 | + + team (number) - id wybranego drzewa użytkownika (1 lub 2) |
| 124 | + + treeProgress (number) - punkty doświadczenia uzyskiwane przez wykonanie zadań |
| 125 | + |
| 126 | +## Funkcjonalności |
| 127 | +### Użytkownik |
| 128 | +System kont w aplikacji mobilnej pozwala użytkownikom tworzyć, logować się i zarządzać swoim indywidualnym profilem w aplikacji. Oto najważniejsze możliwości, jakie oferuje system kont: |
| 129 | + + **Rejestracja i logowanie**: Umożliwia nowym użytkownikom tworzenie kont i logowanie się na istniejące konta za pomocą adresu e-mail oraz hasła. |
| 130 | + + **Zarządzanie danymi**: Użytkownicy mogą przeglądać swoje polubione porady czy zmieniać motyw co pozwala na personalizację i lepsze dopasowanie aplikacji do potrzeb. |
| 131 | + + **Bezpieczeństwo i prywatność**: System kont umożliwia bezpieczne przechowywanie danych oraz zarządzanie sesjami logowania, co zwiększa ochronę kont użytkowników. |
| 132 | +System kont zwiększa użyteczność i funkcjonalność aplikacji, umożliwiając lepsze dostosowanie jej do indywidualnych potrzeb użytkowników oraz ich ochronę. |
| 133 | +### Wyzwania |
| 134 | +System wyzwań w aplikacji umożliwia użytkownikom realizację określonych zadań, za które zdobywają punkty doświadczenia (XP), co powoduje rośnięcie własnego drzewka oraz motywuje użytkownika do regularnego korzystania z aplikacji. Poniżej główne możliwości takiego systemu: |
| 135 | ++ **Różne typy wyzwań**: Wyzwania mają różny stopień trudności (łatwy, średni, trudny) oraz kategorie (challengeGroup) np. Sadzenie, Zbieranie, Zakupy |
| 136 | ++ **Nagrody za wykonanie**: Za ukończenie wyzwań użytkownicy zdobywają punkty doświadczenia, które powodują rośnięcie drzewa i zwiększenie poziomu. |
| 137 | +Taki system wyzwań poprawia zaangażowanie użytkowników, ułatwia śledzenie postępów i pozwala na połączenie przyjemnej rozgrywki z pożytecznym wpływem na środowisko. |
44 | 138 |
|
45 |
| -## Join the community |
46 | 139 |
|
47 |
| -Join our community of developers creating universal apps. |
48 | 140 |
|
49 |
| -- [Expo on GitHub](https://github.com/expo/expo): View our open source platform and contribute. |
50 |
| -- [Discord community](https://chat.expo.dev): Chat with Expo users and ask questions. |
|
0 commit comments