Skip to content

Commit

Permalink
Updated README and added image, CONTRIBUTING, and CODE_OF_CONDUCT
Browse files Browse the repository at this point in the history
  • Loading branch information
jdpigeon committed Feb 2, 2019
1 parent 1899dd4 commit 15bd06f
Show file tree
Hide file tree
Showing 5 changed files with 161 additions and 79 deletions.
Binary file added BrainWaves_Home.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
69 changes: 69 additions & 0 deletions CODE_OF_CONDUCT.MD
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# BrainWaves Code of Conduct

## Purpose

It is our hope that any one is able to contribute to BrainWaves regardless of their background. Thus, we hope to provide a safe, welcoming, and warmly geeky environment for everybody, regardless of gender, sexual orientation, ability, ethnicity, socioeconomic status, and religion (or lack thereof).

## Our Standards

Examples of behavior that contributes to creating a positive environment
include:

* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members

Examples of unacceptable behavior by participants include:

* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting

## Our Responsibilities

Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.

Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.

## Scope

This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at [INSERT EMAIL ADDRESS]. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.

Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at [http://contributor-covenant.org/version/1/4][version]

[homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/
25 changes: 25 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Contributing

:tada::clinking_glasses: First off, thanks for taking the time to contribute! :tada::clinking_glasses:

Contributions are always welcome, no matter how small.

The following is a small set of guidelines for how to contribute to the project

## Where to start

### Code of Conduct
This project adheres to the Contributor Covenant [Code of Conduct](CODE_OF_CONDUCT.md).
By participating you are expected to adhere to these expectations. Please report unacceptable behaviour to [[email protected]](mailto:[email protected])

### Contributing on Github

If you're new to Git and want to learn how to fork this repo, make your own additions, and include those additions in the master version of this project, check out this [great tutorial](http://blog.davidecoppola.com/2016/11/howto-contribute-to-open-source-project-on-github/).

## How can I contribute?

If you find a bug, or have a suggestion on how to improve the project, just fill out a Github issue!

If you're interested in using BrainWaves as a basis for your own work to streamline EEG experimentation or psychological data collection, we'd love to hear from you. Send an email to [[email protected]](mailto:[email protected]) or create an issue and we'll be in touch.

All project management for BrainWaves occurs through issues on Github (via Zenhub). If you want to see what we need help with, or what is on our roadmap, check out the issues on this repository.
Empty file added OVERVIEW.md
Empty file.
146 changes: 67 additions & 79 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,61 @@
An easy-to-use platform for EEG experimentation in the classroom
</p>

## Features

- Design, run, and analyze an experiment using real EEG data all in one desktop
app
- Investigate visual event-related brain waves (ERPs)
- Supports Emotiv Epoc+ and Muse devices

## Screenshots

<img src="BrainWaves_Home.png" width="600">

## Prerequisites

### All Platforms
BrainWaves is an Electron app that can be installed natively on your system. However, because it makes use of the [MNE Python](https://martinos.org/mne/stable/index.html) library to perform EEG analysis, it is necessary to set up an appropriate Python environment to be able to analyze collected experimental results.

### Environment Setup

BrainWaves needs an Anaconda environment called "brainwaves" with the right
dependencies to run its analysis.

1. Download and install Anaconda for Python 3. We recommend using the
[Miniconda installer for Python 3.6 available from this page](https://conda.io/miniconda.html)

2. Download the BrainWaves
[environment file](https://github.com/makebrainwaves/BrainWaves/releases/download/v0.1.0/environment.yml)
or grab it by cloning this repository

_Note: you may need to install Microsoft Visual C++ Build Tools to run this
following command on Windows_

3. Open Anaconda prompt (or terminal on Linux and OSX) in the directory where
the environment file is located and run `conda env create -f environment.yml`

4. If the environment is created successfully, run the following command to create a new jupyter kernel that uses this environment:
`python -m ipykernel install --user --name brainwaves --display-name "brainwaves"`


- node version >= 7 and npm version >= 4
- Anaconda (Python 3) with an environment named 'brainwaves' containing dependencies in `environment.yml`. See [Conda Environment Setup](https://github.com/makebrainwaves/BrainWaves#conda-environment-setup) for instructions
## Download

- Windows:
[click here](https://github.com/makebrainwaves/BrainWaves/releases/download/v0.7.5/BrainWaves.Setup.0.7.5.exe)
- MacOS: coming soon
- Linux (only supports Muse):
[click here](https://github.com/makebrainwaves/BrainWaves/releases/download/v0.7.5/BrainWaves_0.7.4_amd64.deb)


## Installing from Source (for developers)

- Make sure you have node version >= 7, npm version >= 4 and have followed the [Environment Setup](https://github.com/makebrainwaves/BrainWaves#environment-setup) instructions

### OS X

- may need to update your `.bash_profile` to include the path for your [compiler](https://github.com/sandeepmistry/node-xpc-connection/issues/2) (nothing terribly scary).
- may need to update your `.bash_profile` to include the path for your
[compiler](https://github.com/sandeepmistry/node-xpc-connection/issues/2)
(nothing terribly scary).
1. Find it's location
```bash
which gcc
Expand All @@ -28,9 +73,6 @@

- [Visual C++ Build Tools](https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=BuildTools&rel=15)

## Installing from Source

- **If you have installation or compilation issues with this project, please see [the boilerplate's debugging guide](https://github.com/chentsulin/electron-react-boilerplate/issues/400)**

1. First, clone the repo via git:

Expand All @@ -45,45 +87,28 @@ $ cd BrainWaves
$ npm install
```

3. If using Emotiv, insert your Emotiv account's credentials into the file `keys.js`
3. If using Emotiv, insert your Emotiv account's credentials into the file
`keys.js`

### Run

Start the app in the `dev` environment. This starts the renderer process in [**hot-module-replacement**](https://webpack.js.org/guides/hmr-react/) mode and starts a webpack dev server that sends hot updates to the renderer process:
Start the app in the `dev` environment. This starts the renderer process in
[**hot-module-replacement**](https://webpack.js.org/guides/hmr-react/) mode and
starts a webpack dev server that sends hot updates to the renderer process:

```bash
$ npm run dev
```

Alternatively, you can run the renderer and main processes separately. This way, you can restart one process without waiting for the other. Run these two commands **simultaneously** in different console tabs:
Alternatively, you can run the renderer and main processes separately. This way,
you can restart one process without waiting for the other. Run these two
commands **simultaneously** in different console tabs:

```bash
$ npm run start-renderer-dev
$ npm run start-main-dev
```

## Installing from Executable

1. Download and install the executable from this repository's [releases](https://github.com/makebrainwaves/BrainWaves/releases)

2. Before running the app, follow the Conda Environmemt Setup instructions

## Conda Environment Setup

BrainWaves needs an Anaconda environment called "brainwaves" with the right dependencies to run its analysis.

1. Download and install Anaconda for Python 3. We recommend using the [Miniconda installer for Python 3.6 available from this page](https://conda.io/miniconda.html)

2. Download the BrainWaves [environment file](https://github.com/makebrainwaves/BrainWaves/releases/download/v0.1.0/environment.yml) or grab it by cloning this repository

*Note: you may need to install Microsoft Visual C++ Build Tools to run this following command on Windows*

3. Open Anaconda prompt (or terminal on Linux and OSX) in the directory where the environment file is located and run `conda env create -f environment.yml`

4. Verify that the environment has been created with the necessary dependencies by running `conda activate brainwaves` (or `source activate brainwaves` on Linux and OSX) and then `mne`

5. If the brainwaves environment exists and prints command options for the mne library, then set up a new jupyter kernel to use this environment: `python -m ipykernel install --user --name brainwaves --display-name "brainwaves"`

## Packaging

To package apps for the local platform:
Expand All @@ -94,7 +119,9 @@ $ npm run package

To package apps for all platforms:

First, refer to [Multi Platform Build](https://www.electron.build/multi-platform-build) for dependencies.
First, refer to
[Multi Platform Build](https://www.electron.build/multi-platform-build) for
dependencies.

Then,

Expand All @@ -115,58 +142,19 @@ $ npm run build
$ npm run test-e2e
```

:bulb: You can debug your production build with devtools by simply setting the `DEBUG_PROD` env variable:
:bulb: You can debug your production build with devtools by simply setting the
`DEBUG_PROD` env variable:

```bash
DEBUG_PROD=true npm run package
```

## How to add modules to the project

You will need to add other modules to this boilerplate, depending on the requirements of your project. For example, you may want to add [node-postgres](https://github.com/brianc/node-postgres) to communicate with PostgreSQL database, or
[material-ui](http://www.material-ui.com/) to reuse react UI components.

⚠️ Please read the following section before installing any dependencies ⚠️

### Module Structure

This boilerplate uses a [two package.json structure](https://github.com/electron-userland/electron-builder/wiki/Two-package.json-Structure). This means, you will have two `package.json` files.

1. `./package.json` in the root of your project
2. `./app/package.json` inside `app` folder

### Which `package.json` file to use

**Rule of thumb** is: all modules go into `./package.json` except native modules. Native modules go into `./app/package.json`.
## Contributing
if you are interested in fixing issues with the BrainWaves app or helping us add additional features, that's amazing! Please see our [How to Contribute](https://github.com/makebrainwaves/BrainWaves/blob/master/CONTRIBUTING.md).

1. If the module is native to a platform (like node-postgres), it should be listed under `dependencies` in `./app/package.json`
2. If a module is `import`ed by another module, include it in `dependencies` in `./package.json`. See [this ESLint rule](https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-extraneous-dependencies.md). Examples of such modules are `material-ui`, `redux-form`, and `moment`.
3. Otherwise, modules used for building, testing and debugging should be included in `devDependencies` in `./package.json`.
Also, read our [Code of Conduct](https://github.com/makebrainwaves/BrainWaves/blob/master/CODE_OF_CONDUCT.md)

### Further Readings

See the wiki page, [Module Structure — Two package.json Structure](https://github.com/chentsulin/electron-react-boilerplate/wiki/Module-Structure----Two-package.json-Structure) to understand what is native module, the rationale behind two package.json structure and more.
## License

For an example app that uses this boilerplate and packages native dependencies, see [erb-sqlite-example](https://github.com/amilajack/erb-sqlite-example).

## Static Type Checking

This project comes with Flow support out of the box! You can annotate your code with types, [get Flow errors as ESLint errors](https://github.com/amilajack/eslint-plugin-flowtype-errors), and get [type errors during runtime](https://github.com/codemix/flow-runtime) during development. Types are completely optional.

## Dispatching redux actions from main process

See [#118](https://github.com/chentsulin/electron-react-boilerplate/issues/118) and [#108](https://github.com/chentsulin/electron-react-boilerplate/issues/108)

## How to keep this project updated with the boilerplate

If your application is a fork from this repo, you can add this repo to another git remote:

```sh
git remote add upstream https://github.com/chentsulin/electron-react-boilerplate.git
```

Then, use git to merge some latest commits:

```sh
git pull upstream master
```
[MIT](https://github.com/makebrainwaves/BrainWaves/blob/master/LICENSE)

0 comments on commit 15bd06f

Please sign in to comment.