Skip to content

An app that masterfully weaves the chilling essence of Texas Chainsaw-style horror with the spine-tingling soundtrack of The Exorcist

License

Notifications You must be signed in to change notification settings

pedroandreou/Gallery-of-Terror-Dreams

Repository files navigation

Gallery of Terror Dreams

📰 Description

Introducing Terror Dreams 😱🔪 - an app that masterfully weaves the chilling essence of Texas Chainsaw-style horror with the spine-tingling soundtrack of The Exorcist. Drawing inspiration from the 2003 Texas Chainsaw Massacre Official Trailer #1 (at 1:19) 🎬 and the eerie, iconic Exorcist music 🎶, this app transforms ordinary text into a blood-curdling, heart-pounding experience 💀.

Terror Dreams takes artistic liberties to craft a cinematic horror experience that captures your attention and enhances your senses 👻. With this app, you can now conjure the bone-chilling atmosphere of classic horror films right on your device 📱, giving you the power to share the thrill with friends or keep it all to yourself 🤫.

Dare to enter the gallery of Terror Dreams, where your text takes on a sinister new life 🌑 and the line between reality and nightmare blurs 😨. Are you brave enough to embrace the darkness within? 🖤

Screenshot


Click here to view the GIF with sound (to hear the sound, double-click the video)

📝 Note: The GPT-3 API seemed to produce more contextually relevant sentences, leading to the creation of images that better matched the given context. However, I chose to use the ChatGPT API because it provides a significant cost reduction, offering a 10x decrease in expenses.

📝 Note: If you encounter the error message "Your request was rejected due to our safety system. Your prompt may include text that is not permitted by our safety system", resubmitting your request will often resolve the issue, allowing it to function as intended.

🏗️ Environment

🏠 You should create a virtualenv

## Linux
make virtualenv


## Windows
python -m venv .venv

🏭 How to activate the virtual environment

## Linux
source ./.env/bin/activate


## Windows
source ./.venv/Scripts/activate
pip install -r requirements.txt

🏡 Update & Pin the requirements. You'll need to add a new requirement to either the unpinned_requirements.txt file in the front-end or back-end directories. Once you've added the new requirement, you can run the command to update and pin the requirements automatically

## Linux
make update-and-pin-requirements-txt


## Windows
cmd.exe /C update_and_pin_requirements.bat

🔨 How to close a port that is already in use when trying to run it locally

sudo lsof -i :PORT_NUMBER
sudo kill PID

🐳 Docker

How to run the multi-container application:

## RUN IT ON A SINGLE DOCKER HOST LOCALLY
docker-compose up -d # If the variable is not set, it defaults to stackdemo_local-network, which is the network used for local development
docker-compose logs -f --tail=100 --no-color

## DOWN
docker-compose down --volumes


## RUN IT ON DOCKER SWARM CLUSTER
docker swarm init
docker service create --name registry --publish published=5000,target=5000 registry:2
export NETWORK_NAME=stackdemo_deployment-network
docker stack deploy --compose-file docker-compose.yml --with-registry-auth --orchestrator swarm mystack

## DOWN
docker stack rm mystack
docker service rm registry
docker swarm leave --force

Handy commands:

## REBUILD
docker-compose build --pull && docker-compose push

## FIND THE CUSTOM NETWORKS THAT YOU HAVE CREATED
docker network ls --filter type=custom

⛴️ Kubernetes

### LOCALLY

## RESET
minikube stop && minikube start

## ADD YOUR INGRESS IP TO YOUR /etc/hosts/ to make your domain accessible locally
minikube ip
sudo nano /etc/hosts (add <minikube_ip> gallery-of-terror-dreams.com)

## EXPORT YOUR EMAIL AS A SECRET KEY, CREATE ISSUER FROM TEMPLATE
cd ./k8s/certmanager/
export EMAIL=<your-email>
envsubst < issuer.template.yaml > issuer.yaml

## INSTALL ALL CONFIGS
cd ./k8s/infra/ && kubectl apply -f . && cd ../certmanager/ && kubectl apply -f certificate.yaml && kubectl apply -f issuer.yaml

## DELETE ALL CONFIGS
cd ./k8s/infra/ && kubectl delete -f . && cd ../certmanager/ && kubectl delete -f certificate.yaml && kubectl delete -f issuer.yaml
kubectl delete all --all


### DEPLOYMENT

## INSTALL INGRESS-NGINX
minikube addons enable ingress
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.7.0/deploy/static/provider/cloud/deploy.yaml
#OR#
helm install my-release ingress-nginx/ingress-nginx

## INSTALL CERT-MANAGER CERTIFICATE AND RENAME IT
kubectl create namespace cert-manager
kubectl -n cert-manager apply -f https://github.com/jetstack/cert-manager/releases/download/v1.3.1/cert-manager.yaml
kubectl apply -f https://github.com/jetstack/cert-manager/releases/latest/download/cert-manager.crds.yaml
helm repo add jetstack https://charts.jetstack.io
helm repo update

## CHECK STATUS
kubectl describe clusterissuer letsencrypt-cluster-issuer
kubectl describe certificate gallery-of-terror-dreams-tls -n default
kubectl describe ingress gallery-of-terror-dreams-ingress -n default

## MONITOR LOGS
kubectl logs -n cert-manager -l app=cert-manager

## DELETE ALL CERTIFICATES
kubectl delete certificate --all -n default
kubectl delete certificaterequest --all -n default

📝 Note: Let's Encrypt is unable to issue certificates for localhost. If you plan to run the app on a local Kubernetes cluster, consider using self-signed certificates. Read more about it, here.

🛠 Initialization & Setup

git clone https://github.com/pedroandreou/Gallery-of-Terror-Dreams.git

📜 License

This project is licensed under the MIT License. See the LICENSE file for more details.

🎩 Author

About

An app that masterfully weaves the chilling essence of Texas Chainsaw-style horror with the spine-tingling soundtrack of The Exorcist

Topics

Resources

License

Stars

Watchers

Forks