An open API service indexing awesome lists of open source software.

https://github.com/praks7v/chat-app

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.
https://github.com/praks7v/chat-app

argocd chat-app django docker jenkins minikube websocket

Last synced: 2 months ago
JSON representation

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.

Awesome Lists containing this project

README

          

# Chat App

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.

## Key Features:

- 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.

## Objective:
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.

## Getting Started

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
```

### 1. **Run locally**

```bash
cd chatapp
make venv
make install
make makemigrations
make migrate
make run
```

**Usage**

Visit http://localhost:8000 to access the application.

### 2. **Create a Docker Image and Run Docker Container**

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`.

### 3. **Create a Jenkins Pipeline**
- Follow the Jenkins official documentation for [Jenkins Installation](https://www.jenkins.io/doc/book/installing/).
- 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

### 4. Deploy Application on Minikube Cluster
- Follow the Minikube official documentation for [Minikube Installation](https://minikube.sigs.k8s.io/docs/start/).

**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 map `chatapp.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 python manage.py createsuperuser
kubectl exec -it -n chatapp python manage.py createsuperuser
```
**Login to Django admin and add chat_rooms**
```
http://localhost:8000/admin
```
### 5. Deploy ArgoCD for Contineuos Delivery

**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.

---
## Contributing
Contributions are welcome! Please read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct and the process for submitting pull requests.