yasithdev opened a new pull request, #106:
URL: https://github.com/apache/airavata-portals/pull/106

   ## Summary
   
   Complete modernization of the Airavata Django Portal — replaces Thrift with 
SDK facade, upgrades all frameworks, and adds modern tooling.
   
   **21 commits** | Touches every layer of the stack
   
   ## What Changed
   
   ### Backend: Thrift → SDK Facade
   - Replace all Thrift client pools with `AiravataClient` facade (139 call 
sites)
   - Replace all Thrift type imports with proto compatibility layer (50+ types)
   - Replace `request.profile_service` with 
`request.airavata_client.iam/sharing`
   - Zero Thrift imports remaining
   
   ### Framework Upgrades
   - **Django** 3.2 → 5.1 (URL routing, settings, template tags)
   - **Wagtail** 2.13 → 6.3+ (namespace migration, StreamField, Revision)
   - **DRF** 3.12 → 3.15
   - **Python** 3.6+ → 3.12+ only
   
   ### Frontend Modernization
   - **Webpack → Vite** (8 frontend apps)
   - **Vue 2 → 3** (Composition API compatible, Router 4, Vuex 4)
   - **bootstrap-vue → Bootstrap 5** (130 files)
   - **npm workspaces** for unified frontend builds
   
   ### Tooling
   - **pip → uv** (10x faster installs, lockfile)
   - **ty** type checker (strictest mode, found 2 real bugs)
   - **ruff** linting + formatting
   - **pre-commit hooks** (ruff + ty on every commit)
   - **pyproject.toml** single config (deleted setup.py, tox.ini, 
requirements.txt)
   - **Tiltfile** for dev orchestration
   - **CI/CD** modernized (uv, Python 3.12, ruff, ty)
   
   ### Cleanup
   - Delete `airavata-django-portal-sdk` (inlined to SDK facade)
   - Delete `airavata-django-portal-commons` (inlined dynamic_apps)
   - Delete both cookiecutter packages (merged to portal templates/)
   - Delete legacy configs (.prettierrc, vetur.config.js, .bat scripts)
   - **324 functions typed** with Python 3.12 syntax
   - **pkg_resources → importlib.metadata** (stdlib)
   - Dockerfile: Python 3.12-slim, Node 22-slim, uv
   
   ### Type Safety
   - ty found and we fixed: 5,823 → 256 errors
   - Remaining 248 are Django ORM dynamic attributes (need django-stubs)
   - Found 2 real bugs via type checking:
     - `{"request", request}` was a set, not a dict
     - `choices=None` where `[]` was needed
   
   ## Test Plan
   
   - [x] Zero Thrift references (excluding comments/migrations)
   - [x] Zero portal-sdk/commons references
   - [x] Zero webpack references
   - [x] Zero Vue 2 patterns
   - [x] ty: 256 errors (all Django ORM dynamic attrs)
   - [x] ruff: clean
   - [ ] `tilt up` — verify portal loads
   - [ ] Manual smoke test of experiment creation flow
   
   🤖 Generated with [Claude Code](https://claude.com/claude-code)


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to