Find a Conference is under development. This is supposed to be a free, open source and ad-free platform where:
- Registered users can post info about academic conferences and call for papers
- There is no curatorial layer…
- …but users can report inappropriate/duplicated contents
- Only the user who posted a conference can edit it
- The platform should not host too much stuff regarding the conferences, instead it should point to universities/association websites, Eventbrite, planning group emails etc.
- It should be designed to be easily internationalized (multi-language)
If you want to get a development version of Find a Conference running, this session might be helpful. If it is not, let us know.
- Python 2.7+ (many of the dependencies are not Python 3 compatible yet)
- PostgreSQL 9.3+
- Node.js with CoffeeScript and Bower
pip is not required, but we are using it in install instructions.
virtualenv and virtualenvwrapper are not required but are highly recommended.
This application requires environment variables in order to work properly.
Usually they are read from a .env
(not included in the repository for security reasons). But you can copy .env.sample
as .env
and customize it – it is the easiest way to set these variables.
DATABASE_URL
: URL and credentials to development database (e.g.postgres://vagrant:vagrant@localhost/findaconf
)DATABASE_URL_TEST
: URL and credentials to test database (e.g.postgres://vagrant:vagrant@localhost/findaconf_test
)
SECRET_KEY
: Flask's default secret key variable, i.e. just a random and long string
GOOGLE_PUBLIC_API
: credentials to Google Places APIGOOGLE_PLACES_PROXY
(optional): if you want to access Google Places API through a proxy, set the proxy URL here
At least one of these providers should be set in order to enable users to log in.
Setting a provider involves registering an application with a OAuth/OAuth2 provider, and passing the client id
and client secret
tokens to Find a Conference through pairs from this set of variables:
AMAZON_CLIENT_ID
andAMAZON_CLIENT_SECRET
FACEBOOK_CLIENT_ID
andFACEBOOK_CLIENT_SECRET
GITHUB_CLIENT_ID
andGITHUB_CLIENT_SECRET
GOOGLE_CLIENT_ID
andGOOGLE_CLIENT_SECRET
LINKEDIN_CLIENT_ID
andLINKEDIN_CLIENT_SECRET
TUMBLR_CLIENT_ID
andTUMBLR_CLIENT_SECRET
WINDOWS_CLIENT_ID
andWINDOWS_CLIENT_SECRET
YAHOO_CLIENT_ID
andYAHOO_CLIENT_SECRET
DEBUG
: sets if the application is started in debug mode (e.g.True
)ASSETS_DEBUG
: sets if webassets runs in debug mode (e.g.True
)
ADMIN
: when an user with an email listed in this variable (a string containing email addresses, comma separated) is created, it is created asadmin
(not as regularuser
)
- Clone the repository and step in its directory:
$ git clone git@github.com:cuducos/findaconf.git && cd findaconf
- Start create, provision and log into your virtual machine:
$ vagrant up && vagrant ssh
- Go to the application directory:
$ cd /vagrant
- Set up your API credentials editing the
.env
file accordingly - Run the server with something like:
$ python manage.py runserver -r -d -h 0.0.0.0
- Clone the repository and step in its directory:
$ git clone git@github.com:cuducos/findaconf.git && cd findaconf
- Install the dependencies:
$ pip install -r requirements.txt && bower install
- Set up your environment variables:
$ mv .env.sample .env
and then edit.env
accordingly - Create and feed the database:
$ python manage.py db upgrade
- Run the server with something like:
$ python manage.py runserver -r -d -h 0.0.0.0
If you need further instructions to configure your development environment, take a look at our Vagrant bootstrap script. It has all the commands to install Python, Node.js, CoffeeScript, Bower and PostgreSQL dependencies, and the commands to create databases and users. It is designed to work with Ubuntu 14.04, but it should work with most Debian distributions.
Note that the included .bowerrc sets up a customized directory to store Bower files.
We suggest running the server with these optional arguments: -d
enables the debug mode, -r
reloads the server in case you change any file, and -h 0.0.0.0
starts the server at this (local) IP.
We're using Nose for testing: $ nosetests
from the project directory is the standard.
If Nose isn't finding any test, it worth it to remember that Nose's default behavior is to ignore executable files. You can overcome this situation by any of this ways:
- Changing the permissions of tests files:
$ chmod -x $(find findaconf/tests/ -name '*.py')
- Running Nose with the
--exe
flag
You can discuss the project, further features, implementation and report issues here on GitHub. And pull requests are very welcomed indeed:
- Fork this repository
- Create a new branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Go to your fork page at GitHub and create new pull request
We keep track of ideas, enhancements etc. in our TODO list, check it out and join us making the list longer or shorter.
The idea emerged within a group of PhD students in Sociology from the University of Essex: Ale, Can and Cuducos.
Mabel and Cuducos designed the UI.
The source code is being written by:
Copyright (c) 2015 Eduardo Cuducos, Gabriel Vicente and Lorenzo Pascucci
Licensed under the MIT LICENSE.