bluesBrackets logobluesBrackets logo
< CASE STUDY >

Aplikacja do obsługi ruchu turystycznego

Aplikacja do obsługi ruchu turystycznego
240 tys.Użytkowników
260 tys.Rezerwacji
6 tys.Produktów
370 tys.Zleceń

Klient

Mr. Shuttle, touroperator branży turystycznej, specjalizuje się w profesjonalnych usługach transportowych dla turystów oraz podróżujących służbowo, oferując między innymi transfery lotniskowe, transfery międzymiastowe, a także wycieczki jednodniowe.

React
React

Biblioteka JavaScript stworzona przez Facebooka, służąca do budowania interfejsów użytkownika, zwłaszcza dla aplikacji jednostronicowych (SPA).

TypeScript
TypeScript

Rozszerzenie języka JavaScript, dodające statyczne typowanie. Ułatwia pisanie i utrzymanie kodu, a także zwiększa jego czytelność.

React Query
React Query

Biblioteka do zarządzania stanem aplikacji, zaprojektowana z myślą o aplikacjach korzystających z REST API.

Spring Boot
Spring Boot

Framework do tworzenia aplikacji w języku Java. Zapewnia szereg gotowych rozwiązań, ułatwiających tworzenie aplikacji webowych.

PostgreSQL
PostgreSQL

Open-source'owa relacyjna baza danych. Jest jedną z najpopularniejszych baz danych na świecie. Zapewnia wysoką wydajność, skalowalność i niezawodność.

JPA
JPA

Standard Java, służący do mapowania obiektowo-relacyjnego. Umożliwia tworzenie obiektów, które są automatycznie mapowane na rekordy w bazie danych.

Wyzwanie

Firma obsługująca wycieczki turystyczne, zatrudniająca kilkudziesięciu pracowników i obsługująca tysiące klientów rocznie, zdecydowała się stworzyć nowy system do obsługi swoich procesów biznesowych. Zakres potrzeb rozciągał się od zarządzania rezerwacjami przychodzącymi z zewnętrznych systemów, poprzez dystrybucję zadań potrzebnych do realizacji usługi, po finalne rozliczenia z pracownikami i podwykonawcami. Pracownicy do tej pory wykonywali część pracy ręcznie, co było nie tylko czasochłonne, ale i podatne na błędy.

Dotychczasowy system pracy zespołu był połączeniem użycia kilku zewnętrznych programów oraz starego dedykowanego rozwiązania opartego na przestarzałych technologiach, które obarczone było dużym długiem technicznym, uniemożliwiającym efektywne dodawanie nowych funkcjonalności. Dotychczasowe wyzwania obejmowały:

Przestarzała technologia
Przestarzała technologia

Istniejący system był oparty na technologiach, które nie były aktualizowane od lat. Ta przestarzała infrastruktura wprowadzała znaczne ograniczenia funkcjonalne oraz problemy z wydajnością oraz bezpieczeństwem danych.

Duży dług techniczny
Duży dług techniczny

System obciążony był dużym długiem technicznym, skutkującym częstymi awariami i trudnościami w implementacji nowych funkcjonalności, co znacząco hamowało rozwój firmy. Skutkiem była powolna migracja do tymczasowych rozwiązań typu Excel.

Brak skalowalności
Brak skalowalności

Stary system nie był przystosowany do efektywnej obsługi rosnącej liczby użytkowników, co stanowiło barierę dla dynamicznie rozwijającej się działalności klienta.

Ograniczona dostępność
Ograniczona dostępność

Dostęp do systemu był możliwy tylko z określonych rodzajów urządzeń, co stanowiło poważne ograniczenie, zwłaszcza dla pracowników potrzebujących dostępu do systemu w podróży lub w domu.

Trudność w integracji
Trudność w integracji

System nie posiadał możliwości łatwej integracji z innymi systemami i aplikacjami, co było kluczowe ze względu na potrzebę współpracy z zewnętrznymi partnerami oraz integracji z nowoczesnymi narzędziami wspierającymi turystykę.

Klient podjął decyzję o stworzeniu nowego dedykowanego systemu, wykorzystującego możliwości aktualnych technologii. W wymaganiach znalazły się między innymi: możliwość pracy online z dowolnego miejsca na świecie, skalowalność pod względem liczby użytkowników oraz możliwość łatwego rozwoju w przyszłości. Aplikacja powinna również umożliwiać integrację z aplikacjami firm trzecich poprzez interfejs API.

Jednym z najważniejszych wyzwań było przeprowadzenie bezpiecznej migracji danych ze starego systemu do nowego oraz zapewnienie okresu przejściowego, w którym obie aplikacje będą funkcjonować równolegle, synchronizując dane między sobą.

Dodatkowym elementem projektu był iteracyjny rozwój obszaru UX/UI aplikacji, bazując na materiałach dostarczonych przez klienta w formie dokumentacji oraz wstępnych makiet. Iteracyjne podejście pozwoliło na stopniowe adaptowanie systemu tak, aby odpowiadał nowo identyfikowanym potrzebom użytkowników i możliwościom techinicznym.

Rozwiązanie

Rozwiązanie zostało oparte o architekturę klient-serwer. Aplikacja kliencka została napisana w technologii React, a serwerowa w Kotlinie z wykorzystaniem Spring Boot. Aplikacja backendowa została zintegrowana z bazą danych PostgreSQL. Rozwiązanie zostało oparte o architekturę heksagonalną, co pozwoliło na konsekwentne oddzielenie warstwy biznesowej od szczegółów implementacyjnych.

Do komunikacji między klientem a serwerem wykorzystano REST API. Wyraźny podział na część backend i frontend umożliwia pracę zespołom niezależnie od siebie oraz pozostawia możliwość wymiany jednej z części systemu bez konieczności ingerencji w drugą lub dodanie kolejnego komponentu w przyszłości np. aplikacji mobilnej.

Aplikacja została zaprojektowana z myślą o łatwym rozwoju w przyszłości, dzięki zastosowaniu modularnej architektury obiektowej (object-oriented programming), wstrzykiwania zależności (dependency injection) oraz testów jednostkowych.

Dzięki przemyślanej budowie bazy danych, cyklicznym migratorom oraz współpracy z zespołem deweloperskim utrzymującym stare rozwiązanie firmy możliwe było przeprowadzenie bezpiecznego przejścia ze starego systemu na nowy, bez konieczności wstrzymywania żadnych procesów biznesowych klienta.

Aplikacja została wdrożona na platformie AWS, co zapewniło skalowalność i niezawodność. Dane klientów zostały zabezpieczone z wykorzystaniem protokołu HTTPS. Dzięki wdrożeniu systemu CI/CD udało się zautomatyzować proces wdrażania nowych wersji systemu, co znacząco przyspieszyło iteracje rozwojowe. Wdrożenie na AWS w połączeniu z zaletami aplikacji webowych umożliwiło łatwy dostęp do systemu z dowolnego miejsca na świecie.

W aplikacji zostały zaimplementowane integracje m. in. z:

  • GYG (Get Your Guide) - platforma oferująca wycieczki turystyczne
  • Viator - platforma oferująca wycieczki turystyczne
  • Booking - wiodąca platforma oferująca rezerwacje noclegów
  • Comarch Optima - system księgowy oraz CRM
  • NBP Web API - serwis udostępniający historię kursów walut

Różne kategorie użytkowników (pracownicy, dyspozytorzy, klienci, sprzedawcy) mają dostosowany dostęp do funkcjonalności aplikacji, co pozwala na efektywne zarządzanie dostępem do danych. Poszczególne grupy użytkowników mają dostęp do dedykowanych funkcjonalności, takich jak widok mobilny dla kierowców, czy widok dla dyspozytorów.

White signet

Who do you need?

Umów się na darmową konsultację

bluesBrackets logobluesBrackets logo

W Blues Brackets zajmujemy się rozwiązywaniem prawdziwych problemów za pomocą najnowszych technologii.

Porozmawiajmy

<mail>hello@bluesbrackets.com
<phone>+48 535 462 678

Spotkajmy się

Kraków, PolandWrocław, PolandWarszawa, Poland

Kontakt

Blues Brackets Tomasz SzewczykNIP 8842800805REGON 385433315