Engineering the live experience.
Docforge is a FastAPI + Docker service that turns Twisted Melon project metadata, license certificates, and other artifacts into PDF documents.
- Docker Desktop running
- Git installed
- A GitHub personal access token (only required if you use the GitHub-backed routes — most local users can leave it blank)
Run this on a fresh Docker host to install Docforge from scratch:
# 1. Clone the repo
git clone https://github.com/TwistedMelonIO/docforge.git
cd docforge
# 2. Set up the environment file
cp .env.example .env
# (optional) open .env and paste your GitHub PAT into GITHUB_TOKEN=
# 3. Build and start the container
docker compose up -d --buildOnce it's up, Docforge is reachable at http://localhost:8899.
Note:
docker-compose.ymlmounts a host path into/projectsfor project-metadata access. On a machine that isn't the original dev box, edit line 12 ofdocker-compose.ymland point it at your own projects directory (or remove the mount if you don't need that integration).
Run this in the existing docforge/ directory to pull the latest release and rebuild:
# 1. Pull the latest code
git fetch --tags
git checkout main
git pull origin main
# 2. Rebuild the container against the new code
docker compose down
docker compose up -d --buildTo pin to a specific release tag instead of main:
git fetch --tags
git checkout v1.1.1 # or whichever release
docker compose down
docker compose up -d --buildVerify the running version:
curl http://localhost:8899/ | grep versiondocker compose stop # stop the container
docker compose start # start it again
docker compose down # stop and remove the container (keeps volumes)
docker compose down -v # also remove volumes (destructive)- Port 8899 already in use — find the process with
lsof -iTCP:8899 -sTCP:LISTENand stop it, or change the host-side port indocker-compose.yml(line 8). - Mount errors on
/projects— fix or remove the host-path mount on line 12 ofdocker-compose.yml. Docker Desktop's File Sharing settings must include the parent of that path. - Container starts but API is empty — check logs:
docker logs docforge --tail 100.
Built by Twisted Melon — engineering the live experience.