Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
ae93fc6
grpc client codegen from protobuf
unkcpz Mar 26, 2026
d2e299b
Coordinator/dataplayer impl
unkcpz Mar 26, 2026
d1dc974
file and folder list in view page
unkcpz Mar 27, 2026
5a29fd5
Remove dispatcher run page impl
unkcpz Mar 27, 2026
ee03232
Move all grpc client call to server.ts
unkcpz Mar 27, 2026
c36bcec
grpc clients as singletons for performance
unkcpz Mar 27, 2026
34ede2a
eslint config for auto formatting
unkcpz Mar 28, 2026
728c177
sse like task update
unkcpz Mar 28, 2026
99fafd0
keep the old run page and use grpc client to re-waven one
unkcpz Mar 30, 2026
099fc90
filemapping to the selected tool
unkcpz Mar 31, 2026
66bf6cb
dataplayer launch tool feat
unkcpz Mar 31, 2026
b26854d
Add req-packager as submodule for protobuf sync
unkcpz Mar 31, 2026
ccf9eaf
refact and readme on comm data flow
unkcpz Mar 31, 2026
f8cf013
submodule: coordinator add health check
unkcpz Apr 1, 2026
0fa6268
remove proto/service.proto
unkcpz Apr 1, 2026
b8de360
dettach the mocking of tool from matchmaker
unkcpz Apr 1, 2026
c177f69
combine file view and vre view
unkcpz Apr 2, 2026
47f3c17
column layout of file panel and vre panal
unkcpz Apr 2, 2026
d8121fd
coordinator improvement from/into conversion
unkcpz Apr 3, 2026
a233791
Update the wording
unkcpz Apr 9, 2026
937212f
real tool registry service in use
unkcpz Apr 9, 2026
a51e4f8
Search tool by text
unkcpz Apr 9, 2026
580b9e1
match tools by files
unkcpz Apr 14, 2026
774c981
Type shared in the boundary of json payload transfering to avoid mism…
unkcpz Apr 14, 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
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule "req-packager"]
path = req-packager
url = https://github.com/EOSC-Data-Commons/req-packager.git
44 changes: 44 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,50 @@ docker run -p 5173:80 ghcr.io/eosc-data-commons/matchmaker-frontend:latest
>
> If running backend and frontend in separate containers, you may need to adjust CORS or network settings for them to communicate.

## Coordinator server

The matchmaker talk to backend services such as dataplayer, tool registry and file fetcher through the coordinator server.
The messages in between follow the same protobuf as the contract.
Matchmaker implement the client side of grpc in typescript by `grpc-js`.
To synchronous the protobuf with the coordinator code base so to avaid contract out of sync in the local development, the coordinator code base (called `req-packager` for historical reason) is set as a submodule in the repo.

For developer, clone the repo by:

```console
git clone --recurse-submodules https://github.com/EOSC-Data-Commons/matchmaker.git
```

If you already cloned the project and forgot `--recurse-submodules`, you can combine the `git submodule init` and `git submodule update` steps by running `git submodule update --init`.
To also initialize, fetch and checkout any nested submodules, you can use the foolproof `git submodule update --init --recursive`.

Check https://git-scm.com/book/en/v2/Git-Tools-Submodules for more information for submodule management.

### grpc codegen

Generate the typescript code that whic grpc related types and functions by:

```console
npx protoc \
--plugin=./node_modules/.bin/protoc-gen-ts_proto \
--ts_proto_out=./src/lib/server/generated \
--ts_proto_opt=outputServices=grpc-js,esModuleInterop=true,env=node,useOptionals=messages \
--proto_path=./req-packager/proto \
./req-packager/proto/coordinator.proto
```

This will generate a `./src/generated/coordinator.ts` file contains all types to be implemented for client.

### data flow

UI frontend `pages/FooPage.tsx` -\- `lib/coordinatorApi.ts` (implement wrapper of request call of `/api/bar...`)

<---->

UI server `server.ts` -\- `lib/server/grpcClient.ts` (grpc client run on the UI server talk to grpc server deployed by req-packager).

<--HTTP/2-->

coordinator server run as a binary (as grpc server) which hide the backend services from UI.

## How to Search

Expand Down
10 changes: 10 additions & 0 deletions eslint.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,15 @@ import tseslint from 'typescript-eslint'
export default tseslint.config(
{ignores: ['dist', 'build', '.react-router']},
{
languageOptions: {
parser: '@typescript-eslint/parser',
parserOptions: {
ecmaVersion: 2020,
sourceType: 'module',
ecmaFeatures: { jsx: true },
},
globals: globals.browser,
},
extends: [js.configs.recommended, ...tseslint.configs.recommended],
files: ['**/*.{ts,tsx}'],
languageOptions: {
Expand All @@ -19,6 +28,7 @@ export default tseslint.config(
},
rules: {
...reactHooks.configs.recommended.rules,
"indent": ["warn", 4],
'react-refresh/only-export-components': [
'warn',
{ allowConstantExport: true },
Expand Down
Loading
Loading