Working on a new version on Brainspell.
Clients can make requests to the JSON API directly, or access Brainspell through the web interface. A running Heroku instance is available at https://brainspell.herokuapp.com/.
To view a list of all JSON API endpoints, take a look at https://brainspell.herokuapp.com/json/list-endpoints. If you're unsure about the parameters for an endpoint, add
/help to the end of the URL (e.g., the documentation for https://brainspell.herokuapp.com/json/split-table is available at https://brainspell.herokuapp.com/json/split-table/help).
To run Brainspell locally:
- Clone the Git repo with
git clone email@example.com:OpenNeuroLab/brainspell-neo.git.
- Install Postgres (if not already installed). If you have Homebrew installed, you can use
brew install postgres.
- Make sure that you're using Python 3.5.
- Enter the repo with
cd brainspell-neo/, and install the Python dependencies with
pip install -r requirements.txt.
Now you can run Brainspell with
python3 json_api/brainspell.py. Brainspell should be running at
Having difficulty getting Brainspell running? Install Conda, and create an environment for Python 3.5.
Running Brainspell with Docker
First, make sure that you have Docker installed. Then:
- Navigate into the Brainspell directory. (
- Build the Docker image with
docker build -t brainspell .
- Create the Docker container and run with
docker run --name brainspell -ti -p 5000:5000 brainspell
Brainspell should be running at
http://localhost:5000/. The next time that you want to run the Docker container, simply execute
docker start -a brainspell, and stop the Docker container with
docker stop brainspell.
json_api/brainspell.py runs the Tornado main event loop.
Handlers go in one of three files:
json_api.py, which contains JSON API endpoints that do not make GitHub API requests,
user_interface.py, which contains all handlers that render Tornado HTML templates, or
github_collections.py, which contains all API endpoints and handlers that communicate with GitHub.
Our naming convention is to use
[*]EndpointHandler for API endpoint handlers, and
[*]Handler for web interface handlers.
json_api/article_helpers.py contains helper functions for adding articles to the database.
json_api/base_handler.py is our abstract handler, which provides various helper functions. All handlers should subclass
json_api/deploy.py is a module for deploying to a remote server using Git.
json_api/models.py is for our ORM, PeeWee, which lets us treat our database like a Python object.
json_api/search_helpers.py contains helper functions for searching articles in the database.
json_api/test_tornado.py is our suite of continuous integration tests.
json_api/user_account_helpers.py contains helper functions for accessing and mutating user information.
json_api/websockets.py contains a WebSocket that allows developers to connect to the API using the WebSockets protocol.
Our official Postgres database is hosted on AWS, but we have a static database available on Heroku. The full database is available in the
Former website for Brainspell: http://www.brainspell.org