manuscripts-article-editor
This repository contains the editor package of Manuscripts app to be used in a react application.
Dependencies
Manuscripts is highly modular: it is composed out of a series of NPM published modules following a few different themes.
Data model
Data synchronisation
Editor components
Export
Reusable UI components
Datasets
Utilities
Installation
Run yarn install @manuscripts/article-editor
in your application.
Build (for production)
The variables listed in .env.example
must all be defined as environment variables in your project.
Run yarn build
to build the app to the dist
folder.
Deploy the files to S3 with scripts/deploy.sh
.
Running the client in development mode
cp .env.example .env
. The variables listed in .env.example
have appropriate default values for running in a mode where the backend API server is running locally (this is optional, and you can complete local development tasks in the absence of the backend services). See steps below under "Running the backend API in Docker" for steps to launch the API server locally.
- Run
docker volume create --name=yarn-cache
to create a yarn cache for the backend services that you will launch in the next step. This step is only needed once.
docker-compose up jupyter
to start the services needed for development.
yarn start
to start the app in development mode (using webpack-dev-server
).
- To avoid signing up an account, open
http://localhost:8080/developer
to create a dummy user profile. Now you're good to go.
Running the backend API in Docker
- Add any environment variables needed for the API server in
docker/server/.env
.
docker login registry.gitlab.com
to log in to GitLab’s Container Registry using your GitLab username and password (or a deploy token for read-only access to the registry images).
- Run
docker-compose pull
to pull the latest server Docker images.
- [first run] Initialize the backend services:
scripts/api/initialize.sh
. If running on Windows or MacOS, it may be necessary to increase the RAM allocated to Docker. (This can be done through Docker Desktop > Preferences > Resources > Advanced > Memory.)
- [subsequent runs] Start the backend services:
docker-compose up api
- Run
docker-compose up jupyter
to start the additional services.
- Open chrome://flags/#cookies-without-same-site-must-be-secure and set to Disabled.
- Run
yarn start
to start the frontend.
- Open Chrome, and enter
http://localhost:8080/signup
to create a user account. Confirmation emails generally won't be sent from a locally-running API, but you can ignore that message (see APP_SKIP_ACCOUNT_VERIFICATION in docker/server/defaults.env
)
- To stop the service, run
docker-compose down
. Add an optional -v
flag to delete the data volumes.
Running the Manuscripts stack in Kubernetes via Docker Desktop
- Make sure
kubectl
is using the appropriate context:
- Run
kubectl config current-context
to show the current context.
- Run
kubectl config get-contexts
to list the available contexts.
- Run
kubectl config set-context docker-desktop
to set the context.
- To build the client image, run
docker-compose build client
- To start the services, run
docker stack deploy --compose-file <(docker-compose config) manuscripts
- To stop the services, run
docker stack rm manuscripts
Testing
Unit tests
Run yarn test
to run the unit tests in Jest.
Running tests with Cypress
- Run
yarn run cypress:open
to launch the Cypress runner.
- From the Cypress runner, select an individual test to run or select
Run all specs
Development
See the manuscripts-frontend
wiki for more information.
Developing manuscripts-api
- If needed, initialize the backend services:
scripts/api/initialize.sh
- Start the other backend services in Docker:
docker-compose up sync-gateway jupyter
- Start the API:
scripts/api/start-local.sh
Developing @manuscripts/style-guide
- Clone
@manuscripts/style-guide
to a folder alongside this one, run yarn install
to install its dependencies, run yarn link
to make it available as a local dependency, then run yarn dev
in that folder to start building it.
- In this folder, run
yarn link @manuscripts/style-guide
to use the linked module as a local dependency.
Analysis
Run yarn stats
to generate a stats.json
file, then yarn analyze
to open webpack-bundle-analyzer
's visualization of the webpack bundle.