PixelogicDev / TwitchFestify

Bringing Festify to a Twitch Extension. Created by the PixelogicDev Subscriber Community.
3 stars 0 forks source link

Getting Started: Come up with architecture #9

Open adilanchian opened 5 years ago

adilanchian commented 5 years ago

With the recent realization that we do not need Festify to make this, comes more questions. What type of architecture are we wanting to use here? Please list your thoughts below :) I see it setup as follows:

Client: React plugged into Twitch Extension Server: Golang Database: Firebase

isabellabrookes commented 5 years ago

Firebase

I don't understand/appreciate the benefits of Firebase over other databases unless we're looking for more features other than just using Firestore as DB. Can you elaborate?

Golang

Do you have experience with Go? Personally, I don't have any but learning is good. Just wondering if it will encourage or deter others from contributing?

evjand commented 5 years ago

I'm thinking that we could just do a React frontend with Firestore as DB and Firebase Functions for whatever server side stuff we need. If we keep everything JavaScript (react and node.js) we have a higher chance of contribution imo.

adilanchian commented 5 years ago

I second @evjand actually. I wanted to use Go because I have been really wanting to learn it, but a full js stack could be quite nice and easier for people to contribute to.

The other thing I wanted to note here was our short talk of using Docker containers. If people are open for this idea, let's do it!

Bibikski commented 5 years ago

So with this project, are we picking and pulling the parts of the code to recreate the application Festify itself, or are we making a bot that you give login credentials and it logs into the web page and adds the music? Another fundamental to this application is going to be implementing the voting system. Per say, if you have a big streamer and 1000 people have submitted music we do not want to clog the chat with the music entries. Instead will voting be through the website? Another issue I also see is that 1000 people making request all at once will make the website mess up, so using a database will help prevent the issue. Attached below I have a simple diagram to explain the architecture. FestifyArchitecture

adilanchian commented 5 years ago

Hey @Bibikski ,

Thanks for the input and diagram! The one thing I want to get across is that we are using a Twitch Extension (Please refer here: https://dev.twitch.tv/extensions)

This always the streamer to add credentials through a portal and every single viewer has an overlay that they can actively interact with, which means no need to clog up chat. We can send any updates to the extension itself which is AWESOME.

I would also suggest to take a look at Firebase Function (which you can find here: https://firebase.google.com/docs/functions/). This will help us a lot as we can write logic that calls these methods and doesn't require us to write our own server layer. Hope this makes sense!