epiverse-connect / epiverse-search

MIT License
0 stars 0 forks source link

Work out communication between front-end and back-end #3

Closed Bisaloo closed 2 months ago

Bisaloo commented 7 months ago

To keep the architecture modular and not constrain too much the possibilities from either, it's likely we will have to implement an API in the back-end to communicate with the front-end.

Is there any specific early design considerations here impacting other pieces of the work?

chartgerink commented 6 months ago

My main considerations at this time:

For front-end purposes, keeping API calls contained to one call per query is incredibly helpful (you wouldn't believe how nested some APIs get!).

Example

Front-end calls could look like api.epiverse.org/query="how to estimate outbreak probability of dengue in colombia in next three months"&filter="epiverse" (versioned could look like api.epiverse.org/v1/query[...])

This could provide the response:

{
  query: "how to estimate outbreak probability of dengue in colombia in next three months",
  filter: "epiverse",
  response: {
    text: "In order to estimate the outbreak probability of dengue in Colombia in the next three months, you can use the following Epiverse packages"
    results: [
      {
        package: "epidemics",
        documentation: "https://epiverse-trace.github.io/epidemics",
        source: "https://github.com/epiverse-trace/epidemics",
        example: "vignette URL"
        relevance: 0.987
      },
      {
        package: "finalsize",
        documentation: "https://epiverse-trace.github.io/finalsize",
        source: "https://github.com/epiverse-trace/finalsize",
        example: "vignette URL"
        relevance: 0.643
      }
    ]
  }
}

This is only a working example and does not necessarily reflect well defined needs yet.