evolver-ui

reference web app implementation for the evolver, an opensource bio reactor produced by fynchbio.com

https://github.com/ssec-jhu/evolver-ui

Science Score: 52.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
    Organization ssec-jhu has institutional domain (ai.jhu.edu)
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.5%) to scientific vocabulary
Last synced: 6 months ago · JSON representation ·

Repository

reference web app implementation for the evolver, an opensource bio reactor produced by fynchbio.com

Basic Info
  • Host: GitHub
  • Owner: ssec-jhu
  • License: bsd-3-clause
  • Language: TypeScript
  • Default Branch: main
  • Size: 1.28 MB
Statistics
  • Stars: 1
  • Watchers: 5
  • Forks: 0
  • Open Issues: 17
  • Releases: 0
Created over 1 year ago · Last pushed 9 months ago
Metadata Files
Readme License Citation

README.md

environment setup

Install NodeJS.

This app runs on NodeJS, we recommend using mise to manage the node version.

shellscript mise use node@lts

Install project dependencies

shellscript npm install

Generate the evolver-ng typescript client

  1. from the /evolver-ng repo generate an openapi.json file and copy it into this, project's root directory.

shellscript tox -e generate_openapi

  1. from the /evolver-ui directory run this command.

shellscript npm run bootstrap_evolver_ts_client

Development

Setup env variables

shellscript cp .env.example .env

Setup dev db

shellscript npx prisma migrate dev --name init

If you adapt the schema run this command again to generate migrations that will be applied to the prod db.

Run the dev server against the dev db

Run the dev server:

shellscript npm run dev

Deployment

This app can run on an evolver device (raspberry pi). It can also run persistently in the cloud or on a local machine in your lab. This app can connect to an unlimited number of evolver devices.

build the web app

sh npm run build

run the web app:

sh npm start

dependency documentation

database - used to store the devices you've connected to

sqlite - the prisma ORM handles database management (schema, migrations, etc...).

orm - to manage the db

Prisma ORM

framework - a reference implementation demonstrating the capabilities of the evolver's HTTP API.

Remix - a fullstack framework, it consists of a Node.js based server, tightly coupled to a react web app through the use of HTTP web standards and react hooks. React - a frontend framework Tailwind - a css styling framework DaisyUI - a component library for tailwind, that simplifies composing tailwind classnames by providing generic defaults.

testing

unit tests

sh npm run test

Vitest and react-testing-library are used for unit tests, if a system entity is pure (this term is generally analagous to idempotency) it is a good candidate for unit tests. For example a React component that is a pure function of it's parameters/props. Or remix loaders and actions that are a pure function of the parameters of the incoming request that they handle.

integration tests

sh npm run test:integ

Whenever a part of the system relies on network requests or complex user interactions, we consider it impure, in these cases, it has dependencies outside our control. For example network requests fail, or respond with unexpected data, while user interactions introduce cyclomatic complexity. To cover these cases we rely on MSW and puppeteer respectively to encapsulate and manage the complexity introduced by the network boundary and human interaction. Within the context of this app, remix routes are a good candidate for integration tests.

Having trouble with MSW? Refer to this example repo: https://github.com/mswjs/examples/blob/main/examples/with-remix/README.md

balancing unit and integration tests

https://github.com/remix-run/remix/discussions/5769#discussioncomment-5281163

e2e tests

in a production system at scale the entire evolver system, would have a simulated and tested as part of its deployment pipeline as close to production as possible. At this stage e2e tests could be run against real hardware. This is out of scope for current stage of research. e2e tests are not included in this software. That said, the front end integration tests could be run without MSW against a real evolver endpoint to achieve this whenever it becomes necessary.

Owner

  • Name: Scientific Software Engineering Center at JHU
  • Login: ssec-jhu
  • Kind: organization
  • Email: ssec@jhu.edu
  • Location: United States of America

Accelerating Software Development for Science Research

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software in your work, please cite it using the following metadata."
authors:
- family-names: "Maitland"
  given-names: "Iain"
  orcid: "https://orcid.org/0009-0008-3831-1927"
title: "evolver-ui"
version: 0.1.0
doi: "12532759"
date-released: 2024-08-05
url: "https://github.com/ssec-jhu/evolver-ui"

GitHub Events

Total
  • Issues event: 24
  • Watch event: 1
  • Delete event: 19
  • Issue comment event: 39
  • Push event: 102
  • Pull request review event: 99
  • Pull request review comment event: 70
  • Pull request event: 67
  • Create event: 37
Last Year
  • Issues event: 24
  • Watch event: 1
  • Delete event: 19
  • Issue comment event: 39
  • Push event: 102
  • Pull request review event: 99
  • Pull request review comment event: 70
  • Pull request event: 67
  • Create event: 37

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 15
  • Total pull requests: 25
  • Average time to close issues: about 1 month
  • Average time to close pull requests: 10 days
  • Total issue authors: 2
  • Total pull request authors: 2
  • Average comments per issue: 0.13
  • Average comments per pull request: 0.36
  • Merged pull requests: 14
  • Bot issues: 0
  • Bot pull requests: 11
Past Year
  • Issues: 15
  • Pull requests: 25
  • Average time to close issues: about 1 month
  • Average time to close pull requests: 10 days
  • Issue authors: 2
  • Pull request authors: 2
  • Average comments per issue: 0.13
  • Average comments per pull request: 0.36
  • Merged pull requests: 14
  • Bot issues: 0
  • Bot pull requests: 11
Top Authors
Issue Authors
  • imaitland (14)
  • ezirayw (4)
  • jamienoss (2)
  • dependabot[bot] (1)
Pull Request Authors
  • imaitland (19)
  • dependabot[bot] (18)
  • amitschang (3)
Top Labels
Issue Labels
enhancement (6) good first issue (2) p0-priority-high (1) dependencies (1) new feature (1)
Pull Request Labels
dependencies (18) javascript (9) new feature (1)

Dependencies

.github/workflows/integ.yml actions
  • actions/checkout v4 composite
  • actions/setup-node v4 composite
  • actions/upload-artifact v4 composite
.github/workflows/lint.yml actions
  • actions/checkout v4 composite
  • actions/setup-node v4 composite
.github/workflows/unit.yml actions
  • actions/checkout v4 composite
  • actions/setup-node v4 composite
  • actions/upload-artifact v4 composite
package-lock.json npm
  • 1057 dependencies
package.json npm
  • @playwright/test ^1.45.3 development
  • @remix-run/dev ^2.10.2 development
  • @remix-run/testing ^2.10.3 development
  • @tailwindcss/typography ^0.5.13 development
  • @testing-library/jest-dom ^6.4.8 development
  • @testing-library/react ^16.0.0 development
  • @types/node ^22.1.0 development
  • @types/react ^18.2.20 development
  • @types/react-dom ^18.2.7 development
  • @typescript-eslint/eslint-plugin ^6.7.4 development
  • @typescript-eslint/parser ^6.7.4 development
  • @vitejs/plugin-react ^4.3.1 development
  • @vitest/coverage-v8 ^2.0.5 development
  • @vitest/ui ^2.0.5 development
  • autoprefixer ^10.4.19 development
  • daisyui ^4.12.10 development
  • eslint ^8.38.0 development
  • eslint-config-prettier ^9.1.0 development
  • eslint-import-resolver-typescript ^3.6.1 development
  • eslint-plugin-import ^2.28.1 development
  • eslint-plugin-jsx-a11y ^6.7.1 development
  • eslint-plugin-prettier ^5.1.3 development
  • eslint-plugin-react ^7.33.2 development
  • eslint-plugin-react-hooks ^4.6.0 development
  • happy-dom ^14.12.3 development
  • jsdom ^24.1.1 development
  • msw ^2.3.4 development
  • playwright ^1.45.3 development
  • postcss ^8.4.38 development
  • prettier 3.3.2 development
  • tailwindcss ^3.4.4 development
  • typescript ^5.5.3 development
  • vite ^5.1.0 development
  • vite-tsconfig-paths ^4.2.1 development
  • vitest ^2.0.5 development
  • @conform-to/react ^1.1.5
  • @conform-to/zod ^1.1.5
  • @fontsource/b612 ^5.0.12
  • @fontsource/b612-mono ^5.0.19
  • @heroicons/react ^2.1.5
  • @hey-api/client-fetch ^0.1.10
  • @hey-api/openapi-ts ^0.49.0
  • @prisma/client ^5.16.2
  • @remix-run/node ^2.10.2
  • @remix-run/react ^2.10.2
  • @remix-run/serve ^2.10.2
  • ajv ^8.17.1
  • clsx ^2.1.1
  • isbot ^4.1.0
  • json-edit-react ^1.15.4
  • njv ^2.0.0
  • react ^18.2.0
  • react-dom ^18.2.0
  • remix-utils ^7.6.0
  • zod ^3.23.8