This is an automated email from the ASF dual-hosted git repository. yasithdev pushed a commit to branch modernization in repository https://gitbox.apache.org/repos/asf/airavata-portals.git
commit 98ecf2072b0fdec78a8a3742f9e4551a765e9699 Merge: 902b8e052 49b83cbea Author: yasithdev <[email protected]> AuthorDate: Tue Apr 21 17:12:35 2026 -0400 merge: Track C (monorepo tooling) airavata-django-portal/.asf.yaml | 8 +- .../.github/workflows/build-and-test.yaml | 6 +- airavata-django-portal/.gitignore | 2 - airavata-django-portal/.prettierignore | 22 + airavata-django-portal/.readthedocs.yaml | 4 +- airavata-django-portal/README.md | 12 +- airavata-django-portal/Tiltfile | 4 +- airavata-django-portal/compose/docker-compose.yaml | 9 +- .../django_airavata/apps/admin/eslint.config.js | 1 + .../django_airavata/apps/admin/jest.config.js | 3 +- .../django_airavata/apps/admin/package.json | 10 +- .../django_airavata/apps/admin/prettier.config.js | 1 + .../src/components/admin/ComputeResourcesModal.vue | 38 +- .../applications/ApplicationDeploymentEditor.vue | 144 +- .../applications/ApplicationDeploymentsList.vue | 40 +- .../applications/ApplicationEditorContainer.vue | 328 +- .../applications/ApplicationInputFieldEditor.vue | 218 +- .../applications/ApplicationInterfaceEditor.vue | 101 +- .../applications/ApplicationModuleEditor.vue | 30 +- .../applications/ApplicationOutputFieldEditor.vue | 156 +- .../applications/CommandObjectsEditor.vue | 29 +- .../src/components/applications/JSONEditor.vue | 17 +- .../components/applications/SetEnvPathsEditor.vue | 28 +- .../credentials/NewPasswordCredentialModal.vue | 33 +- .../credentials/NewSSHCredentialModal.vue | 20 +- .../credentials/SSHCredentialSelector.vue | 76 +- .../dashboards/ApplicationsDashboard.vue | 23 +- .../dashboards/CredentialStoreDashboard.vue | 57 +- .../GatewayResourceProfileEditor.vue | 4 +- .../GatewayResourceProfileEditorContainer.vue | 30 +- .../gatewayprofile/StoragePreferenceEditor.vue | 20 +- .../gatewayprofile/StoragePreferenceList.vue | 65 +- .../src/components/notices/NoticeEditor.vue | 87 +- .../notices/NoticesManagementContainer.vue | 57 +- .../statistics/ExperimentDetailsView.vue | 174 +- .../statistics/ExperimentStatisticsCard.vue | 7 +- .../statistics/ExperimentStatisticsContainer.vue | 210 +- .../src/components/users/ActivateUserPanel.vue | 10 +- .../src/components/users/ChangeUsernamePanel.vue | 57 +- .../src/components/users/DeleteUserPanel.vue | 12 +- .../src/components/users/EnableUserPanel.vue | 6 +- .../users/ExtendedUserProfileContainer.vue | 39 +- .../components/users/ExtendedUserProfilePanel.vue | 14 +- .../components/users/ExternalIDPUserInfoPanel.vue | 14 +- .../IdentityServiceUserManagementContainer.vue | 56 +- .../UnverifiedEmailUserManagementContainer.vue | 42 +- .../src/components/users/UserDetailsContainer.vue | 65 +- .../components/users/UserManagementContainer.vue | 14 +- .../src/components/users/UserProfilePanel.vue | 4 +- .../ExtendedUserProfileFieldEditor.vue | 148 +- .../static/django_airavata_admin/src/router.js | 2 +- .../src/store/modules/extendedUserProfile.js | 14 +- .../ExperimentStatisticsContainer.spec.js | 28 +- .../admin/templates/admin/compute_resource.html | 13 +- .../admin/templates/admin/credential_store.html | 13 +- .../django_airavata/apps/admin/vite.config.js | 31 +- .../django_airavata/apps/api/eslint.config.js | 1 + .../django_airavata/apps/api/package.json | 4 +- .../django_airavata/apps/api/prettier.config.js | 1 + .../django_airavata_api/js/errors/ErrorReporter.js | 2 +- .../django_airavata_api/js/errors/ErrorUtils.js | 6 +- .../api/static/django_airavata_api/js/index.js | 28 +- .../js/models/ApplicationInterfaceDefinition.js | 2 +- .../js/models/AwsComputeResourcePreference.js | 6 +- .../django_airavata_api/js/models/BaseModel.js | 25 +- .../js/models/BatchQueueResourcePolicy.js | 12 +- .../models/ComputationalResourceSchedulingModel.js | 44 +- .../js/models/ComputeResourcePolicy.js | 3 +- .../js/models/ComputeResourceReservation.js | 3 +- .../django_airavata_api/js/models/DataType.js | 24 +- .../django_airavata_api/js/models/Experiment.js | 22 +- .../js/models/ExperimentStoragePath.js | 3 +- .../js/models/ExperimentSummary.js | 2 +- .../js/models/ExtendedUserProfileField.js | 4 +- .../js/models/ExtendedUserProfileFieldLink.js | 9 +- .../js/models/GroupAccountSSHProvisionerConfig.js | 7 +- .../js/models/GroupComputeResourcePreference.js | 66 +- .../js/models/GroupPermission.js | 2 +- .../js/models/GroupResourceProfile.js | 65 +- .../js/models/InputDataObjectType.js | 30 +- .../django_airavata_api/js/models/Notification.js | 5 +- .../js/models/OutputDataObjectType.js | 2 +- .../js/models/ParallelismType.js | 9 +- .../django_airavata_api/js/models/ProcessState.js | 7 +- .../django_airavata_api/js/models/ResourceType.js | 1 - .../django_airavata_api/js/models/SharedEntity.js | 13 +- .../js/models/SlurmComputeResourcePreference.js | 6 +- .../js/models/UserConfigurationData.js | 8 +- .../js/models/UserPermission.js | 2 +- .../django_airavata_api/js/models/UserProfile.js | 5 +- .../dependencies/BooleanExpressionEvaluator.js | 22 +- .../js/models/validators/MaxLengthValidator.js | 6 +- .../js/models/validators/MinLengthValidator.js | 6 +- .../django_airavata_api/js/service_config.js | 4 +- .../js/services/FullExperimentService.js | 6 +- .../js/services/ProjectService.js | 8 +- .../js/services/ServiceFactory.js | 43 +- .../js/services/UserProfileService.js | 2 +- .../static/django_airavata_api/js/utils/Cache.js | 8 +- .../js/utils/ExperimentUtils.js | 95 +- .../django_airavata_api/js/utils/FetchUtils.js | 60 +- .../js/utils/PaginationIterator.js | 14 +- .../django_airavata_api/js/utils/SSEClient.js | 24 +- .../django_airavata_api/js/utils/StringUtils.js | 4 +- .../js/utils/sseSharedWorker.js | 34 +- .../BooleanExpressionEvaluator.test.js | 12 +- .../tests/utils/ExperimentUtils.test.js | 83 +- .../django_airavata/apps/api/vite.config.js | 26 +- .../django_airavata/apps/auth/eslint.config.js | 1 + .../django_airavata/apps/auth/package.json | 10 +- .../django_airavata/apps/auth/prettier.config.js | 1 + .../js/components/ExtendedUserProfileEditor.vue | 12 +- .../ExtendedUserProfileMultiChoiceValueEditor.vue | 47 +- .../ExtendedUserProfileSingleChoiceValueEditor.vue | 37 +- .../ExtendedUserProfileTextValueEditor.vue | 11 +- ...ExtendedUserProfileUserAgreementValueEditor.vue | 13 +- .../components/ExtendedUserProfileValueEditor.vue | 15 +- .../js/components/UserProfileEditor.vue | 32 +- .../js/containers/UserProfileContainer.vue | 82 +- .../js/store/modules/extendedUserProfile.js | 49 +- .../templates/django_airavata_auth/auth_error.html | 21 +- .../auth/templates/django_airavata_auth/base.html | 12 +- .../django_airavata_auth/create_account.html | 49 +- .../django_airavata_auth/forgot_password.html | 30 +- .../login-desktop-success.html | 17 +- .../django_airavata_auth/login-desktop.html | 18 +- .../auth/templates/django_airavata_auth/login.html | 18 +- .../partials/externals_login_form.html | 56 +- .../django_airavata_auth/partials/form.html | 18 +- .../django_airavata_auth/partials/form_field.html | 40 +- .../django_airavata_auth/partials/messages.html | 15 +- .../partials/non_field_errors.html | 5 +- .../partials/username_password_login_form.html | 104 +- .../django_airavata_auth/reset_password.html | 25 +- .../django_airavata_auth/verify_email.html | 24 +- .../django_airavata/apps/auth/vite.config.js | 34 +- .../apps/dataparsers/eslint.config.js | 1 + .../django_airavata/apps/dataparsers/package.json | 10 +- .../apps/dataparsers/prettier.config.js | 1 + .../js/containers/ParserDetailsContainer.vue | 10 +- .../js/containers/ParserEditContainer.vue | 18 +- .../js/containers/ParsersManageContainer.vue | 33 +- .../js/parser-components/ParserEditor.vue | 75 +- .../js/parser-components/ParserList.vue | 21 +- .../js/parser-components/ParserListItem.vue | 9 +- .../django_airavata_dataparsers/base.html | 13 +- .../django_airavata_dataparsers/edit-parser.html | 4 +- .../parser-details.html | 4 +- .../parsers-manage.html | 4 +- .../apps/dataparsers/vite.config.js | 44 +- .../eslint.config.js | 1 + .../js/input-editors/InputEditorMixin.js | 4 +- .../package.json | 6 +- .../prettier.config.js | 1 + .../vite.config.js | 34 +- .../apps/workspace/eslint.config.js | 1 + .../django_airavata/apps/workspace/jest.config.js | 10 +- .../django_airavata/apps/workspace/package.json | 12 +- .../apps/workspace/prettier.config.js | 1 + .../js/components/PgaLink.vue | 10 +- .../ComputationalResourceSchedulingEditor.vue | 173 +- .../experiment/ExperimentDescriptionEditor.vue | 25 +- .../js/components/experiment/ExperimentEditor.vue | 120 +- .../js/components/experiment/ExperimentSummary.vue | 153 +- .../experiment/GroupResourceProfileSelector.vue | 58 +- .../components/experiment/QueueSettingsEditor.vue | 473 +- .../input-editors/AutocompleteInputEditor.vue | 21 +- .../input-editors/CheckboxInputEditor.vue | 10 +- .../experiment/input-editors/FileInputEditor.vue | 46 +- .../input-editors/InputEditorContainer.vue | 72 +- .../input-editors/InputEditorFormGroup.vue | 25 +- .../experiment/input-editors/InputFileSelector.vue | 26 +- .../input-editors/MultiFileInputEditor.vue | 26 +- .../input-editors/RadioButtonInputEditor.vue | 22 +- .../input-editors/RangeSliderInputEditor.vue | 42 +- .../experiment/input-editors/SelectInputEditor.vue | 11 +- .../experiment/input-editors/SliderInputEditor.vue | 38 +- .../experiment/input-editors/StringInputEditor.vue | 7 +- .../input-editors/TextareaInputEditor.vue | 5 +- .../input-editors/UserFileInputEditor.vue | 13 +- .../output-displays/DefaultOutputDisplay.vue | 32 +- .../output-displays/HtmlOutputDisplay.vue | 22 +- .../output-displays/ImageOutputDisplay.vue | 2 +- .../output-displays/LinkOutputDisplay.vue | 2 +- .../output-displays/NotebookOutputDisplay.vue | 2 +- .../output-displays/OutputDisplayContainer.vue | 157 +- .../InteractiveParameterCheckboxWidget.vue | 9 +- .../InteractiveParameterRangeWidget.vue | 5 +- .../InteractiveParameterSelectWidget.vue | 13 +- .../InteractiveParameterStepperWidget.vue | 9 +- .../InteractiveParameterTextInputWidget.vue | 9 +- .../InteractiveParameterWidgetContainer.vue | 17 +- .../InteractiveParametersPanel.vue | 20 +- .../WorkspaceNoticesManagementContainer.vue | 38 +- .../js/components/project/ProjectButtonNew.vue | 29 +- .../js/components/project/ProjectDeleteModal.vue | 32 +- .../js/components/project/ProjectEditor.vue | 60 +- .../js/components/project/ProjectList.vue | 14 +- .../js/components/project/ProjectListItem.vue | 27 +- .../js/components/project/ProjectMembersCard.vue | 42 +- .../js/components/project/ProjectResourcesCard.vue | 30 +- .../storage/ExperimentStoragePathViewer.vue | 27 +- .../storage/ExperimentStorageViewContainer.vue | 58 +- .../components/storage/StoragePathBreadcrumb.vue | 12 +- .../components/storage/UserStorageCreateView.vue | 37 +- .../storage/UserStorageFileSelectionContainer.vue | 18 +- .../components/storage/UserStoragePathViewer.vue | 67 +- .../storage-edit/UserStorageAudioEditViewer.vue | 14 +- .../storage-edit/UserStorageDefaultEditViewer.vue | 16 +- .../storage-edit/UserStorageDownloadButton.vue | 8 +- .../storage/storage-edit/UserStorageEditViewer.vue | 81 +- .../storage-edit/UserStorageImageEditViewer.vue | 14 +- .../storage/storage-edit/UserStorageLink.vue | 13 +- .../storage-edit/UserStoragePdfEditViewer.vue | 14 +- .../storage-edit/UserStorageTextEditViewer.vue | 63 +- .../storage-edit/UserStorageVideoEditViewer.vue | 14 +- .../js/containers/ApplicationEditorContainer.vue | 684 +- .../js/containers/ComputeContainer.vue | 88 +- .../js/containers/ComputeDetailContainer.vue | 345 +- .../js/containers/CreateExperimentContainer.vue | 47 +- .../js/containers/DashboardContainer.vue | 159 +- .../js/containers/DatasetsContainer.vue | 12 +- .../js/containers/DatasetsListContainer.vue | 6 +- .../js/containers/EditExperimentContainer.vue | 40 +- .../js/containers/EditProjectContainer.vue | 16 +- .../js/containers/ExperimentListContainer.vue | 325 +- .../js/containers/GatewaySettingsContainer.vue | 60 +- .../js/containers/ProjectListContainer.vue | 61 +- .../js/containers/ProjectOverviewContainer.vue | 90 +- .../js/containers/RecentExperimentsContainer.vue | 48 +- .../js/containers/StorageDetailContainer.vue | 112 +- .../js/containers/StorageTreeContainer.vue | 108 +- .../js/containers/UserStorageContainer.vue | 65 +- .../js/containers/WorkspaceDashboardContainer.vue | 109 +- .../js/entry-create-experiment.js | 5 +- .../django_airavata_workspace/js/entry-datasets.js | 4 +- .../js/entry-experiment-list.js | 9 +- .../js/entry-project-list.js | 4 +- .../js/entry-project-overview.js | 4 +- .../js/entry-storage-tree.js | 2 +- .../js/entry-view-experiment.js | 14 +- .../js/store/modules/view-experiment.js | 53 +- .../django_airavata_workspace/js/utils/urls.js | 4 +- .../js/web-components/ComputeResourceSelector.vue | 27 +- .../ExperimentComputeResourceSelector.vue | 10 +- .../js/web-components/ExperimentEditor.vue | 92 +- .../GroupResourceProfileSelector.vue | 22 +- .../js/web-components/ProjectSelector.vue | 19 +- .../js/web-components/QueueSettingsEditor.vue | 122 +- .../input-editors/CheckboxInputEditor.vue | 6 +- .../input-editors/FileInputEditor.vue | 6 +- .../input-editors/MultiFileInputEditor.vue | 6 +- .../input-editors/RadioButtonInputEditor.vue | 6 +- .../input-editors/RangeSliderInputEditor.vue | 6 +- .../input-editors/SelectInputEditor.vue | 6 +- .../input-editors/SliderInputEditor.vue | 6 +- .../input-editors/StringInputEditor.vue | 6 +- .../input-editors/TextareaInputEditor.vue | 6 +- .../input-editors/WebComponentInputEditorMixin.js | 2 - .../js/web-components/store.js | 181 +- .../tests/unit/web-components/store.spec.js | 112 +- .../application_editor.html | 15 +- .../templates/django_airavata_workspace/base.html | 83 +- .../create_experiment.html | 20 +- .../django_airavata_workspace/dashboard.html | 4 +- .../django_airavata_workspace/datasets_list.html | 5 +- .../django_airavata_workspace/edit_experiment.html | 4 +- .../django_airavata_workspace/edit_project.html | 4 +- .../experiments_list.html | 23 +- .../project_overview.html | 15 +- .../django_airavata_workspace/projects_list.html | 5 +- .../django_airavata_workspace/view_experiment.html | 10 +- .../django_airavata_workspace/wc-base.html | 30 +- .../django_airavata/apps/workspace/vite.config.js | 126 +- .../bootstrap-4.0.0-beta/css/bootstrap-grid.css | 638 +- .../css/bootstrap-grid.min.css | 1344 +- .../bootstrap-4.0.0-beta/css/bootstrap-reboot.css | 44 +- .../css/bootstrap-reboot.min.css | 294 +- .../static/bootstrap-4.0.0-beta/css/bootstrap.css | 1595 +- .../bootstrap-4.0.0-beta/css/bootstrap.min.css | 7505 +++- .../static/bootstrap-4.0.0-beta/js/bootstrap.js | 6568 ++-- .../bootstrap-4.0.0-beta/js/bootstrap.min.js | 2636 +- .../django_airavata/static/common/eslint.config.js | 1 + .../django_airavata/static/common/js/cms.js | 8 +- .../common/js/components/ApplicationCard.vue | 35 +- .../common/js/components/ApplicationName.vue | 34 +- .../common/js/components/AutocompleteTextInput.vue | 14 +- .../static/common/js/components/BreadcrumbNav.vue | 4 +- .../common/js/components/ClipboardCopyButton.vue | 5 +- .../common/js/components/ClipboardCopyLink.vue | 11 +- .../common/js/components/ComputeResourceName.vue | 28 +- .../common/js/components/ConfirmationButton.vue | 19 +- .../common/js/components/ConfirmationDialog.vue | 10 +- .../common/js/components/DataProductViewer.vue | 6 +- .../static/common/js/components/DeleteButton.vue | 10 +- .../static/common/js/components/DeleteLink.vue | 8 +- .../common/js/components/ExperimentStatusBadge.vue | 2 +- .../static/common/js/components/FavoriteToggle.vue | 27 +- .../common/js/components/GatewayGroupsBadge.vue | 2 +- .../js/components/GatewayNoticesContainer.vue | 8 +- .../static/common/js/components/HumanDate.vue | 2 +- .../static/common/js/components/Linkify.vue | 16 +- .../static/common/js/components/MainLayout.vue | 27 +- .../common/js/components/NotificationsDisplay.vue | 132 +- .../common/js/components/NotificationsPanel.vue | 11 +- .../static/common/js/components/Pager.vue | 31 +- .../static/common/js/components/ShareButton.vue | 94 +- .../common/js/components/SharedEntityEditor.vue | 119 +- .../static/common/js/components/Sidebar.vue | 2 +- .../static/common/js/components/SidebarFeed.vue | 22 +- .../common/js/components/SidebarFeedItem.vue | 8 +- .../static/common/js/components/SidebarHeader.vue | 2 +- .../common/js/components/SshPromptNotification.vue | 56 +- .../common/js/components/UnsavedChangesGuard.vue | 5 +- .../static/common/js/components/Uppy.vue | 61 +- .../static/common/js/components/ValidatedForm.vue | 8 +- .../common/js/components/ValidatedFormGroup.vue | 7 +- .../static/common/js/errors/ValidationErrors.js | 4 +- .../static/common/js/layouts/ListLayout.vue | 23 +- .../django_airavata/static/common/js/main.js | 8 +- .../common/js/notifications/NotificationList.js | 2 +- .../django_airavata/static/common/js/utils.js | 5 +- .../django_airavata/static/common/package.json | 10 +- .../static/common/prettier.config.js | 1 + .../django_airavata/static/common/scss/main.scss | 535 +- .../django_airavata/static/common/vite.config.js | 31 +- .../django_airavata/templates/base.html | 103 +- .../templates/blocks/bootstrap/alert.html | 11 +- .../templates/blocks/bootstrap/button.html | 6 +- .../templates/blocks/bootstrap/buttonmore.html | 24 +- .../templates/blocks/bootstrap/card.html | 43 +- .../templates/blocks/bootstrap/carousel.html | 73 +- .../templates/blocks/bootstrap/embed-video.html | 4 +- .../templates/blocks/bootstrap/jumbotron.html | 9 +- .../templates/blocks/bootstrap/media.html | 9 +- .../templates/blocks/bootstrap/nav-item.html | 26 +- .../templates/blocks/bootstrap/nav.html | 4 +- .../templates/blocks/bootstrap/well.html | 4 +- .../templates/blocks/embed_block.html | 9 +- .../templates/blocks/heading_block.html | 18 +- .../django_airavata/templates/blocks/hrule.html | 5 +- .../templates/blocks/image_block.html | 40 +- .../templates/blocks/iu_footer.html | 29 +- .../templates/blocks/placeholder_block.html | 3 +- .../templates/django_airavata/error_page.html | 24 +- .../django_airavata/google_analytics.html | 13 +- .../templates/django_airavata/home.html | 87 +- .../templates/django_airavata/landing.html | 180 +- .../django_airavata_wagtail_base/about_page.html | 56 +- .../django_airavata_wagtail_base/blank_page.html | 54 +- .../django_airavata_wagtail_base/contact_page.html | 59 +- .../cybergateway_home_page.html | 199 +- .../documentation_page.html | 24 +- .../django_airavata_wagtail_base/home_page.html | 154 +- .../includes/announcement_list.html | 15 +- .../includes/custom_css.html | 7 +- .../includes/custom_header_links.html | 72 +- .../includes/extra_web_resources.html | 6 +- .../includes/favicon.html | 12 +- .../includes/footer_text.html | 5 +- .../includes/gateway_icon.html | 12 +- .../includes/gateway_title.html | 7 +- .../includes/main_menu_navs.html | 11 +- .../includes/nav_extra.html | 7 +- .../includes/navbar.html | 20 +- .../django_airavata/templates/includes/footer.html | 5 +- .../templates/includes/head-extra.html | 4 +- .../django_airavata/templates/includes/head.html | 50 +- .../django_airavata/templates/includes/header.html | 41 +- .../templates/includes/nav-extra.html | 4 +- .../templates/tags/breadcrumbs.html | 42 +- .../django_airavata/templates/tags/top_menu.html | 35 +- .../templates/tags/top_menu_children.html | 4 +- .../wagtailapps/base/fixtures/amp.json | 4043 +-- .../wagtailapps/base/fixtures/csbglsu.json | 4335 ++- .../wagtailapps/base/fixtures/cybergateway.json | 2115 +- .../wagtailapps/base/fixtures/default.json | 4924 ++- .../wagtailapps/base/fixtures/distantreader.json | 3589 +- .../wagtailapps/base/fixtures/futurewater.json | 4874 ++- .../wagtailapps/base/fixtures/hpcgateway.json | 2670 +- .../wagtailapps/base/fixtures/mines.json | 3705 +- .../wagtailapps/base/fixtures/nanoconfinement.json | 2318 +- .../base/fixtures/new_default_theme.json | 5347 ++- .../wagtailapps/base/fixtures/newsearchingsra.json | 4374 ++- .../wagtailapps/base/fixtures/osu.json | 2782 +- .../wagtailapps/base/fixtures/phasta.json | 4797 ++- .../wagtailapps/base/fixtures/physicell.json | 4820 ++- .../wagtailapps/base/fixtures/saverx.json | 3315 +- .../wagtailapps/base/fixtures/seagrid.json | 6809 ++-- .../wagtailapps/base/fixtures/searchingsra.json | 2389 +- .../wagtailapps/base/fixtures/simccs.json | 1737 +- .../wagtailapps/base/fixtures/simvascular.json | 2064 +- .../wagtailapps/base/fixtures/siu.json | 1094 +- .../wagtailapps/base/fixtures/smilesgateway.json | 34037 +++++++++---------- .../wagtailapps/base/fixtures/southdakota.json | 1541 +- .../wagtailapps/base/fixtures/tests/default.json | 322 +- airavata-django-portal/docs/admin/app_inputs.md | 50 +- airavata-django-portal/docs/admin/tusd.md | 10 +- .../docs/assets/js/clipboard.min.js | 551 +- airavata-django-portal/docs/cms.md | 209 +- .../docs/dev/custom_django_app.md | 64 +- .../docs/dev/custom_output_view_provider.md | 84 +- .../docs/dev/customization_howto.md | 4 +- .../docs/dev/developing_frontend.md | 6 +- airavata-django-portal/docs/dev/new_django_app.md | 54 +- .../docs/dev/queue_settings_calculator.md | 10 +- airavata-django-portal/docs/index.md | 1 - .../2026-04-11-resource-crud-gateway-settings.md | 1683 +- .../docs/plans/2026-04-11-sse-interactive-ssh.md | 443 +- ...-04-11-resource-crud-gateway-settings-design.md | 43 +- .../specs/2026-04-11-sse-interactive-ssh-design.md | 60 +- .../plans/2026-04-21-portal-modernization-plan.md | 85 +- .../2026-04-21-track-c-monorepo-tooling-plan.md | 1119 + .../2026-04-21-track-d-python-hygiene-plan.md | 153 +- .../2026-04-21-portal-modernization-design.md | 20 +- .../2026-04-21-track-c-monorepo-tooling-design.md | 488 + .../2026-04-21-track-d-python-hygiene-design.md | 46 +- .../docs/tutorial/custom_ui_tutorial.md | 135 +- airavata-django-portal/mkdocs.yml | 26 +- airavata-django-portal/package-lock.json | 4916 +++ airavata-django-portal/package.json | 11 +- .../cookiecutters/django-app/cookiecutter.json | 4 +- .../static/{{cookiecutter.project_slug}}/README.md | 4 +- .../{{cookiecutter.project_slug}}/home.html | 60 +- airavata-django-portal/tooling/README.md | 51 + airavata-django-portal/tooling/eslint.config.js | 89 + airavata-django-portal/tooling/package.json | 26 + airavata-django-portal/tooling/prettier.config.js | 9 + airavata-django-portal/tooling/tsconfig.base.json | 16 + airavata-django-portal/tooling/vite.config.js | 33 + airavata-django-portal/yarn.lock | 2328 -- 431 files changed, 83829 insertions(+), 71287 deletions(-)
