Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
a22e475
Fix prediction pipeline robustness and checkpoint compatibility
theproteinbot Feb 28, 2026
00416bb
Update setup and usage docs for resilient local workflows
theproteinbot Feb 28, 2026
56c15d4
Phase 0: harden inference runtime and packaging entrypoints
theproteinbot Feb 28, 2026
89d6866
Phase 1: extract reusable inference service core
theproteinbot Feb 28, 2026
968b549
Phase 2: add web API and optional modal backend routing
theproteinbot Feb 28, 2026
7d11672
Phase 3.1: harden API request surface and path guardrails
theproteinbot Feb 28, 2026
cd6f22a
Phase 3.2: unify packaging metadata via setup.cfg
theproteinbot Feb 28, 2026
84f3e42
Phase 3.3: centralize deserialization policy and enforce trusted roots
theproteinbot Feb 28, 2026
fbb5ef0
Merge pull request #33 from theproteinbot/codex/e2e-fixes
Vedasheersh Feb 28, 2026
919a863
docs: align API checkpoint_dir guidance with current guardrails
theproteinbot Feb 28, 2026
135b9e4
feat: ship web UI refresh and vercel deployment support
theproteinbot Mar 1, 2026
cd655e0
docs+deploy: add modal endpoint scaffold for vercel backend
theproteinbot Mar 1, 2026
db8a2bb
fix(modal): make prediction endpoint runtime-compatible and lazy-load…
theproteinbot Mar 1, 2026
da7b867
chore(vercel): prefill env file with deployed modal endpoint
theproteinbot Mar 1, 2026
0c902da
fix(vercel): remove functions/builds conflict
theproteinbot Mar 1, 2026
a89216c
ci: add GitHub Actions validation and Modal auto-deploy
theproteinbot Mar 1, 2026
75fe7b5
fix(web): support modal-only deployments and backend-aware fallback
theproteinbot Mar 1, 2026
d8a095d
fix(web): timeout long predict calls and cache-bust static assets
theproteinbot Mar 1, 2026
39d6bdc
feat(web): streamline production landing and improve scrolling
theproteinbot Mar 1, 2026
eec74d5
refactor(web): reduce landing page to prediction studio
theproteinbot Mar 10, 2026
52476d1
style(web): highlight publication and repository links
theproteinbot Mar 10, 2026
e382f93
fix(ci): avoid secrets in deploy workflow conditionals
theproteinbot Mar 11, 2026
3a35d0b
feat(web): redesign input form with multi-substrate support and Ki se…
theproteinbot Mar 15, 2026
2447ef7
fix(web): remove legacy index.html fallback
theproteinbot Mar 15, 2026
c696216
style(web): move Maranas Group attribution to footer
theproteinbot Mar 15, 2026
4863d26
feat(web): add GoatCounter visit tracking with footer counter
theproteinbot Mar 15, 2026
b4d7b3b
style(web): remove favicon from browser tab
theproteinbot Mar 15, 2026
ff1204d
Merge pull request #35 from theproteinbot/feat/multi-substrate-ki-sep…
Vedasheersh Mar 15, 2026
f889937
docs(readme): add web app section, frontend dev info, and update cita…
theproteinbot Mar 15, 2026
8223db5
docs(readme): add web app announcement
theproteinbot Mar 15, 2026
bbcc77a
docs(readme): use date instead of NEW for web app announcement
theproteinbot Mar 15, 2026
daa3e61
docs(readme): remove TODO from announcements
theproteinbot Mar 15, 2026
f9c59c7
docs(readme): update POST example with real glucokinase + glucose sample
theproteinbot Mar 15, 2026
e854d0a
docs(readme): fix backtick typo, URL casing, add ToC entries & Docker…
theproteinbot Mar 15, 2026
00163e1
Merge pull request #36 from theproteinbot/feat/multi-substrate-ki-sep…
Vedasheersh Mar 15, 2026
4c7149e
Remove CI/CD section and incorrect fine-tuning section from README
Vedasheersh Mar 16, 2026
1786e0f
fix(frontend): patch vite security advisory
theproteinbot Apr 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .env.vercel
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
CATPRED_DEFAULT_BACKEND=modal
CATPRED_MODAL_ENDPOINT=https://kaalabhairava2026--catpred-modal-api-predict.modal.run
CATPRED_MODAL_TOKEN=
CATPRED_MODAL_FALLBACK_TO_LOCAL=0
42 changes: 42 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: CI

on:
pull_request:
push:
branches:
- main

jobs:
validate:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.10"

- name: Install minimal runtime dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt

- name: Compile Python sources
run: |
git ls-files '*.py' | xargs -r python -m py_compile

- name: Smoke test API entrypoints
run: |
python - <<'PY'
from catpred.web.app import create_app
from api.index import app as vercel_app

api_app = create_app()
assert api_app.title == "CatPred API"
assert vercel_app is not None
print("API smoke checks passed.")
PY
49 changes: 49 additions & 0 deletions .github/workflows/deploy-modal.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: Deploy Modal

on:
workflow_dispatch:
push:
branches:
- main
paths:
- ".github/workflows/deploy-modal.yml"
- "modal_app.py"
- "predict.py"
- "scripts/create_pdbrecords.py"
- "catpred/**"

jobs:
deploy:
runs-on: ubuntu-latest
permissions:
contents: read
concurrency:
group: modal-production-deploy
cancel-in-progress: true
env:
MODAL_TOKEN_ID: ${{ secrets.MODAL_TOKEN_ID }}
MODAL_TOKEN_SECRET: ${{ secrets.MODAL_TOKEN_SECRET }}
steps:
- name: Skip when Modal credentials are not configured
if: ${{ env.MODAL_TOKEN_ID == '' || env.MODAL_TOKEN_SECRET == '' }}
run: echo "Skipping Modal deploy because MODAL_TOKEN_ID / MODAL_TOKEN_SECRET are not configured."

- name: Checkout
if: ${{ env.MODAL_TOKEN_ID != '' && env.MODAL_TOKEN_SECRET != '' }}
uses: actions/checkout@v4

- name: Set up Python
if: ${{ env.MODAL_TOKEN_ID != '' && env.MODAL_TOKEN_SECRET != '' }}
uses: actions/setup-python@v5
with:
python-version: "3.10"

- name: Install Modal CLI
if: ${{ env.MODAL_TOKEN_ID != '' && env.MODAL_TOKEN_SECRET != '' }}
run: |
python -m pip install --upgrade pip
pip install "modal>=0.73"

- name: Deploy modal_app.py
if: ${{ env.MODAL_TOKEN_ID != '' && env.MODAL_TOKEN_SECRET != '' }}
run: modal deploy modal_app.py
13 changes: 13 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,16 @@ catpred/data/__pycache__/esm_utils.cpython-312.pyc
catpred/data/__pycache__/data.cpython-312.pyc
catpred/data/__pycache__/cache_utils.cpython-312.pyc
catpred/data/__pycache__/__init__.cpython-312.pyc

# Generic Python/OS artifacts
__pycache__/
*.pyo
*.pyd
.DS_Store
*.egg-info/
.venv/
.ipynb_checkpoints/

# Local validation artifacts
.e2e-assets/
.e2e-tests/
8 changes: 8 additions & 0 deletions .vercelignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
.venv/
.e2e-assets/
.e2e-tests/
results/
output/
checkpoints/
external/
*.ipynb
Loading