In the last year, I developed a web server - ExpressVis - for analyzing and exploring expression profiling data. Here is my experience.
Overview
According to your needs, the application should include a back-end (a server) and a front-end. The back-end receives a request from the front-end, then load data from the database and process the data, and finally send the result to the front-end. The front-end (website) presents the result. The back-end and front-end are developed separately.
Back-end
In the back-end, a web server, like Apache or Nginx, receives and process requests from the front-end. Based on types of the requests, the web server responds directly, or calls a software or a script, whose results are sent to the web server and then sent to the front-end.
The software or scripts should be managed by a server (framework). In python, there are multiple frameworks, like Flask and Django. Here, I use Django as an example (I used django in my service). Django can call a software or script in a app (specifically, views.py in a app).
In a web service, Representational State Transfer (Rest) is widely-used. Using Rest APIs, the front-end can send a request to the server without refreshing the website. In django, you can use django rest frame work to build Rest APIs. Combining Django and Django rest frame work is awesome.
Front-end
To develop front-end, some knowledge about html, css and js are required. In recent years, many front-end frameworks emerged, like Angular and React. You can choose one of them, which will save much time.
Some notes
To develop a web server, one must learn multiple programming languages or frameworks. For example, in front-end, one should learn basic techniques, including html, css and js. To develop efficiently, one should use some frameworks, like bootstrap and angular. Learning these techniques will take much time. As for me, before developing ExpressVis, I had some experiences in R and python, but knew nothing in developing a website. Developing ExressVis took me one half a year. Before developing a web service, you should decide if it is worth. In my opinion, there is a critical need to develop web servers for bioinformatics tools. Web servers make a bioinformatics tool accessible to more biologists. Now, I like to put some common scripts in web service and use them in the website; it saves much time.
Learning steps
When I developed ExpressVis, I spent much time learning the techniques and more time choosing frame works. If you decide to go ahead, here are learning steps I suggest:
- Learn js, html and CSS. Js is the key
- While learning js, learn django (or other frame work you like).
- After knowing some knowledge about js, begin to learn Angular (or other frame work you like).
- Combine Django and Angular, and develop the app locally.
- Learn Nginx (or apache). Learn how to deploy the app.
- Congratulations
That smells like a bachelor's or master's degree project !
It might be a bachelor's or master's degree project for in computation science.
Are you saying that this is your project?
Why would you want to do this if I may ask?
I do it partly for fun.
This is something Galaxy does. As to what hardware you can run it on it would simply be dependent on your budget.
Not just web servers, but there are already blockchain protocols soon to be emerging. Example: https://www.genomes.io/wp-content/uploads/2018/03/The-genomes.io-Whitepaper-V-1.1.4.pdf