Skip to content

Latest commit

 

History

History
40 lines (27 loc) · 2.3 KB

File metadata and controls

40 lines (27 loc) · 2.3 KB

Miltydraft generator

Visit the app here.

An expanded version of miltydraft.com, with saving/sharing drafts across sessions.

Requirements:

  • make sure you have docker installed

Getting started

To install a local copy of this app you can clone it from the Git Repo:

git@github.com:shenanigans-be/miltydraft.git

Then follow these steps:

  1. Add 127.0.0.1 milty.localhost to your /etc/hosts file. This first step is optional though. You can use 127.0.0.1 directly as well.
  2. Run docker compose up -d --build. This will first build the image, then start all services.
  3. Run docker compose exec app composer install. This will install all php dependencies.
  4. Create a .env file. See .env.example for details.
  5. Go to https://milty.localhost in your browser (or http://localhost if you don't want to go through the hassle of the following steps)
  6. Your browser might give you some scary warnings about untrusted certificates. That's because we're using a self-signed certificate. If you want to, you can add the certificate to your device's truster certificate.
  7. Run docker compose exec app cat /home/app/.local/share/caddy/pki/authorities/local/root.crt > caddy-cert.crt to make a copy of the certificate in caddy-cert.crt (which you can then import wherever you need it)

Libraries and Dependencies

Frontend runs on vanilla JS/jQuery (I'm aware jQuery is a bit of a blast from the past at this point; sue me and/or change it and PR me if you want) and the Back-end is vanilla PHP. As such there's no build-system, or compiling required except for the steps described above.

To make this app as lean and mean (and easy to understand for anyone) as possible, external dependencies, both in the front- and backend should be kept to an absolute minimum.

Understanding the App flow

  1. Players come in on index.php and choose their options.
  2. A JSON config file is created (either locally or remotely, depending on .env settings) with a unique ID
  3. That Draft ID is also the Draft URL: APP_URL/d/{draft-id} (URL rewriting is done via Caddy locally)
  4. Players (or the Admin) make draft choices, which updates the draft json file (with very loose security, since we're assuming a very low amount of bad actors)