{"id":26976999,"url":"https://github.com/fivlas/treebie","last_synced_at":"2026-04-12T05:34:26.898Z","repository":{"id":262906167,"uuid":"879712223","full_name":"Fivlas/treebie","owner":"Fivlas","description":"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. W tym formacie, dobre uczynki przestają być nudne i pozwalają na bardziej przystępne podejście do ekologii.","archived":false,"fork":false,"pushed_at":"2025-01-21T10:15:47.000Z","size":25618,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-21T11:25:14.736Z","etag":null,"topics":["eko","firebase","react-native","typescript"],"latest_commit_sha":null,"homepage":"https://treebie-download-page.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Fivlas.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-28T12:21:05.000Z","updated_at":"2025-01-21T10:15:50.000Z","dependencies_parsed_at":null,"dependency_job_id":"9d2c0707-d41b-438a-ae54-a4255348a99a","html_url":"https://github.com/Fivlas/treebie","commit_stats":null,"previous_names":["fivlas/treebie"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fivlas%2Ftreebie","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fivlas%2Ftreebie/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fivlas%2Ftreebie/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fivlas%2Ftreebie/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Fivlas","download_url":"https://codeload.github.com/Fivlas/treebie/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246998226,"owners_count":20866696,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["eko","firebase","react-native","typescript"],"created_at":"2025-04-03T12:17:51.323Z","updated_at":"2025-12-30T23:09:26.053Z","avatar_url":"https://github.com/Fivlas.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Aplikacja zajeła miejsce finalisty w ogólnopolskim konkursie HackHeroes\n\n# Aplikacja Treebie  \n**Nazwa aplikacji:** Treebie  \n**Twórcy:** Jakub Lagierski, Filip Skoczylas, Jan Niewiadomski, Tymon Wilczewski  \n\nAplikacja 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.\nW 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.\n\n## Android preview download  \n### \u003ca href=\"https://github.com/Fivlas/treebie/releases/download/v1.0.0/Treebie.Aplikacja.apk\" download\u003ePobierz\u003c/a\u003e\n\n## Prezentacje aplikacji znajdziesz tutaj\n### \u003ca href=\"https://www.canva.com/design/DAGbts4YzwA/MpNrUI67SmXzNsS_mAr5FQ/edit?utm_content=DAGbts4YzwA\u0026utm_campaign=designshare\u0026utm_medium=link2\u0026utm_source=sharebutton\"\u003ePrezentacja\u003c/a\u003e\n\n## Oficjalna strona do pobrania aplikacji\n### \u003ca href=\"https://treebie-download-page.vercel.app/\"\u003eStrona\u003c/a\u003e\n\n## Pełną Dokumentacje znajdziesz Tutaj\n### \u003ca href=\"https://github.com/Fivlas/treebie/tree/main/Documentation\"\u003eDokumentacja\u003c/a\u003e\n\n## Spis treści\n1. [Instalacja](#instalacja)\n2. [Struktura plików](#struktura-plików)\n3. [Wykorzystane technologie](#wykorzystane-technologie)\n4. [Funkcjonalności](#funkcjonalności)\n5. [Podgląd](#podgląd)\n\n## Instalacja\n\n1. Sklonuj repozytorium\n\n```bash\ngit clone https://github.com/Fivlas/treebie.git\ncd treebie\n```\n\n2. Pobierz potrzebne zależności\n\n   ```bash\n   npm install\n   ```\n\n3. Uruchom aplikację\n\n   ```bash\n    npx expo start\n   ```\n\nW wynikach znajdziesz opcje otwierania aplikacji w formacie:\n\n- [development build](https://docs.expo.dev/develop/development-builds/introduction/)\n- [Android emulator](https://docs.expo.dev/workflow/android-studio-emulator/)\n- [iOS simulator](https://docs.expo.dev/workflow/ios-simulator/)\n- [Expo Go](https://expo.dev/go)\n\n## Struktura plików\n ```bash\ntreebie/\n├───.expo\n│   └───types\n├───app\n│   ├───(auth)\n│   ├───(tabs)\n│   ├───ai\n│   ├───all\n│   ├───challenge\n│   │   └───[id]\n│   └───tip\n│       └───[id]\n├───assets\n│   ├───fonts\n│   ├───images\n│   └───jsons\n├───components\n│   ├───Ai\n│   ├───Challenges\n│   ├───elements\n│   ├───HomePage\n│   ├───LoginSignup\n│   ├───navigation\n│   ├───TipsPage\n│   └───__tests__\n│       └───__snapshots__\n├───constants\n├───Documentation\n│   ├───app\n│   │   ├───(auth)\n│   │   ├───(tabs)\n│   │   ├───ai\n│   │   ├───all\n│   │   ├───challenge\n│   │   └───tip\n│   ├───components\n│   │   ├───Ai\n│   │   ├───Challenges\n│   │   ├───constants\n│   │   ├───elements\n│   │   ├───HomePage\n│   │   ├───LoginSignup\n│   │   ├───navigation\n│   │   └───TipsPage\n│   ├───functions\n│   └───hooks\n├───functions\n├───hooks\n├───scripts\n└───styles\n```\n\n## Części aplikcji\nAplikacja składa się z 5 głównych części. Są to strona główna, wyzwania, porady, drzewko oraz ustawienia.  \n### Strona główna  \n+ Jest to główna strona aplikacji, która zapewnia dostęp do porad dotyczących ekologii oraz interaktywny czat z chatbotem AI, który może odpowiadać na pytania użytkownika i udzielać ekologicznych wskazówek.\n+ Użytkownik może zobaczyć najnowsze porady ekologiczne oraz rozmawiać z AI, aby uzyskać dodatkowe porady lub sugestie. Strona ta stanowi centralne miejsce interakcji z aplikacją i ekologicznymi treściami.\n### Wyzwania  \nSystem 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:  \n+ **Różne typy wyzwań**: Wyzwania mają różny stopień trudności (łatwy, średni, trudny) oraz kategorie (challengeGroup) np. Sadzenie, Zbieranie, Zakupy  \n+ **Nagrody za wykonanie**: Za ukończenie wyzwań użytkownicy zdobywają punkty doświadczenia, które powodują rośnięcie drzewa i zwiększenie poziomu. 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.\n### Porady\nPorady w aplikacji mobilnej umożliwia użytkownikom przeglądanie ekologicznych porad w przystępny sposób. Użytkownicy mogą odkrywać różnorodne wskazówki związane z dbaniem o środowisko, a także zapisywać ulubione, by łatwo do nich wrócić.  \n+ **Przeglądanie i odkrywanie porad**: Użytkownicy mogą przeglądać listę ekologicznych porad, które są wyświetlane w formie kafelków. Każda porada zawiera krótki opis oraz przyciągającą uwagę grafikę, aby zachęcić do jej przeczytania.\n+ **Polubienie porad**: Każda porada posiada opcję „polubienia”, co pozwala użytkownikom na zapisanie interesujących ich treści. Dzięki temu użytkownik może stworzyć własną listę ulubionych porad, co ułatwia powrót do najważniejszych informacji.\n+ **Graficzna prezentacja**: Każda porada posiada dedykowany obraz, który nie tylko wzbogaca wizualnie aplikację, ale także zwiększa zrozumienie porady, dając użytkownikowi skojarzenie z konkretnymi działaniami.\n### Drzewko\nStrona drzewka w aplikacji stanowi centralny element wizualizujący postępy użytkownika, motywując go do realizacji kolejnych zadań i regularnego korzystania z aplikacji. Poniżej główne możliwości tego modułu:  \n+ **Wzrost drzewka:** Drzewko rośnie za zdobyte punkty doświadczenia (XP), które użytkownicy otrzymują za wypełnianie wyzwań. Każdy etap wzrostu odzwierciedla poziom zaangażowania i postępu, co zachęca do aktywności oraz umożliwia śledzenie osiągnięć w aplikacji.  \n+ **Różne typy drzewek:** Użytkownicy mogą wybrać typ drzewka na początku tworzenia konta, co pozwala na personalizację rozgrywki. Dostępne są 2 gatunki drzew.  \nSystem drzewka łączy przyjemną rozgrywkę z efektywnym śledzeniem postępów, wspierając długoterminowe zaangażowanie oraz tworząc wizualny symbol osiągnięć użytkownika.  \n\n### Ustawienia\nStrona ustawień w aplikacji umożliwia użytkownikom personalizację doświadczenia oraz zarządzanie swoim kontem. Poniżej główne możliwości dostępne w tym module:\n+ Motyw aplikacji: Użytkownicy mogą wybrać preferowany tryb wyświetlania (jasny lub ciemny) za pomocą przełącznika. Zmiana motywu pozwala dostosować wygląd aplikacji do indywidualnych preferencji oraz warunków oświetleniowych.\n+ Wylogowanie: Przycisk wylogowania umożliwia użytkownikom szybkie i bezpieczne zakończenie sesji. Funkcja ta zapewnia prywatność oraz ochronę danych w przypadku korzystania z aplikacji na współdzielonym urządzeniu.\nRozwiązania te wspierają intuicyjne korzystanie z aplikacji, pozwalając użytkownikom na pełną kontrolę nad wyglądem i bezpieczeństwem swojego konta.\n  \n## Wykorzystane technologie\n\n### Aplikacja wykorzystuje następujące technologie i biblioteki:\n- **React Native** - framework do budowania aplikacji mobilnych.\n- **TypeScript** - statyczne typowanie i większa czytelność kodu.\n- **React Navigation** - zarządzanie nawigacją między ekranami.\n- **Expo** - ułatwia konfigurację i testowanie aplikacji.\n- **Firebase** - nierelacyjna baza danych, przechowująca dane aplikacji\n\n### Typowanie z TypeScript\n\nW 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ą:\n\n- **TipData** - interfejs obsługujący właściwości wskazówek ekologicznych\n- **ChallengeData** - interfejs obsługujący właściwości wyzwań ekologicznych\n\n### Baza danych \n\nW aplikacji wykorzystano nierelacyjną bazę danych Firestore. Pozwala ona na szybkie i kompleksowe przechowywanie, zarządzanie oraz przeglądanie danych.  \nW bazie danych istnieje 4 tabele (kolekcje) z polami:  \n+ **likedTips** - kolekcja przechowuje dane o polubionych poradach\n  + timestamp (number) - czas dodania do polubionych  \n  + tipId (string) - id polubionej porady  \n  + userId (string) - id użytkownika, który polubił poradę  \n+ **quests** - kolekcja przechowuje dane o wyzwaniach:  \n  + title (string) - tytuł (nazwa) wyzywania\n  + pointsToGain (number) - punkty za wykonanie zadania\n  + difficultyName (string) - pisemna nazwa poziomu trudności wyzwania\n  + difficultyLevel (number) - poziom trudności wyrażony jako liczba\n  + description (string) - opis wyzywania\n  + challengeGroup (string) - grupa do której zalicza się wyzywanie  \n+ **tips** - kolekcja przechowuje dane o dostępnych ekologicznych poradach  \n  + title (string) - tytuł (nazwa) porady \n  + list (array) - tablica przechowująca konkretne wskazówki\n  + imageName (string) - adres URL do wyświetlanego zdjęcia\n  + description (string) - opis porady  \n+ **users** - kolekcja przechowuje dane o użytkownikach  \n  + currentQuest (string) - przechowuje id obecnie wykonywanego zadania\n  + email (string) - email użytkownika\n  + likedTips (array) - tablica przechowująca polubione porady przez użytkownika\n  + questsDone (array) - tablica przechowująca wykonane wyzwania\n  + team (number) - id wybranego drzewa użytkownika (1 lub 2)\n  + treeProgress (number) - punkty doświadczenia uzyskiwane przez wykonanie zadań  \n\n\n## Funkcjonalności\n### Użytkownik  \nSystem 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:  \n  + **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.  \n  + **Zarządzanie danymi**: Użytkownicy mogą przeglądać swoje polubione porady czy zmieniać motyw  co pozwala na personalizację i lepsze dopasowanie aplikacji do potrzeb.  \n  + **Bezpieczeństwo i prywatność**: System kont umożliwia bezpieczne przechowywanie danych oraz zarządzanie sesjami logowania, co zwiększa ochronę kont użytkowników.  \nSystem kont zwiększa użyteczność i funkcjonalność aplikacji, umożliwiając lepsze dostosowanie jej do indywidualnych potrzeb użytkowników oraz ich ochronę.\n\n\n\n## Podgląd\n| ![Image 1](https://github.com/Fivlas/treebie/blob/main/assets/images/readmeImgs/mainScreen-light.png?raw=true) | ![Image 2](https://github.com/Fivlas/treebie/blob/main/assets/images/readmeImgs/mainScreen-dark.png?raw=true) |\n|---------------------------------------------|---------------------------------------------|\n| ![Image 3](https://github.com/Fivlas/treebie/blob/main/assets/images/readmeImgs/mainScreen2-light.png?raw=true) | ![Image 4](https://github.com/Fivlas/treebie/blob/main/assets/images/readmeImgs/mainScreen2-dark.png?true) |\n|---------------------------------------------|---------------------------------------------|\n| ![Image 3](https://github.com/Fivlas/treebie/blob/main/assets/images/readmeImgs/chatbot-light.png?raw=true) | ![Image 4](https://github.com/Fivlas/treebie/blob/main/assets/images/readmeImgs/chatbot-dark.png?raw=true) |\n|---------------------------------------------|---------------------------------------------|\n| ![Image 3](https://github.com/Fivlas/treebie/blob/main/assets/images/readmeImgs/allTips-light.png?raw=true) | ![Image 4](https://github.com/Fivlas/treebie/blob/main/assets/images/readmeImgs/allTips-dark.png?raw=true) |\n|---------------------------------------------|---------------------------------------------|\n| ![Image 3](https://github.com/Fivlas/treebie/blob/main/assets/images/readmeImgs/tipDetail-light.png?raw=true) | ![Image 4](https://github.com/Fivlas/treebie/blob/main/assets/images/readmeImgs/tipDetail-dark.png?raw=true) |\n|---------------------------------------------|---------------------------------------------|\n| ![Image 3](https://github.com/Fivlas/treebie/blob/main/assets/images/readmeImgs/quests-light.png?raw=true) | ![Image 4](https://github.com/Fivlas/treebie/blob/main/assets/images/readmeImgs/quests-dark.png?raw=true) |\n|---------------------------------------------|---------------------------------------------|\n| ![Image 3](https://github.com/Fivlas/treebie/blob/main/assets/images/readmeImgs/questDetail-light.png?raw=true) | ![Image 4](https://github.com/Fivlas/treebie/blob/main/assets/images/readmeImgs/questDetail-dark.png?raw=true) |\n|---------------------------------------------|---------------------------------------------|\n| ![Image 3](https://github.com/Fivlas/treebie/blob/main/assets/images/readmeImgs/tree-light.png?raw=true) | ![Image 4](https://github.com/Fivlas/treebie/blob/main/assets/images/readmeImgs/tree-dark.png?raw=true) |\n|---------------------------------------------|---------------------------------------------|\n| ![Image 3](https://github.com/Fivlas/treebie/blob/main/assets/images/readmeImgs/settings-light.png?raw=true) | ![Image 4](https://github.com/Fivlas/treebie/blob/main/assets/images/readmeImgs/settings-dark.png?raw=true) |\n|---------------------------------------------|---------------------------------------------|\n| ![Image 3](https://github.com/Fivlas/treebie/blob/main/assets/images/readmeImgs/login.png?raw=true) | ![Image 4](https://github.com/Fivlas/treebie/blob/main/assets/images/readmeImgs/welcomeScreen.png?raw=true) |\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffivlas%2Ftreebie","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffivlas%2Ftreebie","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffivlas%2Ftreebie/lists"}