Witam. Od dłuższego czasu tworzę dla siebie narzędzie do łączenia kilku serwisów w jednym miejscu. Początkowo miało to tylko pobierać dane konta ze spotify i paypala ale wyszło tak, że każdy serwis implementujący OAuth 2 jest kompatybilny z narzędziem (przynajmniej w teorii). W backendzie użyłem node.js wraz z typescriptem, GraphQL do API, PostgreSQL jako baze i do tego TypeORM, redisa do sesji a vaulta (hashicorp) do przechowywania kluczy. Do tego używam dockera żeby nie uruchamiać wszystkiego ręcznie w hoście. Z frontendu nie jestem dumny, chociaż było jego kilka wersji. Pierwsza to był czysty JS (jest w dev branchu), gdzie chciałem poduczyć się jak działa virtual dom z reacta i reactive z vue.js. Druga to był react a trzecia to vue (również dev branch). Fajny jest react ale do tak małego projektu to był overkill. Grafikiem też nie jestem ale nie chciałem korzystać z gotowych szablonów tylko samemu coś stworzyć, dlatego zrobiłem swój interfejs i wrzuciłem plik z affinity designera (jest też psd) do repozytorium. Nie jest to jakiś idealny kod, ciągle się uczę i staram go refaktoryzować. Od początku tworzenia projektu wiele się nauczyłem, czy to działania virtual dom, service workers, podstawy działania i tworzenia AST, budowania CLI, tworzenia bundlera, działanie dockera i wielu innych rzeczy. Nie jest to wiele ale lepsze niż nic. Wracając do projektu, każde dane pobierane z serwisów są szyfrowane i zapisywane w bazie. Napisałem trochę testów ale jeszcze kilku brakuje. Muszę dodać jeszcze CI od gitlaba. W przyszłości planuję napisać aplikacje mobilną oraz na desktopy, również dodać opcje zapisywania danych w szyfrowanym pliku tak aby nie trzeba było zakładać konta i wysyłać danych do serwera a wszystko odbywało się lokalnie. Większość serwisów wymaga parametru redirect_uri w zapytaniu a to stanowi przeszkodę do funkcjonowania bez serwera, chociaż można wykorzystać lokalny serwer na localhoście u użytkownika to nie jest to zbyt bezpieczne. Postarałem się opisać większość rzeczy w readme. Cały czas staram się uczyć i systematycznie ulepszać kod lecz z braku czasu nie jest to możliwe. Czy to wystarczy, żeby aplikować na stanowisko juniora frontend lub node.js dev albo chociaż na staż do jakiejś firmy? Jeśli ktoś miałby czas na code review i konstruktywną krytykę to będę ogromnie wdzięczny ;)
Link do repozytorium: https://gitlab.com/V3rn0n/flerovium