Rendezvous (find here) is a web-application on which people can connect with others around the world through video calls. It uses native WebRTC technology to form the peer connections.
This project was built during the coding phase of Microsoft Engage 2021
Setting up the application is made extremely simple with the help of Docker. For both development and production environments, the code-base is exactly the same, and setup is almost the same - production setup having one extra step. The project consists of 3 or 4 docker containers running, which is orchestrated by docker-compose.
The database is a PostgreSQL container. In postgres/
, copy database-stencil.env
to database.env
and populate the environment variables. These will be used as the name and credentials to the database when the container starts up.
These will be the same credentials enterd in the Django configuration file.
In /backend/configuration/
copy the config-stencil.env
file to config.env
and fill in ALL the correct values. For more information on the backend directory structure and configuration, click here
In /frontend/src/configuration/
copy the config-stencil.json
file to config.json
and fill in ALL the correct values. For more information on the frontend directory structure and configuration, click here
All steps till now are common to setting up both development as well as production environments. The next step is unique to the production environment, where we set up a reverse-proxy server
Once you generate the SSL certificate and private key for your server, place them in folder /nginx/ssl/
with these exact names:
certificate.crt
certificate.prv
Once the configuration is complete, run one of the following commands in /
to start the server:
- For development:
docker-compose -f rendezvous_build/development.yml up
- For production:
docker-compose -f rendezvous_build/production.yml up
- In the above commands, use the flag
-d
to run in detached mode (preferable in production).
Purpose | Technology |
---|---|
Backend Framework | Django |
Message Broker | Redis |
Task Queue | Celery |
Frontend Library | React |
Application State Management | Redux |
UI Components | Semantic UI |
Database | PostgreSQL |
Containerisation | Docker |
Orchestration | Docker Compose |
├── backend
├── frontend
├── nginx
├── postgres
├── README.md
└── rendezvous_build
/backend
contains the Dockerfile and code for the Rendezvous Django project./frontend
contains the Dockerfile and code for the frontend in React./nginx
contains the Dockerfile configuration files, and SSL certificates for the NGINX server./postgres
contains the configuration file for the database/rendezvous_build
contains theYAML
files used by docker-compose while starting the development or production server.
If you have any queries, or suggestions for the project, feel free to reach out to me at shreyurd@gmail.com.