Górołazi

Górołazi to rozbudowana aplikacja mobilna dla osób, które kochają góry, planują wycieczki i chcą dzielić się swoimi doświadczeniami z innymi. Projekt obejmuje aplikację mobilną, backend, portal webowy, mapy, routing, funkcje społecznościowe, planowanie tras oraz integracje z zewnętrznymi usługami.
Pomysł powstał z potrzeby stworzenia jednego miejsca, które łączy funkcje mapy turystycznej, planera wycieczek i społeczności skupionej wokół gór.
Dziś aplikacja rozwijana jest dla użytkowników w kilku krajach Europy i ma ponad 2100 aktywnych użytkowników.
Co powstało w ramach projektu
Aplikacja pozwala użytkownikom m.in. przeglądać mapy szlaków, wyszukiwać szczyty, schroniska, jeziora, jaskinie i inne obiekty, planować wycieczki oraz tworzyć własne relacje z górskich wypraw.
Rozbudowana część społecznościowa obejmuje obserwowanie użytkowników, komentarze, reakcje, wzmianki, prywatne wiadomości, kanały tematyczne oraz moduł Górskie znajomości, który pomaga znaleźć osoby o podobnych zainteresowaniach lub towarzystwo na szlak.
W aplikacji znalazły się również:
planowanie tras i wielodniowych wycieczek,
nawigacja po trasie,
mapy 2D i 3D,
mapy działające offline,
import tras GPX,
informacje o zamknięciach szlaków,
profile użytkowników, statystyki i odznaki,
system powiadomień,
czat i wiadomości głosowe,
rezerwacja przewodników górskich,
zgłaszanie nowych punktów i obiektów na mapie,
integracja z urządzeniami typu smartwatch,
rozbudowana Księga Gór z informacjami o pasmach, atrakcjach, florze i faunie.
Od pomysłu do działającego produktu
Górołazi nie jest projektem opartym na gotowym systemie. Cała architektura została zaprojektowana i rozwijana od podstaw.
Po stronie mobilnej aplikacja wykorzystuje React Native i Expo, dzięki czemu jedna baza kodu obsługuje systemy iOS i Android.
Backend został zbudowany w NestJS, a dane przechowywane są w PostgreSQL. W projekcie wykorzystywane są również Redis, kolejki zadań, OpenSearch oraz osobne usługi odpowiedzialne za routing i dane wysokościowe.
Panel i portal webowy powstały w Next.js.
Dużą częścią projektu jest także infrastruktura mapowa. Aplikacja korzysta z danych OpenStreetMap, własnych indeksów obiektów geograficznych oraz silnika routingu obsługującego obecnie wiele krajów Europy.
Największe wyzwania
Jednym z największych wyzwań było połączenie bardzo dużej ilości danych geograficznych z płynnym działaniem aplikacji mobilnej.
Sam indeks obiektów geograficznych zawiera ponad milion rekordów, dlatego wyszukiwanie, filtrowanie i wyświetlanie danych wymagało zastosowania osobnej warstwy wyszukiwarki oraz optymalizacji po stronie backendu i aplikacji.
Kolejnym wyzwaniem było przygotowanie routingu pieszych tras dla wielu krajów Europy, obsługa map offline oraz nawigacja działająca w terenie, również przy słabym dostępie do internetu.
Technologie
Mobile: React Native, Expo
Frontend: Next.js
Backend: NestJS, TypeScript
Baza danych: PostgreSQL, TypeORM
Cache i kolejki: Redis, Bull
Wyszukiwanie: OpenSearch
Mapy: MapLibre, OpenStreetMap
Routing: GraphHopper
Infrastruktura: Docker, OVH, Object Storage, CI/CD
Efekt
Projekt został opublikowany na iOS i Androidzie i jest stale rozwijany na podstawie opinii użytkowników.
W ciągu pierwszych miesięcy aplikacja zdobyła ponad 2100 aktywnych użytkowników, a kolejne wersje regularnie rozszerzają ją o nowe funkcje związane z mapami, społecznością, planowaniem tras i bezpieczeństwem w górach.
Dla mnie Górołazi to przede wszystkim przykład projektu, w którym mogłem połączyć aplikację mobilną, backend, mapy, duże zbiory danych, infrastrukturę oraz projektowanie całego produktu od podstaw.
