diff --git a/BrainWaves_Home.png b/BrainWaves_Home.png new file mode 100644 index 00000000..925759cf Binary files /dev/null and b/BrainWaves_Home.png differ diff --git a/CODE_OF_CONDUCT.MD b/CODE_OF_CONDUCT.MD new file mode 100644 index 00000000..a7d2dc55 --- /dev/null +++ b/CODE_OF_CONDUCT.MD @@ -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/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..48db7c70 --- /dev/null +++ b/CONTRIBUTING.md @@ -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 [dano@neurotechx.com](mailto:dano@neurotechx.com) + +### 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 [dano@neurotechx.com](mailto:dano@neurotechx.com) 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. \ No newline at end of file diff --git a/OVERVIEW.md b/OVERVIEW.md new file mode 100644 index 00000000..e69de29b diff --git a/README.md b/README.md index 5c3d40bd..01243d2e 100644 --- a/README.md +++ b/README.md @@ -5,16 +5,61 @@ An easy-to-use platform for EEG experimentation in the classroom

+## 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 + + + ## 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 @@ -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: @@ -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: @@ -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, @@ -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) \ No newline at end of file