The aim is to establish a robust framwork to combat
misinfomation, disinformation, and fake news, thereby providing a more re-
liable information system. This paper outlines the key components of the
proposal, including source evaluation, fact-checking, technological require-
ments, while also addressing the challenges and the ethical consideration
associated with such system.
the app contains of 2 main components a golang p2p node that runs the consesnsus algorithm for the blockchain
A decentralized frontend served over the internet or locally
# Containers used
- golang build: compliation container for compilling the app
- golang runner: runs the p2p node and the rpc server
- fe builder: compile and build the nodejs app for serving
- fe runner: serves the static files through SSR techonology for
# DEVOPS
The app requires a local registry running for develpoment use cases
The minikube local registry can be ran with:
```sh
minikube addons enable registry
```
running the applications requires
```sh
./start-app.sh
```
stopping it requires
```sh
./stop-app.sh
```
for checking the cluster with minikube you can run:
```sh
minikube dashboard
```
## Kubernetes
first we have the deployments:
### p2p-node Deployment:
- **Metadata**: The name of the deployment is p2p-node and it resides in the veritas namespace.
- **Replicas**: The desired number of replicas for this deployment is 1, meaning there should be one Pod running at any given time.
- **Pod Template**: This is the specification for creating Pods. It includes a single container.
- **Container**: The container is named p2pnode and uses the image localhost:5000/veritasnode. The image pull policy is IfNotPresent, meaning the image will be pulled only if it's not already present on the node.
- **Environment Variable**: There's an environment variable PORT set to 6000.
- **Ports**: The container exposes port 6000 for TCP traffic, and this port is also mapped to the host's port 6000.
- **Volume** Mounts: There's a volume mounted at /app using the volume named node-data.
- **Volumes**: The volume node-data is a PersistentVolumeClaim using the claim node-data.
### veritasfe Deployment:
- **Metadata**: The name of the deployment is veritasfe and it also resides in the veritas namespace.
- **Replicas**: The desired number of replicas for this deployment is also 1.
- **Selector**: The selector is looking for Pods with the label app: veritasfe.
- **Pod Template**:
- **Labels**: The Pod labels are app: veritasfe.
- **Container**: The container is named frontend and uses the image localhost:5000/veritasfe.
- **Ports**: The container exposes port 3000 for TCP traffic, and this port is also mapped to the host's port 3000.
- **Restart Policy**: The restart policy for the Pod is Always, meaning the containers in the Pod will always be restarted if they terminate.
### p2p-node Service
The `p2p-node` service is a service resource that exposes the `p2p-node`
- **Metadata:**
- Labels: `app: p2p-node`
- Name: `p2p-node`
- Namespace: `veritas`
- **Spec:**
- The service listens on port `6000` and forwards traffic to the target port `6000` on the `p2p-node` Pod.
- **Ports:**
- Name: `6000`
Port: `6000`
Target Port: `6000`
### frontend Service
The `frontend` service is a ervice resource that exposes the `frontend` deployment
- **Metadata:**
- Labels: `app: frontend`
- Name: `frontend`
- Namespace: `veritas`
- **Spec:**
- The service listens on port `3000` and forwards traffic to the target port `3000` on the `frontend` Pod.