evolver-ui
Science Score: 44.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
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (11.3%) to scientific vocabulary
Repository
Basic Info
- Host: GitHub
- Owner: imaitland
- License: bsd-3-clause
- Language: TypeScript
- Default Branch: main
- Size: 1.39 MB
Statistics
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
- 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
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
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: iain maitland
- Login: imaitland
- Kind: user
- Company: @AWS
- Website: ÿo.com
- Twitter: iain_maitland
- Repositories: 1
- Profile: https://github.com/imaitland
/ /\ / /\/
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
- Push event: 3
- Create event: 10
Last Year
- Push event: 3
- Create event: 10
Dependencies
- 1009 dependencies
- @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/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
- 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
- msw ^2.3.4 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.4 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
- close-with-grace ^1.3.0
- 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