Appearance
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.