Intercode is a web application that:
- serves as the public-facing web site for a convention
- automates signup and payment
- automates business processes for the convention staff
The original Intercode was written in PHP by Barry Tannenbaum for Intercon New England, and has since been used by several other conventions around the world.
Intercode 2 is a ground-up rewrite of Intercode, making it more robust, more flexible, and more modern.
- Backend: Ruby on Rails application exposing a GraphQL API and an OpenID Connect-enabled OAuth2 server
- Frontend: React and Apollo-based single-page JavaScript app
- Database engine: PostgreSQL
- Background queue system: Amazon SQS + Shoryuken (this might change in the future)
- Production infrastructure: For New England Interactive Literature's installation of Intercode, we're hosting it on Heroku and running it as Docker containers (as opposed to using buildpacks). However, since we removed libgraphql-parser from the build, Heroku buildpacks may also work (but we haven't tested it since removing the library).
- Intercode 2 in development mode uses
intercode.testas its cookie domain. If you uselocalhostto visit the site, that will mysteriously fail. I'm going to try to make the site detect the wrong domain and redirect you, but for now, please just use theintercode.testdomain name. - We used to support a Docker Compose-based development workflow, but this has been deprecated. Please run Rails locally using the instructions below.
This is the classic Rails development setup, and should work for Mac and Linux users.
- Clone this repository:
git clone https://github.com/neinteractiveliterature/intercode.git - Make sure you have a working C/C++ development toolchain installed. On macOS, that's Xcode and its Command Line Tools.
- Install rbenv
- Install ruby-build
- Install the Ruby version Intercode requires:
rbenv install - Install Bundler:
gem install bundler - Edit your hosts file (typically found in
/etc/hostson Mac and Linux systems) and add the following line:127.0.0.1 intercode.test - From the Intercode source folder:
- Install all the dependencies of Intercode:
1. Install PostgreSQL. With Homebrew:
brew install postgres2. Make sure you have Node.js installed. With Homebrew:brew install node3. Make sure you have Yarn installed. With Homebrew:brew install yarn4.bundle install - Set up your local database:
bin/rails db:create db:migrate - Install JavaScript packages:
yarn install - Start up the Intercode server:
bin/rails server - Start up the Webpack server:
yarn run start - You should now be able to go to http://intercode.test:3000 and see the app running!
If you want to test how the app runs in production, but using your local development installation, you can do so as follows:
- Build Docker images for Intercode:
docker build --target production -t local-intercode-production . - Install the
dev-proxynpm package:npm install -g dev-proxy - Run
dev-proxyto start proxying HTTPS locally:dev-proxy -p 5001:5000 - Run something like the following command, changing the asset host as necessary for your setup:
docker run -it -p 5001:3000 -e DATABASE_URL=postgresql://postgres@docker.for.mac.localhost/intercode_development -e RAILS_LOG_TO_STDOUT=true -e ASSETS_HOST=//intercont.intercode.test:5000 -e RAILS_SERVE_STATIC_FILES=true local-intercode-production bin/rails - Visit https://some-convention-domain.intercode.test:5000, probably using Firefox (it seems to deal better than Chrome with self-signed certificates these days).
To contact the Intercode 2 project team, you can:
Participants in the Intercode project are expected to follow the Contributor Covenant. For details, see CODE_OF_CONDUCT.md.
Intercode 2 is released under the terms and conditions of the MIT license. Please see the LICENSE file for the full legalese.