Projekt Open-Source

0

Hej,
na początku całej tej pandemii znalazłem się w gronie osób poszkodowanych, przez co niestety mój program "stażowy" został mówiąc kolokwialnie zbesztany, teraz posiadam olbrzymią ilość wolnego czasu i ochotę na zrobienie "czegoś ciekawego", tzn. chcę stworzyć aplikację komercyjnie używalną (nie jakieś tam todo listy) najprawdopodobniej open-source. Na początku myślałem o platformie e-learningowej, na potrzeby znajomej. Znajoma jednak (głównie rozumiem z tego względu że nie płaci za pracę nad tym) za bardzo się nie przejęła tym moim projektem i w gruncie rzeczy można go uznać za taki stub, do zrobienia "czegoś", no bo w kwestii tej platformy, to wystarczy konto na Vimeo i jakiś VPS na którym to będzie banglać, i już. Możnaby z tego korzystać, można by też dołączyć jakieś płatności, pierdoły etc.

Ciekaw jestem w ogóle opinii na temat samej idei takiego projektu, jego (obecnego, czyt. niekompletnego) kodu źródłowego, możliwych dodatkowych ficzerów czy innych tam ciekawych rzeczy na ten temat...

Zastrzegam, że to nawet nie jest wersja alpha tylko raczej jakiś mocno zaawansowany embrion.

Póki co, projekt ma możliwość:

  • Dodawania, usuwania i edytowania listy video za pomocą konta administratora
  • Rozróżnienia, czy video próbuje odtworzyć niezalogowany użytkownik, użytkownik który nie zapłacił, czy subskrybent tudzież admin, którzy mają dostęp do odtwarzania filmów.
  • API też jest zabezpieczone (z tego co pamiętam, po wysłaniu GETa na adres odpowiadający filmowi powinno zwrócić 403)

Do rozróżnienia użyszkodników program używa IdSrv4 authorisation code + pkce na podstawie RBAC

A może ktoś miałby fajny pomysł na inny projekt open-source który np. wykorzystywałby część z już zaimplementowanych rzeczy? Ewentualnie może cokolwiek innego?

Właśnie, i seed database nie jest zacommitowany na GH, w ogóle przerwałem pracę nad tym w momencie gdy bawiłem się z procesem rejestracji konta i uaktywnienia go poprzez link z wiadomości e-mail.

1

Pomijając wygenerowany projekt identity severa, posiadasz cruda, który operuje na 1 zasobie.
Pozwolę sobie wrzucić jedną z akcji kontrolera. Niewykorzystanie wbudowanych mechanizmów do bindowania modelu. Dodatkowo co daje Ci takie łapanie wyjątków?

[Authorize(Roles = "admin")]
public async Task<ActionResult> Create(Post post)
{
    // Manual Requests body to object binding caused by TS & C# dates incompatibility.
    try
    {
        string postObject;
        using (StreamReader reader = new StreamReader(Request.Body, Encoding.UTF8))
        {
            postObject = await reader.ReadToEndAsync();
        }
        post = JsonConvert.DeserializeObject<Post>(postObject);


        // according to TypeScript Date and C# DateTime incompatibility, have to set the creationDate on the server-side


        post.PublicationDate = DateTime.Now;
        _ctx.Add(post);
    }
    catch (Exception ex)
    {
        throw ex;
    }


    return Ok(post);
}

Co do rozbudowy projektu. Możesz pójść w stronę takich apek do nauki języków. Udostępnianie materiałów dzwiękowych i pdf. System testów/quizów. Poziomy subskrypcji, które dają dostęp do różnych materiałów itp.

0

Widzę że namierzyłeś tym try catchem po prostu kod który wyprodukowałem bez namysłu, bo w sumie nie wiem jak odpowiedzieć na pytanie nawet.
dodatkowo, nie jestem w stanie zrozumieć zdania : "Pozwolę sobie wrzucić jedną z akcji kontrolera. Niewykorzystanie wbudowanych mechanizmów do bindowania modelu."
Mógłbyś rozwinąć te kwestię?

Tutaj to po prostu, mamy obiekty Post który posiada różne pola, gdzie jednym z nich jest Video Url a w nim url filmu na vimeo.

I dziękuję za podpowiedź dot rozbudowy.

2
string postObject;
using (StreamReader reader = new StreamReader(Request.Body, Encoding.UTF8))
{
    postObject = await reader.ReadToEndAsync();
}
post = JsonConvert.DeserializeObject<Post>(postObject);

Zakładając, że twoja aplikacja się rozrośnie to w każdym miejscu będziesz tak mapował tylko dlatego, że masz jakiś konflikt z konwersją daty wygenerowanej po stronie klienta? Jeżeli domyślna konwersja Ci nie odpowiada możesz napisać własną. I wtedy możesz wyrzucić ten kod z akcji.

https://docs.microsoft.com/en-us/aspnet/core/mvc/models/model-binding?view=aspnetcore-3.1#what-is-model-binding

1 użytkowników online, w tym zalogowanych: 0, gości: 1