In the last year, I developed a web server - ExpressVis - for analyzing and exploring expression profiling data. Here is my experience.
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.
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.
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.
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.
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.