https://github.com/openneuroorg/openneuro
A free and open platform for analyzing and sharing neuroimaging data
https://github.com/openneuroorg/openneuro
bids datasets graphql neuroimaging neuroscience react
Last synced: 3 months ago
JSON representation
A free and open platform for analyzing and sharing neuroimaging data
- Host: GitHub
- URL: https://github.com/openneuroorg/openneuro
- Owner: OpenNeuroOrg
- License: mit
- Created: 2017-08-14T21:17:17.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2026-01-29T21:41:32.000Z (5 months ago)
- Last Synced: 2026-01-30T10:34:09.109Z (5 months ago)
- Topics: bids, datasets, graphql, neuroimaging, neuroscience, react
- Language: TypeScript
- Homepage: https://openneuro.org/
- Size: 83.2 MB
- Stars: 139
- Watchers: 7
- Forks: 43
- Open Issues: 188
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# [OpenNeuro](https://openneuro.org)
[](https://codecov.io/gh/OpenNeuroOrg/openneuro)
[](https://github.com/prettier/prettier)
## About
OpenNeuro is a free and open platform for analyzing and sharing neuroimaging data. It is based around the [Brain Imaging Data Structure specification](http://bids.neuroimaging.io/).
## Development setup
This project is managed with [Lerna](https://lerna.js.org/) and [Yarn](https://yarnpkg.com/). To get started, install Yarn and bootstrap the repo.
```shell
yarn install
```
You can run tests with `yarn test` at the top level of the project. For each package, `yarn test --watch` will interactively run the tests for changes since the last commit.
Before starting up the services, you will need to copy the example `.env.example` file to `.env` and `config.env.example` to `config.env`. Many of the values are optional, and most that aren't have default values included in their `.example` file. Required values below:
- `JWT_SECRET` in `config.env` must be set to a large random string.
- `PERSISTENT_DIR` in `.env` is an absolute path to a directory that will be used to store datasets. This should be a git-annex compatible filesystem and large enough to store some test datasets.
To setup Google as an authentication provider, [register a new client app](https://developers.google.com/identity/protocols/oauth2/javascript-implicit-flow) and set the following variables. For development use, you will create a new Google project with oauth credentials for a JavaScript client side app. "Authorized JavaScript Origins" is set to `http://localhost:9876` and "Authorized Redirect URIs" is set to `http://localhost:9876/crn/auth/google/callback` for a site accessible at `http://localhost:9876`.
```
# Ending in .apps.googleusercontent.com
GOOGLE_CLIENT_ID=
# 24 character secret string
GOOGLE_CLIENT_SECRET=
```
[podman-compose](https://github.com/containers/podman-compose) is used to run a local copy of all required services together.
#### macOS Development Setup
If you're working on macOS and encounter issues with file watching in Vite, use the following environment variables (in config.env):
```
CHOKIDAR_USEPOLLING=true
```
If you're working on macOS and encounter issues with elastic search, use the following environment variables (in config.env):
```
ES_JAVA_OPTS: -XX:UseSVE=0
CLI_JAVA_OPTS: -XX:UseSVE=0
```
```shell
# This will run podman-compose in the background (-d flag is --detach)
podman-compose up -d
```
For example, you can restart the server container with `podman-compose restart server` or view logs with `podman-compose logs -f --tail=10 server`.
## Major Components
- [OpenNeuro app](https://github.com/OpenNeuroOrg/openneuro/tree/master/packages/openneuro-app) - React frontend
- [OpenNeuro server](https://github.com/OpenNeuroOrg/openneuro/tree/master/packages/openneuro-server) - Node.js GraphQL API
- [OpenNeuro indexer](https://github.com/OpenNeuroOrg/openneuro/tree/master/packages/openneuro-indexer) - ElasticSearch indexer
- [OpenNeuro command line tools](https://github.com/OpenNeuroOrg/openneuro/tree/master/cli) - Deno command line tools for uploading and downloading datasets
- [DataLad service](https://github.com/OpenNeuroOrg/datalad-service) - [DataLad](http://datalad.org/) compatible dataset worker microservice
- [bids-validator](https://github.com/bids-standard/bids-validator) - BIDS validation library
JavaScript packages are published in the `@openneuro` npm namespace.
## OpenNeuro Command-line utility tool
OpenNeuro supports a [CLI tool](https://docs.openneuro.org/openneuro-packages-openneuro-cli-readme) based on [nodejs](https://nodejs.org/en/) for uploading and downloading OpenNeuro datasets.