Our project is a chat application built using Python, Django, Django Channels, WebSocket, Tailwind CSS, JavaScript, and SQLite3. It aims to provide a seamless and secure messaging experience for users across different platforms.
- Real-time messaging using Django Channels and WebSocket.
- Responsive and sleek user interface crafted with Tailwind CSS and JavaScript.
- Data management powered by Postgresql for efficient storage and retrieval.
- Emphasis on security with end-to-end encryption and robust authentication mechanisms.
Our goal is to deliver a feature-rich and user-friendly chat application that prioritizes privacy and usability, empowering individuals and businesses to communicate effectively in today's digital landscape.
These instructions will help you set up a local development environment.
Prerequisites
- Be using Linux, WSL or MacOS, with bash, make etc.
- Python 3.x - for running locally, linting, running tests etc.
Clone the repo
git clone https://github.com/praks7v/chat-app.git
cd chatapp
make venv
make install
make makemigrations
make migrate
make run
Usage
Visit http://localhost:8000 to access the application.
To build the Docker image run the following command:
docker build . -t chatapp-web:latest -f docker/Dockerfile
To build the Docker image using docker compose:
docker compose -f docker/docker-compose.yaml build
To run the Docker container, use the following command:
docker run -p 8000:8000 chatapp-web:latest
To run the Docker container using docker compose, use the following command:
docker compose -f docker/docker-compose.yaml up
This command maps port 8000
in the container to port 8000
on your host machine. You can access the application by navigating to http://localhost:8000
.
- Follow the Jenkins official documentation for Jenkins Installation.
- To run sonarqube docker iamge, use the following command:
docker run -d --name sonarqube -p 9000:9000 sonarqube:lts-community
To access the sonarqube on browser http://localhost:9000/.
- Configure Jenkins:
- Open Jenkins and navigate to the "New Item" page.
- Create a new Pipeline job and configure it to use the
Jenkinsfile
from the repository. - Plugins to install:
- docker plugins
- OWASP Dependency-Check Plugin
- Pipeline
- SonarQube Scanner for Jenkins
- Configure tools:
- Docker
- OWASP Dependency-Check
- SonarQube
- System configure:
- Sonarqube
-
Follow the Minikube official documentation for Minikube Installation.
Start Minikube:
minikube start
Verify Minikube Status:
minikube status
Minikube comes with an Ingress addon which you need to enable:
minikube addons enable ingress
Activate Minikube docker environment:
eval $(minikube docker-env)
Add an entry to your
/etc/hosts
file to mapchatapp.com
to the Minikube IP:echo "$(minikube ip) chatapp.com" | sudo tee -a /etc/hosts
Build Docker image:
docker compose build . -f docker/docker-compose.yaml
Apply Kubernetes configurations:
kubectl apply -f argocd/manifests
Check the status of Deployments
kubectl get all
Access the applicaton on web:
http://chatapp.com
Create a Superuser into the container
docker exec -it <container_name_or_id> python manage.py createsuperuser kubectl exec -it -n chatapp <conatainer_name_or_id> python manage.py createsuperuser
Login to Django admin and add chat_rooms
http://localhost:8000/admin
Installing ArgoCD
- Using kubectl
Create the Argo CD namespace:
kubectl create namespace argocd
Install Argo CD components:
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
Accessing the Argo CD API Server:
To access the Argo CD API server, use port forwarding:
kubectl port-forward svc/argocd-server -n argocd 8080:443
Open your browser and navigate to https://localhost:8080
.
Logging into Argo CD to get the Initial Admin Password
:
The initial password for the admin account is auto-generated and stored in a Kubernetes secret. To retrieve it, run:
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
Open the Web UI: Navigate to https://localhost:8080
in your browser.
Login: Use admin
as the username and the password retrieved earlier.
Deploying Applications with ArgoCD:
kubectl apply -f argocd/application.yaml
Open the Web UI: Navigate to https://localhost:8080
in your browser and check the status of application.
Contributions are welcome! Please read CONTRIBUTING.md for details on our code of conduct and the process for submitting pull requests.