Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
92 commits
Select commit Hold shift + click to select a range
3cafd6d
poc auth to osbv2dev
ddelpiano Mar 19, 2026
00f0919
Merge branch 'develop' of https://github.com/metacell/idp-arc into fe…
ddelpiano Mar 19, 2026
faae932
disabling check-sso
ddelpiano Mar 19, 2026
4c1d1f1
remove auth from keycloak 17+
ddelpiano Mar 19, 2026
f90918f
fetch workspaces
ddelpiano Mar 19, 2026
325354b
fetch workspaces with credentials
ddelpiano Mar 19, 2026
56d5a4b
fixing token used for auth
ddelpiano Mar 26, 2026
5a36007
adding clientscopes required
ddelpiano Mar 26, 2026
7c678ba
upload poc in progress
ddelpiano Mar 28, 2026
dff7c25
adding e2e and gh actions
ddelpiano Mar 30, 2026
c43c017
add support for dev container
ddelpiano Apr 1, 2026
00ee55f
devcontainer configuration
ddelpiano Apr 1, 2026
9628fa1
Add Dependency Injection
Salam-Dalloul Apr 2, 2026
152c776
Merge pull request #4 from MetaCell/feature/auth
ddelpiano Apr 3, 2026
023334e
Apply suggestion from @Copilot
ddelpiano Apr 3, 2026
894981c
IDP-34 Integrate i18-n into the codebase
Salam-Dalloul Apr 10, 2026
be2a28f
Merge branch 'develop' into dependency-injection
Salam-Dalloul Apr 21, 2026
adefce6
Implement scaffolding for mock services
Salam-Dalloul Apr 21, 2026
6129001
Merge branch 'dependency-injection' into feature/IDP-34
Salam-Dalloul Apr 21, 2026
29a7227
add general themeing
Salam-Dalloul Apr 22, 2026
420b925
Update applications/idp-arc/frontend/src/infra/jupyterApiClient.ts
ddelpiano Apr 22, 2026
6bf7715
Update applications/idp-arc/frontend/src/App.tsx
ddelpiano Apr 22, 2026
c16169b
Update applications/idp-arc/frontend/src/App.tsx
ddelpiano Apr 22, 2026
c6e70e6
Merge pull request #5 from MetaCell/dependency-injection
ddelpiano Apr 22, 2026
205426a
Merge branch 'develop' into feature/IDP-34
Salam-Dalloul Apr 22, 2026
78a8dd0
Merge pull request #6 from MetaCell/feature/IDP-34
Salam-Dalloul Apr 22, 2026
09ea73d
Merge pull request #7 from MetaCell/dependency-injection
Salam-Dalloul Apr 22, 2026
bcdfee8
Merge branch 'develop' into feature/IDP-37
Salam-Dalloul Apr 22, 2026
d27a861
#37 Implement consortium landing page
Salam-Dalloul Apr 23, 2026
8e26568
update general theming
Salam-Dalloul Apr 23, 2026
85e2a7e
add logged in user ui
Salam-Dalloul Apr 23, 2026
37f968d
IDP-38 Implement about page
Salam-Dalloul Apr 24, 2026
fb88735
IDP-39 Implement protocols page
Salam-Dalloul Apr 27, 2026
162173f
Merge pull request #8 from MetaCell/feature/IDP-37
ddelpiano Apr 28, 2026
f1c37c8
IDP-39 Implement protocols page
Salam-Dalloul Apr 28, 2026
19dedec
Merge remote-tracking branch 'origin/feature/IDP-39' into develop
jrmartin Apr 29, 2026
52ed759
move protocols to a json file
Salam-Dalloul Apr 30, 2026
caafc6e
#IDP-40 : add Vite proxies and fetch intercept to unblock local dev a…
jrmartin May 4, 2026
e5c5c43
#IDP-40 : remove fetch intercept for Keycloak in development environment
jrmartin May 4, 2026
3d843bc
#IDP-40 Implement popup login for Keycloak and enhance user feedback …
jrmartin May 4, 2026
6c660fc
Merge pull request #9 from MetaCell/feature/IDP-39
ddelpiano May 4, 2026
3b484cc
Merge remote-tracking branch 'origin/develop' into feature/IDP-40
jrmartin May 4, 2026
cf00170
#IDP-40 Remove mock container plugin and related configurations from …
jrmartin May 5, 2026
367947c
#IDP-41 Add DataUploadDialog component and integrate with PageLayout …
jrmartin May 6, 2026
cdbc655
Merge pull request #10 from MetaCell/feature/IDP-40
ddelpiano May 8, 2026
1ad9004
Merge remote-tracking branch 'origin/develop' into feature/IDP-41
jrmartin May 8, 2026
2ebf3bf
#IDP-41 Update JupyterApiClient to include hubBase parameter and adju…
jrmartin May 8, 2026
f4565da
#IDP-41 Refactor JupyterApiClient to remove hubBase parameter and upd…
jrmartin May 8, 2026
345e0dc
Enhance Nginx configuration for proxy redirects to use explicit HTTPS…
jrmartin May 8, 2026
d403dd7
Enhance Nginx configuration to rewrite cookie paths for auth cookies;…
jrmartin May 12, 2026
66e4e9c
Enhance Nginx configuration to rewrite cookie paths for session cooki…
jrmartin May 12, 2026
04a51f8
Refactor JupyterApiClient and related interfaces to support async tri…
jrmartin May 12, 2026
8b29242
Refactor DataUploadDialog to improve workspace ID handling; ensure wo…
jrmartin May 12, 2026
99de9df
Improve error handling and logging in JupyterApiClient; enhance fetch…
jrmartin May 12, 2026
6caa2f0
Refactor JupyterApiClient to streamline spawn process; remove unused …
jrmartin May 13, 2026
7f94b87
#IDP-41 - Enhance JupyterApiClient to include base domain for cookie …
jrmartin May 13, 2026
29e4112
#IDP-41 : Enhance JupyterApiClient to include X-XSRFToken in headers …
jrmartin May 13, 2026
0443658
#IDP-41 - Enhance JupyterApiClient to store and utilize _xsrf cookie …
jrmartin May 13, 2026
01dcc0f
Refactor Nginx configuration to improve _xsrf cookie handling; ensure…
jrmartin May 13, 2026
28db906
Refactor Nginx cookie path handling to ensure session cookies are sen…
jrmartin May 14, 2026
914df01
Add diagnostic logging to uploadFile method for JupyterLab reachabili…
jrmartin May 14, 2026
25cdc2d
fixed file upload
ddelpiano Jun 30, 2026
8693647
fixing linter issues
ddelpiano Jun 30, 2026
0a2f75e
Merge pull request #12 from MetaCell/feature/IDP-41b
ddelpiano Jun 30, 2026
88efdf4
IDP-43: ignore local Claude config and frontend env files
D-GopalKrishna Sep 16, 2026
9828c95
IDP-43: add DANDI multipart upload client, hashing and use-case
D-GopalKrishna Sep 16, 2026
cf73fc3
IDP-43: switch uploads to DANDI, drop the JupyterLab Contents API path
D-GopalKrishna Sep 16, 2026
c0dff77
IDP-43: restore named workspace creation, trim comments to the non-ob…
D-GopalKrishna Sep 16, 2026
1e34c59
fixing silent sso and protocols json
ddelpiano Sep 16, 2026
84c1d75
Merge pull request #13 from MetaCell/feature/IDP-43
ddelpiano Sep 17, 2026
5973927
new content
ddelpiano Sep 29, 2026
dcd3237
updating protocols
ddelpiano Sep 30, 2026
5d29d75
updating again
ddelpiano Sep 30, 2026
61c1374
new content
ddelpiano Oct 1, 2026
3eb76e5
Merge pull request #14 from MetaCell/feat/content_update
ddelpiano Oct 1, 2026
d4b0ffc
fixing subdomain
ddelpiano Oct 1, 2026
c7b2cca
updating cosmetics;
ddelpiano Oct 1, 2026
4496cf2
IDP-43: upload and public-bucket adapter
D-GopalKrishna Oct 2, 2026
ec97e39
IDP-43: run a protocol end to end from the upload dialog
D-GopalKrishna Oct 5, 2026
75ddd86
IDP-43: check the notebooks arrived; simplify the run checklist
D-GopalKrishna Oct 5, 2026
fe47f6b
IDP-43: explicit notebooks, outputs and setup in the run request
D-GopalKrishna Oct 5, 2026
e3f42fd
cosmetic cleanup
ddelpiano Oct 5, 2026
31b68c7
IDP-43: run folder layout and explicit inputs/outputs for OSB
D-GopalKrishna Oct 5, 2026
6b1fef5
IDP-43: follow the run through (resources in) GET /workspace/{id}, dr…
D-GopalKrishna Oct 5, 2026
3c85e03
Merge branch 'develop' into feature/IDP-41b
D-GopalKrishna Oct 5, 2026
4c0f6fe
IDP-43: Tell succeeded from failed runs, and require a file to upload
D-GopalKrishna Oct 5, 2026
48844f0
IDP-43: fix long, overlapping and expired runs in the upload dialog
D-GopalKrishna Oct 5, 2026
89c559a
IDP-43 - Add VITE_UPLOAD_BUCKET_URL as build argument in Dockerfile a…
D-GopalKrishna Oct 6, 2026
22bd587
Merge pull request #15 from MetaCell/feature/IDP-41b
ddelpiano Oct 6, 2026
a1ba32f
fixing login, adding templates download
ddelpiano Oct 6, 2026
ab2fe7b
IDP-41b: pass an optional notebook image to OSB's run endpoint
D-GopalKrishna Oct 8, 2026
9deb5c8
Merge pull request #16 from MetaCell/feature/IDP-41b-image-param
D-GopalKrishna Oct 8, 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
21 changes: 6 additions & 15 deletions .github/workflows/run-eslint.yaml
Original file line number Diff line number Diff line change
@@ -1,36 +1,27 @@
name: Run ESLint

on:
push:
branches:
- main
- development
pull_request:
branches:
- main
- development

jobs:
eslint:
runs-on: ubuntu-latest

steps:
# Step 1: Checkout the repository
- name: Checkout code
uses: actions/checkout@v3
uses: actions/checkout@v4

# Step 2: Set up Node.js
- name: Set up Node.js
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: '20' # Adjust the Node.js version as needed
node-version: '20'
cache: 'yarn'
cache-dependency-path: applications/idp-arc/frontend/yarn.lock

# Step 3: Install dependencies using Yarn
- name: Install dependencies
working-directory: applications/idp-arc/frontend
run: yarn install
run: yarn install --frozen-lockfile

# Step 4: Run ESLint
- name: Run ESLint
working-directory: applications/idp-arc/frontend
run: yarn lint
39 changes: 39 additions & 0 deletions .github/workflows/ui-tests.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: UI Tests (Playwright)

on:
pull_request:

jobs:
e2e:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'yarn'
cache-dependency-path: applications/idp-arc/frontend/yarn.lock

- name: Install dependencies
working-directory: applications/idp-arc/frontend
run: yarn install --frozen-lockfile

- name: Install Playwright browsers
working-directory: applications/idp-arc/frontend
run: npx playwright install --with-deps chromium

- name: Run Playwright tests
working-directory: applications/idp-arc/frontend
run: yarn test:e2e

- name: Upload Playwright report
uses: actions/upload-artifact@v4
if: ${{ !cancelled() }}
with:
name: playwright-report
path: applications/idp-arc/frontend/playwright-report/
retention-days: 14
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
applications/idp-arc/frontend/node_modules
applications/idp-arc/frontend/dist
applications/idp-arc/frontend/build
applications/idp-arc/frontend/test-results
applications/idp-arc/frontend/playwright-report
cloud-harness
deployment/helm/
skaffold.yaml
.vscode
.overrides
.DS_Store
.DS_Store
CLAUDE.md
CLAUDE.local.md
8 changes: 8 additions & 0 deletions .vite/deps/_metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"hash": "c7d84c57",
"configHash": "56b22b6d",
"lockfileHash": "e3b0c442",
"browserHash": "605d0283",
"optimized": {},
"chunks": {}
}
3 changes: 3 additions & 0 deletions .vite/deps/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"type": "module"
}
10 changes: 10 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,16 @@ Preview production build locally:
yarn preview
```

Unit tests (no browser, no backend):

```bash
yarn test:unit
```

Uploads (Scenario 1 of the MAABCD–OSB integration) go from the browser straight to a public bucket
open for anonymous writes, named by `VITE_UPLOAD_BUCKET_URL` (e.g. `https://storage.googleapis.com/maabcd`),
as `uploads/<protocolId>/<userSub>/<uploadId>/<filename>`. The bucket's CORS must allow PUT from this app's origin.

---

## Docker (Local Build + Run)
Expand Down
3 changes: 3 additions & 0 deletions applications/idp-arc/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ COPY frontend/package.json ./
COPY frontend/yarn.lock ./
RUN yarn install --frozen-lockfile
COPY frontend/ ./
# Baked into the bundle by Vite at build time; the Codefresh pipeline passes it as a build argument.
ARG VITE_UPLOAD_BUCKET_URL
ENV VITE_UPLOAD_BUCKET_URL=${VITE_UPLOAD_BUCKET_URL}
RUN yarn build

FROM nginxinc/nginx-unprivileged:stable-alpine
Expand Down
2 changes: 1 addition & 1 deletion applications/idp-arc/deploy/values-dev.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
harness:
subdomain: idp-arc
subdomain: www
secured: false

service:
Expand Down
2 changes: 1 addition & 1 deletion applications/idp-arc/deploy/values.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
harness:
subdomain: idp-arc
subdomain: www
secured: false

service:
Expand Down
49 changes: 49 additions & 0 deletions applications/idp-arc/frontend/.devcontainer/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# Dev Container Configuration

This directory contains the configuration for running the frontend application in a VS Code Dev Container.

## Features

- **Node.js LTS**: Pre-configured with the latest LTS version of Node.js
- **Yarn**: Yarn package manager pre-installed
- **Playwright**: E2E testing environment with browser dependencies
- **VS Code Extensions**: Essential extensions for React/TypeScript development
- **Auto-start**: Development server automatically starts when container launches
- **Port Forwarding**: Vite dev server (port 5173) automatically forwarded

## Usage

1. Open this folder in VS Code
2. When prompted, click "Reopen in Container"
3. Wait for the container to build and dependencies to install
4. The dev server will start automatically on port 5173

## Manual Commands

If you need to run commands manually:

```bash
# Install dependencies
yarn install

# Start dev server
yarn dev

# Run linting
yarn lint

# Run e2e tests
yarn test:e2e

# Run e2e tests in UI mode
yarn test:e2e:ui
```

## Customization

You can modify `.devcontainer/devcontainer.json` to:
- Add more VS Code extensions
- Change Node.js version
- Add additional features
- Modify port forwarding
- Customize startup commands
45 changes: 45 additions & 0 deletions applications/idp-arc/frontend/.devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
{
"name": "IDP ARC Frontend Dev Container",
"image": "mcr.microsoft.com/devcontainers/typescript-node:1-22-bookworm",

"features": {
"ghcr.io/devcontainers/features/node:1": {
"nodeGypDependencies": true,
"version": "lts"
}
},

"customizations": {
"vscode": {
"extensions": [
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"ms-playwright.playwright",
"bradlc.vscode-tailwindcss",
"dsznajder.es7-react-js-snippets",
"ms-vscode.vscode-typescript-next"
],
"settings": {
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.codeActionsOnSave": {
"source.fixAll.eslint": "explicit"
},
"typescript.tsdk": "node_modules/typescript/lib"
}
}
},

"forwardPorts": [5173],

"portsAttributes": {
"5173": {
"label": "Vite Dev Server",
"onAutoForward": "notify"
}
},

"postCreateCommand": "yarn install && npx playwright install --with-deps",

"remoteUser": "node"
}
5 changes: 5 additions & 0 deletions applications/idp-arc/frontend/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
.env.*

# Local dev TLS certs (yarn dev over HTTPS); never committed.
.certs/
*.pem
12 changes: 12 additions & 0 deletions applications/idp-arc/frontend/e2e/app.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { test, expect } from '@playwright/test'

test('page has correct title', async ({ page }) => {
await page.goto('/')
await expect(page).toHaveTitle('MAABCD')
})

test('root element is rendered', async ({ page }) => {
await page.goto('/')
const root = page.locator('#root')
await expect(root).toBeAttached()
})
3 changes: 1 addition & 2 deletions applications/idp-arc/frontend/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,8 @@
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>idp-arc</title>
<title>MAABCD</title>
</head>
<body>
<div id="root"></div>
Expand Down
Loading
Loading