Skip to content

Opis Rozwiązania

1. Wprowadzenie

Niniejsza dokumentacja techniczna ma na celu zaprezentować opis rozwiązania do aplikacji komunikacyjnej wewnątrzfirmowej "Lythar" na zawody Primus Inter Pares 2024. Aplikacja została zaprojektowana w celu ułatwieniu komunikacji i współpracy pomiędzy pracownikami w firmach i organizacjach. Przedstawimy architekturę systemu, poziom zabezpieczeń i bezpieczeństwa, wydajność, instrukcje użytkowania, oraz inne istotne elementy techniczne.

2. Architektura systemu

Frontend

Do frontendu aplikacji wybraliśmy Next.js, framework do React.js, ponieważ jest to bezpieczny wybór i popularne rozwiązanie w dzisiejszych czasach. Do stylowania UI postawiliśmy na TailwindCSS + shadcnUI ze względu na szybki proces stylowania pozwalający uzyskać więcej czasu na głównej funkcjonalności

Backend

Do backendu aplikacji wybraliśmy ASP.NET Core, ponieważ jest to jedno z najbardziej zaawansowanych i wydajnych rozwiązań do tworzenia aplikacji webowych.

Docker

Chcieliśmy, aby aplikacja była reprodukcyjna na różnych systemach i łatwa w konfiguracji. Dzięki konteneryzacji, jesteśmy w stanie włączyć wszystkie serwisy na jakiejkolwiek maszynie otrzymując te same rozwiązanie.

PostgreSQL

Wybraliśmy PostgreSQL jako bazę danych, ponieważ jest to jedna z najbardziej zaawansowanych baz danych, która oferuje wiele funkcji, takich jak wsparcie dla typów danych, indeksy, transakcje, itp.

Nginx

Aby utrzymać łatwy dostęp do wszystkich serwisów z poziomu administratora, użyliśmy proxy Nginx, które jest w stanie połączyć serwisy z różnych hostów pod jednym.

Dokładniejszy opis: Wykaz Elementów

3. Funkcjonalność

  • Wiadomości tekstowe: Możliwość wysyłania wiadomości między użytkownikami w czasie rzeczywistym.

  • Rozmowy Grupowe: Możliwość tworzenia grupowych czatów, gdzie użytkownicy mogą komunikować się w założonym celu, np: Dział Wsparcia Technicznego

  • Załączniki: Możliwość przesyłania plików, zdjęć, dokumentów na czatach.

  • Powiadomienia: Powadamia użytkownika w momencie otrzymania nowej wiadomości jeżeli nie jest aktywny w zakładce przeglądarki.

  • Emotikony: Możliwość wysyłania emotek formatywanych przez Twemoji (Emotki Twittera)

  • Wiadomości Prywatne: Możliwość wysyłania wiadomości prywatnych między użytkownikami.

  • Formatowanie Tekstu: Możliwość formatowania tekstu w wiadomościach, np: pogrubienie, kursywa, linki, kod.

  • Bezpieczeństwo: Funkcje związane z bezpieczeństwem, takie jak szyfrowanie wiadomości, kontrola dostępu, zarządzanie sesjami itp.

4. Bezpieczeństwo

  • Autoryzacja: Użytkownicy muszą być zalogowani, aby korzystać z aplikacji. Używamy JWT do autoryzacji użytkowników.
  • Szyfrowanie: Wiadomości są szyfrowane w celu zapewnienia prywatności użytkowników.
  • Bezpieczeństwo: Aplikacja jest zabezpieczona przed atakami typu XSS, CSRF, SQL Injection, itp.
  • Kontrola Dostępu: Użytkownicy mają różne poziomy dostępu do aplikacji, w zależności od ich ról.
  • Zarządzanie Sesjami: Sesje użytkowników są zarządzane w sposób bezpieczny, aby zapewnić bezpieczeństwo użytkowników.

5. Wydajność i skalowalność

  • Wydajność: Aplikacja jest zoptymalizowana pod kątem wydajności, aby zapewnić szybką i płynną pracę.
  • Testy Wydajnościowe: Przeprowadziliśmy testy wydajnościowe, aby upewnić się, że aplikacja działa płynnie i szybko. Więcej informacji jest dostępnych w dokumentacji.

6. Konfiguracja i zarządzanie

  • Konfiguracja: Aplikacja jest łatwa w konfiguracji, dzięki plikom konfiguracyjnym i narzędziom do zarządzania.
  • Do łatwego zarządzania aplikacją rekomendujemy użycie takich narzędzi jak Apache Directory Studio, pgAdmin, Docker Desktop, itp.

7. Instrukcje użytkowania

8. Wdrażanie i utrzymanie

  • Wybraliśmy narzędzie Docker Compose, które pozwala na łatwe wdrażanie i utrzymanie aplikacji w środowisku produkcyjnym i testowym.
  • W przypadku błędów, rekomendujemy korzystanie z narzędzi do monitorowania aplikacji, takich jak Grafana, Prometheus, itp. Dodatkowo, częstym błędem jest brak permisji +rw (Read/Write) do plików oraz niepoprawne wczytywanie plików konfiguracyjnych.
  • W przypadku problemów z wydajnością, rekomendujemy korzystanie z narzędzi do monitorowania wydajności, takich jak New Relic, Datadog, itp.
  • Przy częstych problemach, prosimy o kontakt z naszym zespołem

9. Podsumowanie - słowa od zespołu

Dziękujemy za zainteresowanie naszym projektem!

Mimo wielu problemów, najczęściej z brakiem czasu i motywacji, udało nam się stworzyć aplikację, która spełnia nasze oczekiwania. Nie jesteśmy pewni w 100% co do spełnienia wymagań przez brak czasu, ponieważ dużo czasu spędziliśmy na zastananianiu się nad dobrą implementacją poszczególnych funkcji, co często skutkowało w kodzie słabej jakości, który później musieliśmi przepisywać, aby działał lepiej i był łatwy do wdrożenia.

Mimo to, jesteśmy zadowoleni z efektu końcowego i mamy nadzieję, że nasza aplikacja spełni oczekiwania.