Streszczenie:
Niniejszy dokument opisuje zamysł, projekt oraz realizację sieci społecznościowej o nazwie Pin@ (pin-at). Łączy ona w sobie założenia niektórych istniejących rozwiązań, takich jak Twitter czy Facebook, a także wprowadza autorskie w celu utworzenia innowacyjnej przestrzeni, gdzie znaczenie ma nie tylko treść, ale także lokalizacja dodawanej przez użytkowników zawartości. Istotnym było zarówno przygotowanie wydajnej aplikacji serwerowej, jak i przejrzystej, przyjaznej użytkownikowi aplikacji klienckiej, z mapą w centrum uwagi. Pin@ umożliwi osobom z niej korzystającym uzyskanie w prosty sposób informacji o tym, co się dzieje w ich otoczeniu oraz w innych miejscach, a także aktywne wzięcie udziału w życiu lokalnych społeczności. Pozwoli między innymi na łączenie się w grupy tematyczne, tworzenie wydarzeń oraz udostępni bezpośrednie formy komunikacji, takie jak komentarze i reakcje pod postami oraz wiadomości prywatne kierowane do konkretnych użytkowników.
Aplikacja kliencka została przygotowana w formie aplikacji przeglądarkowej wykonanej przy użyciu frameworka Angular. Część serwerowa to REST API o architekturze inspirowanej modularnym monolitem, wykonane w technologii ASP.NET Core 5. Wymiana danych pomiędzy klientami, a serwerem odbywa się za pośrednictwem protokołu HTTP(S) oraz WebSocket (z pomocą SignalR). Warstwa przechowywania danych składa się z baz PostgreSQL oraz MongoDB, z którymi komunikacja zrealizowana jest przy pomocy EntityFramework oraz MongoDB C# Driver.
Do największych wyzwań implementacyjnych należało połączenie ze sobą dwóch światów danych – relacyjnych oraz nierelacyjnych o zróżnicowanej strukturze, jednak zastosowanie dwóch odmiennych baz danych pozwoliło zapewnić odpowiedni dla przypadku użycia balans pomiędzy wydajnością, bezpieczeństwem oraz skomplikowaniem pracy z systemem. Dzięki temu oraz podjętym działaniom mającym na celu zachowanie modularności aplikacji serwerowej udało się stworzyć rozwiązanie oferujące wysoki potencjał przyszłego rozwoju.