Files
Chris Farhood bb5e9d518c
build-image / test (push) Successful in 37s
build-image / build (push) Successful in 25s
feat: Intervals.icu MCP portal (FastAPI + Authentik OIDC)
- OIDC login via Authentik; first login creates a disabled user (admin approval).
- Users set/replace their Intervals.icu athlete ID + API key; the key is validated
  against Intervals.icu and stored AES-256-GCM encrypted (shared key with the MCP
  server). Same users table (schema owned by the MCP server's migrations).
- Admin page (gated on the intervalsicu-mcp-admins group claim): list, approve,
  disable, delete users.
- 29 tests @ 93% (OIDC routes integration-only); Dockerfile asserts templates are
  packaged; .gitea CI test-gates the image build.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 20:51:46 -04:00

16 lines
472 B
Docker

FROM python:3.12-slim
WORKDIR /app
COPY pyproject.toml pyproject.toml
COPY src src
# All deps ship manylinux wheels — no build toolchain needed.
RUN pip install --no-cache-dir . \
&& python -c "import pathlib, intervalsicu_mcp_ui as m; \
assert (pathlib.Path(m.__file__).parent / 'templates' / 'base.html').exists(), 'templates not packaged'"
EXPOSE 8080
CMD ["uvicorn", "intervalsicu_mcp_ui.app:create_app", "--factory", "--host", "0.0.0.0", "--port", "8080"]