This is an automated email from the ASF dual-hosted git repository. yasith pushed a commit to branch feat/sdk-facade-migration in repository https://gitbox.apache.org/repos/asf/airavata-portals.git
commit 7d0765e86934f7855401a30361f3d49a40e34068 Author: yasithdev <[email protected]> AuthorDate: Wed Apr 8 00:15:12 2026 -0500 build: add Tiltfile for portal development Adds Tilt-based dev orchestration (MariaDB via compose, Django dev server on :8000, frontend watch/HMR on :9000) and a /health/ endpoint for readiness probes. --- airavata-django-portal/Tiltfile | 86 +++++++++++++++++++++++++ airavata-django-portal/django_airavata/urls.py | 1 + airavata-django-portal/django_airavata/views.py | 5 ++ 3 files changed, 92 insertions(+) diff --git a/airavata-django-portal/Tiltfile b/airavata-django-portal/Tiltfile new file mode 100644 index 000000000..1d91ee6b5 --- /dev/null +++ b/airavata-django-portal/Tiltfile @@ -0,0 +1,86 @@ +# Tiltfile for Airavata Django Portal + +# --- Infrastructure (MariaDB + Adminer from docker-compose) --- +docker_compose('./compose/docker-compose.yaml') + +# --- Django backend dev server --- +local_resource( + 'django-server', + serve_cmd=' && '.join([ + 'pip install -e ".[mysql]" -q', + 'pip install -r requirements.txt -r requirements-mysql.txt -q', + 'python manage.py migrate --run-syncdb', + 'python manage.py runserver 0.0.0.0:8000', + ]), + deps=['django_airavata/'], + ignore=[ + '**/node_modules', + '**/static/django_airavata_*/*.js', + '**/static/django_airavata_*/*.css', + '**/static/common/dist', + ], + resource_deps=['db'], + readiness_probe=probe( + http_get=http_get_action(port=8000, path='/health/'), + initial_delay_secs=10, + period_secs=5, + ), + links=[ + link('http://localhost:8000', 'Portal'), + link('http://localhost:18888', 'Adminer'), + ], +) + +# --- Frontend dev servers --- +# Build order: api (webpack) -> common -> plugin-api -> apps +# api and common are libraries; they use `watch` mode instead of `serve`. + +local_resource( + 'frontend-api', + serve_cmd='yarn && yarn run watch', + serve_dir='django_airavata/apps/api', + deps=['django_airavata/apps/api/static'], + resource_deps=['django-server'], + labels=['frontend'], +) + +local_resource( + 'frontend-common', + serve_cmd='yarn && yarn run watch', + serve_dir='django_airavata/static/common', + deps=['django_airavata/static/common/js'], + resource_deps=['frontend-api'], + labels=['frontend'], +) + +local_resource( + 'frontend-workspace-plugin-api', + serve_cmd='yarn && yarn run watch', + serve_dir='django_airavata/apps/workspace/django-airavata-workspace-plugin-api', + deps=['django_airavata/apps/workspace/django-airavata-workspace-plugin-api/js'], + resource_deps=['frontend-common'], + labels=['frontend'], +) + +# Vue apps with HMR (vue-cli-service serve on port 9000) +# Only one can run at a time since they all bind port 9000. +# By default we start 'admin'. Toggle others in the Tilt UI. + +FRONTEND_APPS = { + 'admin': 'django_airavata/apps/admin', + 'auth': 'django_airavata/apps/auth', + 'dataparsers': 'django_airavata/apps/dataparsers', + 'groups': 'django_airavata/apps/groups', + 'workspace': 'django_airavata/apps/workspace', +} + +for name, path_prefix in FRONTEND_APPS.items(): + local_resource( + 'frontend-' + name, + serve_cmd='yarn && yarn run serve', + serve_dir=path_prefix, + resource_deps=['frontend-common', 'frontend-workspace-plugin-api'], + labels=['frontend-apps'], + auto_init=(name == 'admin'), + links=[link('http://localhost:9000', name + ' (HMR)')], + ) diff --git a/airavata-django-portal/django_airavata/urls.py b/airavata-django-portal/django_airavata/urls.py index 552fc7342..9989e3b33 100644 --- a/airavata-django-portal/django_airavata/urls.py +++ b/airavata-django-portal/django_airavata/urls.py @@ -25,6 +25,7 @@ from wagtail.documents import urls as wagtaildocs_urls from . import views urlpatterns = [ + path('health/', views.health, name='health'), re_path(r'^djadmin/', admin.site.urls), re_path(r'^admin/', include('django_airavata.apps.admin.urls')), re_path(r'^auth/', include('django_airavata.apps.auth.urls')), diff --git a/airavata-django-portal/django_airavata/views.py b/airavata-django-portal/django_airavata/views.py index e984c1092..cbeeaf99d 100644 --- a/airavata-django-portal/django_airavata/views.py +++ b/airavata-django-portal/django_airavata/views.py @@ -1,6 +1,11 @@ +from django.http import JsonResponse from django.shortcuts import render +def health(request): + return JsonResponse({'status': 'ok'}) + + def home(request): return render(request, 'django_airavata/home.html', {})
