{$SITE_ADDRESS} {
handle /api/* {
reverse_proxy server:8000
}
# share links go through the API: it injects og:* meta tags into the SPA
# shell so Telegram/Jira link previews show the project/report
handle /p/* {
reverse_proxy server:8000
}
handle /r/* {
reverse_proxy server:8000
}
# extension zips: real files only — no SPA fallback, a missing zip is a 404
handle /ext/* {
root * /srv/web
file_server
}
handle {
root * /srv/web
try_files {path} /index.html
file_server
}
}