A web app for sharing secrets.
Development of this app is being presented as a series of videos on The Friendly TL's YouTube channel.
# Build prod container
DOCKER_DEFAULT_PLATFORM=linux/amd64 docker build -t gcr.io/cipherly/cipherly .
# Run prod container at http://127.0.0.1:8000
docker run -p 8000:8000 gcr.io/cipherly/cipherly
Staging is automatically deployed when a PR is merged to main. Prod is deployed by cutting a new release tag.
# Upload to Google Container Registry
gcloud builds submit --tag gcr.io/cipherly/cipherly
# Staging Deployment
gcloud run deploy cipherly-staging \
--image gcr.io/cipherly/cipherly \
--platform managed \
--region us-west1 \
--allow-unauthenticated
# Prod Deployment
gcloud run deploy cipherly \
--image gcr.io/cipherly/cipherly \
--platform managed \
--region us-west1 \
--allow-unauthenticated
-
Install prerequisites.
-
Clone the repository.
git clone [email protected]:shadanan/cipherly.git cd cipherly
-
Start a frontend dev server.
cd frontend npm install npm run build npm run dev
-
Start a backend server using a test KEK First, install cargo-watch then run:
KEKS='{"v1":"jRg36ErQ6FLcc7nZgngOpjJnJLGwA3xaMy0yx1pxJrI"}' cargo watch -x run
The basic URL form for a cipherly message is:
/schema/<schema>/version/<version>/<header>.<envelope>#<header>.<secret>
The schema is a name for the secret type. Currently only password
is supported.
The version represents what version the secret type is on. Should be 1.
The header is a URL-safe base64 encoded value that is specific to the schema.
For the password schema encrypted message:
/schema/password/version/1/<header>.<envelope>#<secret>