NeuroStars is a questions and answers website for the neuroinformatics community.
The project was started after a few unfruitful attempts in StackExchange’s Area51 to build a website part of the Stack Exchange Network focused on neuroscience. The need to tailor NeuroStars to a specific scientific community entailed the use of a truly open source, customizable and extensible solution: BioStar.
BioStar is “a simple, generic, flexible and extensible Q&A framework […] developed by scientists and for scientists”. It is the engine that powers some science oriented Q&A website: Biostars Bioinformatics Q&A, Galaxy User support, Bioconductor User support, Metabolomics Q&A and Neurostars.
NeuroStars is supported by the International Neuroinformatics Coordinating Facility (INCF) and administered by Roman. BioStar is authored by Istvan and I am one of the main contributors.
NeuroStars is powered by the BioStar framework.
A basic deployment of BioStar includes the following software stack:
- Python: the main programming language;
- Django: the web framework component;
- a DBMS like PostgreSQL;
- Whoosh: the light-weight full-text search engine;
- a webserver like Nginx, Gunicorn, Waitress or others;
- a bunch of Django libraries for different purposes.
For high performance installations, the following optional software is highly suggested:
- Celery: the distributed task queue to manage asynchronous operations like email processing, news fetching, etc;
- Redis: for caching;
- Elasticsearch: the full-text search engine.
The current deployment of NeuroStars at neurostars.org was designed by myself and is now administered by Roman and myself. It is made of the following stack (apart from the software listed in the basic deployment above):
- Amazon Web Services: the cloud infrastructure;
- Ansible for automated deployment;
- my Ansible-Biostar playbook to automatize the deployment of BioStar-based projects using Docker containers;
- Docker: to deploy applications inside software containers;
- my Docker-PostgreSQL container which deploys PostgreSQL9.3 inside a Docker container;
- Nginx as reverse proxy server;
- Waitress: the webserver;
- Postfix as email server.
My main contributions
List of my main contributions:
- Ansible-Biostar playbook to automatize the deployment inside Docker containers;
- designed a basic RESTful webservice; currently working on a more feature-rich version based on Django REST Framework;
- multi-tag filtering;
- automated testing with Travis-CI;
- login using ORCID as social provider, feature implemented by extending Django-allauth;
- embed tweets in posts;
- currently working on continuous delivery based on GitHub Webhooks.