Compare commits

...

3 Commits

Author SHA1 Message Date
c516995ebe Add gif recording 2021-10-16 08:28:43 +02:00
e378880960 Add gif recording 2021-10-16 08:26:53 +02:00
b528f77f79 Dockerfile and README 2021-05-19 15:54:06 +02:00
5 changed files with 61 additions and 7 deletions

5
.dockerignore Normal file
View File

@ -0,0 +1,5 @@
__pycache__
venv
surprise.txt
backend/static/main.js
frontend/elm-stuff

View File

@ -1,10 +1,19 @@
FROM xxx FROM python:3-alpine
# Install flask and elm ENV SURPRISE_ASSET_DIR=/assets
ENV ELM_VERSION=0.19.1
ENV PYTHONUNBUFFERED=1
# Copy files COPY backend backend
COPY frontend frontend
# Compile elm ADD https://github.com/elm/compiler/releases/download/$ELM_VERSION/binary-for-linux-64-bit.gz elm.gz
RUN gunzip elm.gz && \
# Run flask chmod +x elm && \
mv elm /bin/elm
RUN cd frontend && \
elm make src/Main.elm --optimize --output=../backend/static/main.js
WORKDIR backend
RUN pip install -r requirements.pip
ENTRYPOINT ["flask", "run", "-h", "0.0.0.0"]

View File

@ -2,5 +2,45 @@
This is a web application for revealing a surprise at a given time. This is a web application for revealing a surprise at a given time.
![Surprise countdown](recording.gif "Surprise countdown")
Two pages are served:
1. `/` - The index page polls the backend every second and displays the image
asset corresponding to the state of the surprise with a countdown if applicable.
2. `/set-surprise` - Select and POST the surprise to the backend (password protected).
The surprise can have the following states:
- `_null` - The surprise is not set.
- `_secret` - The surprise is set but not yet revealed.
- `<value>` - The surprise is set and revealed.
## Configuration
Environment variables:
- `SURPRISE_TITLE` - Page title
- `SURPRISE_STORE_FILE` - File name to store surprise value.
- `SURPRISE_SECRET` - Password for setting the surprise.
- `SURPRISE_ASSET_DIR` - Directory of image assets that corresponds to surprise
state/values. The set of possible surprise values are parsed from the basename
of the asset files. The `_null` and `_secret` states may be overridden.
- `SURPRISE_REVEAL_DATETIME` - Datetime for reveal.
## Build
```bash
$ docker build -t surprise-countdown .
```
## Run gender reveal example
```bash
$ docker run -e SURPRISE_SECRET=hunter2 -p 5000:5000 -v $(pwd)/surprise-assets/gender-reveal:/assets:ro surprise-countdown
```
Then browse to [localhost:5000](localhost:5000).

View File

@ -64,7 +64,7 @@ update msg model =
subscriptions : Model -> Sub Msg subscriptions : Model -> Sub Msg
subscriptions model = subscriptions model =
Time.every 980 FetchSurprise Time.every 1000 FetchSurprise
-- VIEW -- VIEW

BIN
recording.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 MiB