:santa: The code behind Secret Santa, the holiday bot for Slack / Discord / Zoom
Just go to https://secret-santa.team/ and have fun.
Code source is under MIT License.
A Docker environment is provided and requires you to have these tools available:
Install and run
pipenvto install the required tools:
pipenv --three install
You can configure your current shell to be able to use Invoke commands directly (without having to prefix everything by
Optionally, in order to improve your usage of invoke scripts, you can install a console autocompletion script.
If you are using bash:
invoke --print-completion-script=bash > /etc/bash_completion.d/invoke
If you are using something else, please refer to your shell documentation. But you may need to use
invoke --print-completion-script=zsh > /to/somewhere
Invoke supports completion for
The Docker infrastructure provides a web stack with: - NGINX - Redis - PHP 7.4 - Traefik - A container with some tooling: - Composer - Node - Yarn / NPM
Before running the application for the first time, ensure your domain names point the IP of your Docker daemon by editing your
This IP is probably
127.0.0.1unless you run Docker in a special VM (docker-machine, dinghy, etc).
Note: The router binds port 80 and 443, that's why it will work with
echo '127.0.0.1 secret-santa.test' | sudo tee -a /etc/hosts
Using dinghy? Run
dinghy ipto get the IP of the VM.
We rely on some env variables to configure how to communicate with various API's and Redis.
Copy the content of the file
.envinto a new
.env.local(which will be ignored by git) and fill the missing vars with correct values.
Launch the stack by running this command:
Note: the first start of the stack should take a few minutes.
The site is now accessible at https://secret-santa.test (you may need to accept self-signed SSL certificate).
Having some composer, yarn or another modifications to make on the project? Start the builder which will give you access to a container with all these tools available:
Note: You can add as many Invoke command as you want. But the command should be ran by the builder, don't forget to add
@with_builderannotation to the function.
Tests are made with PHPUnit.
To run unit tests, launch this command:
inv -lto have the list of available Invoke tasks.