maximiseuk / onlinestudytools

A repository for the online study tools as part of the MAXIMISE revision service, found at:
https://maximise.org.uk
1 stars 0 forks source link

Decide on our programming stack #11

Closed maximiseuk closed 4 years ago

maximiseuk commented 4 years ago

Just saying "we'll use React" is not enough!

We need to figure out exactly what programming stack (set of services, frameworks, languages, libraries and tools) we're going to be using. Everyone needs to come up with some ideas for this.

My idea

This idea proposes that we use ReactJS and Material-UI for front end. The website is hosted on Firebase with our own domain name (probably maximise.org.uk).

We also have a REST web server that the website can communicate with to access the database. In practice, this means that the website can basically send an HTTP request to the server, which can then CRUD (create, read, update, delete) the database and send a response back to the website. This means that the website can access the data with requests like https://server-address/username to get the details of a user from the database. It is very easy (and free) to set up this kind of server on Heroku, as I have suggested above. I can write the actual server code in Rust, which is an upcoming programming language that is really safe (our server will basically never crash). In fact, Rust has a framework called which has ranked incredibly well out of all web frameworks: actix-web. I have experience in writing servers in Rust and actix-web.

Finally, for the database, rather than paying extra for a database, we could probably just use Firebase again. It works really well as it is designed by Google, and it has enough capacity on the free tier for our needs.

Requirements for this task:

Don't just write down something off the top of your head, do some proper research on your suggestions and the suggestions of others.

In order to make your suggestion, please leave a comment on this issue below, in the format of my idea above. List the parts of the stack and then write short explanations for each part like I did. In your explanation, you can take into account your experience in parts of the stack, and say that you're recommending it because you are really experienced in it.

maximiseuk commented 4 years ago

I understand that we are all pretty happy with my suggestion for the stack, which is described above. If anyone has any problems with it, make your own suggestion. Otherwise, this is what we'll use.

Joseph-Rance commented 4 years ago

I have one problem: with the new idea from the ml thing, it would be really helpful if i could have python with tf.keras. Is this possible? you said it may be with the heroku server, so what is the probability that we will be able to do this bc the ml model will be significantly better if i can use python + keras

isaac-holt commented 4 years ago

For routing, we'll definitely use react router as it's the most popular option by far. For managing the app's state, redux and react-redux are very good so we should use those as well. For transitions, react-transition-group will allow us to animate the landing page and subtly animate the web app possibly as we've discussed.

isaac-holt commented 4 years ago

It's likely that I'll end up using other npm modules as well, but I can't say exactly what they'll be as I haven't started yet. As we seem to be decided on this, can this issue be closed now?