Startup poszukuje doświadczonego programisty backendowego z pewnymi umiejętnościami w pracy z .NET i Docker Compose.
Wymagania:
- Doświadczenie w pracy z ASP.NET 5+, Docker Compose, dowolną relacyjną bazą danych - kluczowy kryterium!
- Doświadczenie w pracy z czystą architekturą (z MediatR), SignalR, Keycloak, Redis, mikroserwisami jest plusem.
O projekcie:
Trading Pool AI - platforma tradingowa oparta na sztucznej inteligencji, która otwiera rynek swobodnego inwestowania dla właścicieli aktywów kryptograficznych. Na platformie Trading Pool AI wdrożono model inwestycyjny w formacie puli, który łączy zasoby użytkowników w jeden bilans, gdzie PNL (dodatni lub ujemny dochód) trafia do wspólnego funduszu i jest rozdzielany między użytkowników zgodnie z proporcjami w każdym momencie czasu.
Obecnie produkt znajduje się na finiszu przed uzyskaniem MVP. Sieć neuronowa pomyślnie przeszła testy, a dla realizacji naszego drugiego celu - uruchomienia platformy w otwartym dostępie potrzebujemy doświadczonego programisty backendowego na .NET do rozwoju i wsparcia projektu.
Na chwilę obecną mamy backend, który wymaga wprowadzenia korekt w logice biznesowej zgodnie z przygotowanym TŻ.
Dalsze cele - optymalizacja i przygotowanie do dużego obciążenia (rejestracje i jednoczesni użytkownicy na stronie) zarówno na poziomie kodu, jak i na poziomie infrastruktury (docker swarm na AWS). Na początek chcemy osiągnąć stopień dopuszczalnego obciążenia na stronie do 1000 użytkowników jednocześnie i ponad 5000 rejestracji, aby nasz backend i infrastruktura nie padały. Mamy docker compose do lokalnego setupu na Docker Swarm.
Dalej - wdrożenie dodatkowej funkcjonalności platformy. Wszystko etapami.
Chętnie nawiążemy współpracę także ze studiami. Proszę opisać, co z wymienionych zadań moglibyście wykonać, jakie macie doświadczenie w realizacji podobnych projektów. Prosimy również o podanie waszej stawki. Jesteśmy gotowi współpracować zarówno w celu realizacji konkretnych zadań, jak i na stałej podstawie w formacie częściowego lub pełnego zatrudnienia.
Dla waszego zrozumienia, podam przykład jednego z zadań, które należy wykonać:
W panelu użytkownika znajduje się okrągły wykres "kołowy", który pokazuje rozkład dochodów na platformie. Każdy kolor na wykresie odpowiada kolorowi karty (która obraca się po kliknięciu/tapnięciu). Ten wykres jest dynamiczny. Zmienia się w zależności od salda na «Portfelu» użytkownika (a dokładniej od «Udziału PnL» lub, innymi słowy, «Udziału Dochodowości użytkownika»), wielkości sald na «Portfelach» użytkowników referencyjnych (a dokładniej udziału w «Programie Partnerskim»), wielkości «Prowizji puli» oraz od ogólnego «Bilansu puli».
Pierwsza karta oznacza osobisty udział użytkownika w ogólnym bilansie puli lub, innymi słowy, «Udział PnL». Odpowiada jej turkusowa część wykresu. Na jej przedniej stronie znajduje się nazwa - «Portfel» z ikoną tarczy z zaznaczoną wewnątrz, a także suma środków znajdująca się na saldzie użytkownika. Wszystkie środki użytkownika są na niej wyświetlane i w innym miejscu być nie mogą. Zawiera wszystkie zainwestowane środki, a także na nią wpływa uzyskany dochód z transakcji (w przypadku ujemnego dochodu z transakcji jej saldo zmniejszy się).
Dalej na przedniej stronie karty «Portfel» znajduje się wskaźnik: udział użytkownika w bilansie puli, czyli «Udział PnL». Ten wskaźnik jest obliczany według wzoru: saldo na «Portfelu» użytkownika podzielić przez ogólny «Bilans puli», pomnożyć przez 100 minus % prowizji.
Podajmy przykład:
Saldo na «Portfelu» użytkownika = 1.000$
Bilans puli = 10.000$
Prowizja = 27.5%
Łącznie: 1.000$ / 10.000$ * 100 - 27.5% = 7.25%
Oznacza to, że jeśli dojdzie do transakcji z dochodem w wysokości 100$, użytkownik otrzyma 7.25% od dochodu z tej transakcji. A dokładniej: 100*(7.25/100) = 7.25$. W ten sam sposób, w przypadku ujemnej transakcji z stratą w wysokości 100$, użytkownik zostanie obciążony z salda - 7.25$.
I po każdej transakcji jego «Udział PnL» będzie przeliczany w zależności od uzyskanego dochodu/straty. Dzieje się tak, ponieważ po każdej dokonanej transakcji saldo użytkownika zmienia się i algorytm musi automatycznie przeliczyć jego «Udział PnL» w ogólnym «Bilansie puli». Ważne jest, aby zauważyć, że «Udział PnL» użytkownika zmienia się również po każdym wpłacie/wypłacie innych użytkowników, ponieważ zmienia się ogólny «Bilans puli», dlatego przy każdej zmianie sald użytkowników algorytm przelicza zarówno «Bilans puli», jak i wynikający z niego parametr «Udział PnL» każdego konkretnego użytkownika.
Ważna uwaga, która dotyczy zarówno karty «Portfel», jak i karty «Bilans partnerski». Liczby w %, oznaczające «Udział Pnl» i udział w «Programie Partnerskim» mogą zawierać wiele cyfr po przecinku, na początek wprowadzimy zasadę, że te wskaźniki udziałów mogą zawierać 5 cyfr po przecinku. To znaczy minimalny «Udział PnL» i udział w «Programie Partnerskim» wynosi 0.00001%. Pozostałe cyfry są ignorowane i w żaden sposób nie biorą udziału w obliczeniach dochodu z transakcji.
W związku z tym, Backend musi wykonać te i wszystkie inne obliczenia i przekazać endpointy na gotowy Frontend dla wykresów, grafik, kart, historii transakcji.
I tak dalej...