Office2Go

Co to jest?

Office2Go to asystent małych firm projektowych, projektujących np. wnętrza. Ma on wspomagać prowadzących działalność gospodarczą poprzez udostępnienie przydatnych funkcjonalności związanych ściśle z prowadzeniem małego biznesu związanego z branżą projektową. Produkt ten skierowany jest do osób mających pośredni lub bezpośredni kontakt z klientem.

Co to jest?

System dedykowany jest małym firmom, które mają dużą styczność z ludźmi oraz ich działanie skupia się na drobnych usługach dla wielu osób.

Co to jest?

Office2Go służy organizacji danych kontaktowych oraz danych zleceń wykonywanych dla klientów. Ponadto umożliwia organizację pracy poprzez dodawanie zadań (aktywności) nie powiązanych bezpośrednio ze zleceniami.

Ewolucja systemu

Pierwotnie Office2Go miało być bardziej uniwersalną platformą, obejmującą większy wachlarz działalności gospodarczych.

Po przeanalizowaniu wielu czynników zdecydowaliśmy się jednak bardziej wyselekcjonować potencjalnych klientów i lepiej dostosować się do ich potrzeb.

Potencjalni klienci

Produkt dedykowany jest głównie dla firm projektowych (obecnie uwzględniamy firmy projektujące wnętrza - produkt powstał dla konkretnego klienta)

Podstawowe funkcjonalności

  • Filtrowany kalendarz aktywności użytkownika

  • Zarządzanie aktywnościami

  • Zarządzanie bazą zleceń (projektów)

  • Organizer kontaktów biznesowych

  • Przedstawianie statystyk projektów

  • Generowanie raportów okresowych

Co zrobiliśmy w tym semestrze?

  • Wdrożenie biblioteki jsPDF do generowania zestawień

  • Stworzenie aplikacji mobilnej na system Android

  • Poprawienie działania REST API

  • Przekazanie produktu do testowania

  • przeniesienie REST API na Spring Framework

  • Poprawa bezpieczeństwa działania REST API

  • Poprawa jakości kodu

Architektura systemu

Front-End

Michał Dzik

Wykorzystany stack

  • React
  • Webpack
  • Sass
  • ES6

Co zrobiono:

Michał:

  • Zarządzanie kontaktami oraz klientami w aplikacji
  • Zarządzanie i obsługa zgromadzonych produktów
  • Obsługa autoryzacji OAuth
  • Implementacja pełnej obsługi projektów
  • Organizacja danych producentów
  • Pełna implementacja aktywności w aplikacji
  • Tworzenie statystyk w oparciu o bibliotekę D3.js
  • Implementacja pełnej logiki aplikacji internetowej
  • Obsługa komunikacji z REST API
  • Stworzenie widoków do wszystkich ww. funkcjonalności

Aplikacja webowa

Aplikacja webowa

Aplikacja webowa

Back-End

  • Mateusz Piwecki

  • Artur Maćkowiak

Główne zadania

  • Przetwarzanie żądań z frontendu
  • Odizolowanie bazy danych od frontendu i jej pełna obsługa oraz budowa
  • Wysyłanie wyników zapytań z REST API
  • Ochrona spójności bazy danych
  • Autoryzacja klientów aplikacji

Wykorzystane technologie:

  • Jackson
  • JPA
  • Hibernate
  • PostgreSQL
  • Tomcat
  • Spring Framework oraz jego projekty i podprojekty
  • GSON

Co zrobiliśmy:

Artur:

  • ostateczna wersja bazy danych
  • Przeniesienie generacji i zarządzania bazą danych na encje wykorzystujące adnotacje z Hibernate i JPA
  • Połączenie z bazą danych
  • Zaprojektowanie encji  tworzących relacje bazodanowe za pomocą JPA
  • Zaprojektowanie operacji bazodanowych do wszystkich zasobów
  • Stworzenie lub rozszerzenie endpointów do wszystkich zasobów
  • obsługa podstawowych funkcjonalności zaprezentowanych we Front-Endzie
  • stworzenie podstawowych zabezpieczeń np. OAuth czy przeciw atakom CSRF

  • Implementacja Spring Framework, Spring Data, Spring Security oraz Spring MVC

  • implementacja automatycznego mapowania zasobów wedle specjalnych wymagań frontendu za pomocą narzędzia Jackson i GSON
  • zmapowanie części wyjątków działania bazy danych jak i aplikacji REST
  • wdrożenie aplikacji RESTful na serwerze zewnętrznym
  • podstawowe testy wydajnościowe serwerów i optymalizacja działania REST API

Co zrobiliśmy:

Mateusz:

  • Pierwsza wersja bazy danych
  • Stworzenie skryptów SQL do bazy danych
  • Zaprojektowanie operacji bazodanowych do zasobów /contacts, /notes i /products
  • Utworzenie punktów końcowych do ww. zasobów
  • Tworzenie bazy wyjątków i obsługi błędów
  • Tworzenie dokumentacji projektu
  • obsługa podstawowych funkcjonalności zaprezentowanych we Front-Endzie

  • Konsultacje z klientem

Spis udostępnionych zasobów

Dla klienta REST API udostępniono 9 zasobów:

  • /designers - DesignerController
  • /files - FileController
  • /activities - ActivityController
  • /products - ProductController (form-data)
  • /producers - ProducerController
  • /projects - ProjectController (form-data)
  • /reports - ReportController
  • /notes - NoteController
  • /contacts - ContactController

 

Wprowadzone endpointy są od siebie całkowicie niezależne oraz wymagają wcześniejszej autoryzacji poprzez OAuth 2.0 na osobnym zasobie /oauth

Modelowanie bazy danych

Przykładowy Flow aplikacji

Dalszy rozwój aplikacji

  • zaawansowana obsługa cache'owania zapytań do zasobów REST-owych i bazodanowych
  • stworzenie asynchronicznych kontrolerów zasobów
  • implementacja zaawansowanej ochrony przed atakami CSRF
  • w przypadku znacznego wzrostu aplikacji wprowadzenie kolejkowania zapytań
  • przystosowanie aplikacji do reaktywności
  • implementacja Web-Socketów wspomagających współpracę aplikacji z różnymi klientami
  • stworzenie środowiska kilku aplikacji charakteryzujących się wysoką dostępnością (HA)
  • wprowadzenie oddzielnej bazy danych dla większych danych np. plików obrazów (Nginx)
  • zmniejszenie awaryjności bazy danych poprzez implementacji zarządzania backupami oraz utworzenie baz danych typu Slave

Aplikacja mobilna

Mateusz Piwecki

Aplikacja mobilna

  • Aplikacja mobilna obejmuje urządzenia oparte na systemie Android (zalecana wersja systemu to 4.0 lub wyższa)
  • Aplikacja pokrywa większość funkcjonalności z aplikacji internetowej
    • obejmuje wyświetlanie nadchodzących wydarzeń,
    • wyświetlanie zbliżających się terminów projektów,
    • organizację kontaktów,
    • wyświetlanie szczegółów projektu (wraz z użytymi produktami)
  • Wymaga stałego połączenia z Internetem
  • Nie jest wystawiona w Google Play (ze względu na charakter aplikacji)

Aplikacja mobilna

Dalszy rozwój

  • Poprawienie wydajności aplikacji
  • Obsługa raportów
  • Dodawanie i edycja projektów z poziomu aplikacji
  • Lepsze dostosowanie do różnych wielkości ekranów

Office2Go

By kko

Office2Go

  • 511