Skip to content
Chris Hartgerink edited this page Jun 20, 2022 · 22 revisions

Welcome to the ResearchEquals.com wiki!

We are still figuring out the structure, so in order to prevent making too many pages it's going to start out right here until we figure out what pages are needed.

Codespaces

Codespaces are virtual development environments that can be accessed remotely. All secrets (like database URL, API tokens) are stored remotely as well, which means you need to do less setup work. 😊 Moreover, you can access the interactive development environment from your VSCode locally as well as on the browser, meaning you can work in virtually any way you'd like.

We make codespaces available to our maintainers as a perk. To be able to access codespaces after becoming a maintainer, the following things need to be completed:

  • Maintainer is a member of the @libscie organization
  • Maintainer is granted access privileges to codespaces

Please note the following quirks while using codespaces:

  • Your environment times out after 60 minutes of inactivity
  • Codespaces are paid for by the hour - we have a spending limit to prevent unhappy accidents

If any questions come up, feel free to discuss this in the Discord channel. Nothing is set in stone, a lot of things have their reasons (see Chesterton's fence), and things change. So if the spending limit needs to be updated, timeouts need to be adjusted, raise it and we can revisit the thing.

Dependencies

You can find the latest on dependencies involved in this project below. We separate this just like the package.json, based on main dependencies and developer dependencies (devDependencies).

Dependency upgrades are managed using dependabot, so pull requests will come in on a regular basis. Use the lists below as a starting point if something doesn't make sense 😊

🟥 🚧 This list is a work in progress at the moment

Main dependencies

@algolia/autocomplete-js

@carbon/icons-react

@faker-js/faker

@floating-ui/dom

@headlessui/react

@prisma/client

@react-pdf-viewer/core

@stripe/stripe-js

Candidate for deletion - unclear what functionality it serves over stripe

@tailwindcss/forms

@tailwindcss/line-clamp

@uploadcare/react-widget

algoliasearch

autoprefixer

axios

Used to send CrossRef XML data in a PUT request.

blitz

concurrently

dagre

eslint

Used to lint code.

Candidate for moving to devDependencies.

filesize

Used to render readable filesizes in the interface.

form-data

formik

husky

This is a candidate for moving to devDependencies potentially.

markdown-it

moment

passport-orcid

pdfjs-dist

Needed for @react-pdf-viewer/core to function.

When upgrading, please ensure the hardcoded links to pdfjs-dist are update accordingly. For example:

<Worker workerUrl="https://unpkg.com/[email protected]/build/pdf.worker.min.js">

postcss

postmark

prisma

quirrel

Used to run periodic jobs.

Before being acquired, we ran this through Quirrel.dev itself - now we host our own instance over at Railway.

react

Used to deal with consent for optional cookies.

react-dom

react-flow-renderer

react-helmet

react-hot-toast

react-instantsearch-dom

Candidate for deletion - unclear what function it fulfills (but deletion needs to be tested).

react-markdown

react-media-hook

react-syntax-highlighter

react-tooltip

react-xarrows

recharts

rehype-katex

remark-gfm

remark-math

stripe

Used for payment integrations.

Cannot be tested with automated deployments, because this needs Stripe webhooks to be active. Because Heroku deployment apps have a priori not known URLs, we do not have a priori accepted webhooks.

To run a test webhook locally you need to run (install stripe-cli first):

stripe listen --forward-to localhost:3000/api/stripe_webhook

tailwindcss

typescript

xml-js

zod

Developer dependencies

@types/react

lint-staged

prettier

prettier-plugin-prisma

prettier-plugin-tailwindcss

pretty-quick

Deployment

We maintain a staged deployment process for quality assurance. Production

Production

ResearchEquals is deployed on a continuous basis using Flightcontrol.

Testing

Clone this wiki locally