evolver-ui
reference web app implementation for the evolver, an opensource bio reactor produced by fynchbio.com
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
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
Metadata Files
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
- from the
/evolver-ngrepo generate anopenapi.jsonfile and copy it into this, project's root directory.
shellscript
tox -e generate_openapi
- from the
/evolver-uidirectory 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
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
- Website: https://ai.jhu.edu/ssec/
- Repositories: 1
- Profile: https://github.com/ssec-jhu
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
Pull Request Labels
Dependencies
- actions/checkout v4 composite
- actions/setup-node v4 composite
- actions/upload-artifact v4 composite
- actions/checkout v4 composite
- actions/setup-node v4 composite
- actions/checkout v4 composite
- actions/setup-node v4 composite
- actions/upload-artifact v4 composite
- 1057 dependencies
- @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