···11+# BrainWaves Code of Conduct
22+33+## Purpose
44+55+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).
66+77+## Our Standards
88+99+Examples of behavior that contributes to creating a positive environment
1010+include:
1111+1212+* Using welcoming and inclusive language
1313+* Being respectful of differing viewpoints and experiences
1414+* Gracefully accepting constructive criticism
1515+* Focusing on what is best for the community
1616+* Showing empathy towards other community members
1717+1818+Examples of unacceptable behavior by participants include:
1919+2020+* The use of sexualized language or imagery and unwelcome sexual attention or
2121+advances
2222+* Trolling, insulting/derogatory comments, and personal or political attacks
2323+* Public or private harassment
2424+* Publishing others' private information, such as a physical or electronic
2525+ address, without explicit permission
2626+* Other conduct which could reasonably be considered inappropriate in a
2727+ professional setting
2828+2929+## Our Responsibilities
3030+3131+Project maintainers are responsible for clarifying the standards of acceptable
3232+behavior and are expected to take appropriate and fair corrective action in
3333+response to any instances of unacceptable behavior.
3434+3535+Project maintainers have the right and responsibility to remove, edit, or
3636+reject comments, commits, code, wiki edits, issues, and other contributions
3737+that are not aligned to this Code of Conduct, or to ban temporarily or
3838+permanently any contributor for other behaviors that they deem inappropriate,
3939+threatening, offensive, or harmful.
4040+4141+## Scope
4242+4343+This Code of Conduct applies both within project spaces and in public spaces
4444+when an individual is representing the project or its community. Examples of
4545+representing a project or community include using an official project e-mail
4646+address, posting via an official social media account, or acting as an appointed
4747+representative at an online or offline event. Representation of a project may be
4848+further defined and clarified by project maintainers.
4949+5050+## Enforcement
5151+5252+Instances of abusive, harassing, or otherwise unacceptable behavior may be
5353+reported by contacting the project team at [INSERT EMAIL ADDRESS]. All
5454+complaints will be reviewed and investigated and will result in a response that
5555+is deemed necessary and appropriate to the circumstances. The project team is
5656+obligated to maintain confidentiality with regard to the reporter of an incident.
5757+Further details of specific enforcement policies may be posted separately.
5858+5959+Project maintainers who do not follow or enforce the Code of Conduct in good
6060+faith may face temporary or permanent repercussions as determined by other
6161+members of the project's leadership.
6262+6363+## Attribution
6464+6565+This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
6666+available at [http://contributor-covenant.org/version/1/4][version]
6767+6868+[homepage]: http://contributor-covenant.org
6969+[version]: http://contributor-covenant.org/version/1/4/
+25
CONTRIBUTING.md
···11+# Contributing
22+33+:tada::clinking_glasses: First off, thanks for taking the time to contribute! :tada::clinking_glasses:
44+55+Contributions are always welcome, no matter how small.
66+77+The following is a small set of guidelines for how to contribute to the project
88+99+## Where to start
1010+1111+### Code of Conduct
1212+This project adheres to the Contributor Covenant [Code of Conduct](CODE_OF_CONDUCT.md).
1313+By participating you are expected to adhere to these expectations. Please report unacceptable behaviour to [dano@neurotechx.com](mailto:dano@neurotechx.com)
1414+1515+### Contributing on Github
1616+1717+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/).
1818+1919+## How can I contribute?
2020+2121+If you find a bug, or have a suggestion on how to improve the project, just fill out a Github issue!
2222+2323+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 [dano@neurotechx.com](mailto:dano@neurotechx.com) or create an issue and we'll be in touch.
2424+2525+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.
OVERVIEW.md
This is a binary file and will not be displayed.
+67-79
README.md
···55 An easy-to-use platform for EEG experimentation in the classroom
66</p>
7788+## Features
99+1010+- Design, run, and analyze an experiment using real EEG data all in one desktop
1111+ app
1212+- Investigate visual event-related brain waves (ERPs)
1313+- Supports Emotiv Epoc+ and Muse devices
1414+1515+## Screenshots
1616+1717+<img src="BrainWaves_Home.png" width="600">
1818+819## Prerequisites
9201010-### All Platforms
2121+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.
2222+2323+### Environment Setup
2424+2525+BrainWaves needs an Anaconda environment called "brainwaves" with the right
2626+dependencies to run its analysis.
2727+2828+1. Download and install Anaconda for Python 3. We recommend using the
2929+ [Miniconda installer for Python 3.6 available from this page](https://conda.io/miniconda.html)
3030+3131+2. Download the BrainWaves
3232+ [environment file](https://github.com/makebrainwaves/BrainWaves/releases/download/v0.1.0/environment.yml)
3333+ or grab it by cloning this repository
3434+3535+_Note: you may need to install Microsoft Visual C++ Build Tools to run this
3636+following command on Windows_
3737+3838+3. Open Anaconda prompt (or terminal on Linux and OSX) in the directory where
3939+ the environment file is located and run `conda env create -f environment.yml`
4040+4141+4. If the environment is created successfully, run the following command to create a new jupyter kernel that uses this environment:
4242+ `python -m ipykernel install --user --name brainwaves --display-name "brainwaves"`
4343+4444+4545+## Download
4646+4747+- Windows:
4848+ [click here](https://github.com/makebrainwaves/BrainWaves/releases/download/v0.7.5/BrainWaves.Setup.0.7.5.exe)
4949+- MacOS: coming soon
5050+- Linux (only supports Muse):
5151+ [click here](https://github.com/makebrainwaves/BrainWaves/releases/download/v0.7.5/BrainWaves_0.7.4_amd64.deb)
11521212-- node version >= 7 and npm version >= 4
1313-- 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
5353+5454+## Installing from Source (for developers)
5555+5656+- Make sure you have node version >= 7, npm version >= 4 and have followed the [Environment Setup](https://github.com/makebrainwaves/BrainWaves#environment-setup) instructions
14571558### OS X
16591717-- 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).
6060+- may need to update your `.bash_profile` to include the path for your
6161+ [compiler](https://github.com/sandeepmistry/node-xpc-connection/issues/2)
6262+ (nothing terribly scary).
1863 1. Find it's location
1964 ```bash
2065 which gcc
···28732974- [Visual C++ Build Tools](https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=BuildTools&rel=15)
30753131-## Installing from Source
3232-3333-- **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)**
347635771. First, clone the repo via git:
3678···4587$ npm install
4688```
47894848-3. If using Emotiv, insert your Emotiv account's credentials into the file `keys.js`
9090+3. If using Emotiv, insert your Emotiv account's credentials into the file
9191+ `keys.js`
49925093### Run
51945252-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:
9595+Start the app in the `dev` environment. This starts the renderer process in
9696+[**hot-module-replacement**](https://webpack.js.org/guides/hmr-react/) mode and
9797+starts a webpack dev server that sends hot updates to the renderer process:
53985499```bash
55100$ npm run dev
56101```
571025858-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:
103103+Alternatively, you can run the renderer and main processes separately. This way,
104104+you can restart one process without waiting for the other. Run these two
105105+commands **simultaneously** in different console tabs:
5910660107```bash
61108$ npm run start-renderer-dev
62109$ npm run start-main-dev
63110```
641116565-## Installing from Executable
6666-6767-1. Download and install the executable from this repository's [releases](https://github.com/makebrainwaves/BrainWaves/releases)
6868-6969-2. Before running the app, follow the Conda Environmemt Setup instructions
7070-7171-## Conda Environment Setup
7272-7373-BrainWaves needs an Anaconda environment called "brainwaves" with the right dependencies to run its analysis.
7474-7575-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)
7676-7777-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
7878-7979-*Note: you may need to install Microsoft Visual C++ Build Tools to run this following command on Windows*
8080-8181-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`
8282-8383-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`
8484-8585-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"`
8686-87112## Packaging
8811389114To package apps for the local platform:
···9411995120To package apps for all platforms:
961219797-First, refer to [Multi Platform Build](https://www.electron.build/multi-platform-build) for dependencies.
122122+First, refer to
123123+[Multi Platform Build](https://www.electron.build/multi-platform-build) for
124124+dependencies.
9812599126Then,
100127···115142$ npm run test-e2e
116143```
117144118118-:bulb: You can debug your production build with devtools by simply setting the `DEBUG_PROD` env variable:
145145+:bulb: You can debug your production build with devtools by simply setting the
146146+`DEBUG_PROD` env variable:
119147120148```bash
121149DEBUG_PROD=true npm run package
122150```
123151124124-## How to add modules to the project
152152+## Contributing
153153+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).
125154126126-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
127127-[material-ui](http://www.material-ui.com/) to reuse react UI components.
155155+Also, read our [Code of Conduct](https://github.com/makebrainwaves/BrainWaves/blob/master/CODE_OF_CONDUCT.md)
128156129129-⚠️ Please read the following section before installing any dependencies ⚠️
130157131131-### Module Structure
132132-133133-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.
158158+## License
134159135135-1. `./package.json` in the root of your project
136136-2. `./app/package.json` inside `app` folder
137137-138138-### Which `package.json` file to use
139139-140140-**Rule of thumb** is: all modules go into `./package.json` except native modules. Native modules go into `./app/package.json`.
141141-142142-1. If the module is native to a platform (like node-postgres), it should be listed under `dependencies` in `./app/package.json`
143143-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`.
144144-3. Otherwise, modules used for building, testing and debugging should be included in `devDependencies` in `./package.json`.
145145-146146-### Further Readings
147147-148148-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.
149149-150150-For an example app that uses this boilerplate and packages native dependencies, see [erb-sqlite-example](https://github.com/amilajack/erb-sqlite-example).
151151-152152-## Static Type Checking
153153-154154-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.
155155-156156-## Dispatching redux actions from main process
157157-158158-See [#118](https://github.com/chentsulin/electron-react-boilerplate/issues/118) and [#108](https://github.com/chentsulin/electron-react-boilerplate/issues/108)
159159-160160-## How to keep this project updated with the boilerplate
161161-162162-If your application is a fork from this repo, you can add this repo to another git remote:
163163-164164-```sh
165165-git remote add upstream https://github.com/chentsulin/electron-react-boilerplate.git
166166-```
167167-168168-Then, use git to merge some latest commits:
169169-170170-```sh
171171-git pull upstream master
172172-```
160160+[MIT](https://github.com/makebrainwaves/BrainWaves/blob/master/LICENSE)