Advanced Web Technologies SS21 group project backend for group BioNWeb.
A web service that allows university students to find study pals based on courses, interests, knowledge, speciality, etc. You can create and customize a profile that includes all your preferences and information for matching with other students.
A full stack application based on the MERN Stack. It uses MongoDB as a database, ExpressJS as a backend web framework running on a NodeJS server and React for the frontend.
The system is based on Docker and docker-compose. Each part of the system runs in a Docker container. Using a docker-compose.yaml file, the structure and configuration of each of the running docker containers is defined. The system is deployed on a Ubuntu server that has Docker and docker-compose isntalled on it.
Every request to the server gets routed through Nginx, which is setup as a reverse proxy. It forwards each request to the corresponding docker container and is the only container that is exposed to the internet through port 80 and 443. It also handles all the SSL validation and forces the use of https when communicating with the server.
Another container is running certbot which continously checks the validity of the SSL certificates and automatically renews them if necessary. More information can be found in the 📓 INFORMATION section.
Nginx is configured to forward each request based on the URL.
/api/
Gets forwarded to the backend NodeJS server./
Gets forwarded directly to the React frontend.
-
Install Docker on your machine.
-
Fork and clone the repository https://github.com/SteveMelons/awt-bionweb-project.
If you have never contributed to a project before or just need to refresh your memory, check out https://github.com/firstcontributions/first-contributions.
-
After you have forked and cloned the repo, launch the docker containers using docker-compose.
docker-compose up -d
-
Open your browser to https://localhost.
-
Now you can create a new branch, start coding, commit your work and then finally make a pull request from your forked repo.
Again, if you need some help check out https://github.com/firstcontributions/first-contributions.
Happy Coding! 🏆
-
Check all running docker containers.
docker ps
-
Follow logs of a container.
docker logs --follow <CONTAINER ID>
For example with the node-backend and node-frontend container.
The project is setup to use SSL encryption using https.
Certificates for awt-bionweb.ddns.net have been issued by Let's Encypt and are auto-renewed using certbot.