Skip to content
All-in-one platform for hackathon registration & logistics
Ruby HTML JavaScript CSS Shell
Branch: master
Clone or download
semantic-release-bot chore(release): 1.18.0 [skip ci]
# [1.18.0](v1.17.2...v1.18.0) (2019-08-18)

### Features

* alert if user is redirected when arriving to rsvp ([3b6260a](3b6260a))

### Maintenance

* Update gems ([#179](#179)) ([dc1b039](dc1b039))
Latest commit 7a8ab14 Aug 17, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
app Update app/controllers/rsvps_controller.rb Aug 18, 2019
bin “rails new” with existing code Apr 17, 2019
config fix: Corrects typo in the Bus Captain Notes config description (#173) Jul 17, 2019
db feat: Add ability to mark a school as a home school May 29, 2019
docs feat: Support SMTP as an alternative email provider to Sparkpost (#172) Jul 14, 2019
lib Reorganize after “rails new" Apr 17, 2019
log “rails new” with existing code Apr 17, 2019
public Reorganize after “rails new" Apr 17, 2019
storage “rails new” with existing code Apr 17, 2019
test ci: Simplify Rails test log output Jun 18, 2019
tmp “rails new” with existing code Apr 17, 2019
vendor maint: Update gems (#179) Aug 18, 2019
website build: Set MIT license in package.json Jun 5, 2019
.codeclimate.yml [codeclimate] Use newer rubocop version Apr 17, 2019
.dockerignore [docs] Move to dedicated documentation site (#155) May 22, 2019
.editorconfig Add various editor & lint config files May 26, 2017
.env.example [feature] Support third-party S3 providers May 21, 2019
.gitignore Add example .env Apr 17, 2019
.haml-lint.yml Rebuild management UI (#81) Jul 21, 2018
.hound.yml [feature] Enable UI-customizable message layout (#156) May 23, 2019
.prettierrc Clean up JS formatting with Prettier May 29, 2019
.rubocop.yml build(rubocop): Merge rubocop-shared.yml into rubocop.yml Jun 21, 2019
.ruby-version deploy: Upgrade from Ruby 2.6.2 to 2.6.3 Jun 18, 2019
.travis.yml ci: Only run deploy steps on master branch pushes Aug 18, 2019 chore(release): 1.18.0 [skip ci] Aug 18, 2019
CHECKS [dokku] Tweak checks schedule Apr 20, 2019
DOKKU_SCALE [dokku] Scale worker process from 0 -> 1 Apr 20, 2019
Dockerfile-website [docs] Move to dedicated documentation site (#155) May 22, 2019
Gemfile fix: Patch CSRF vulnerability with omniauth authorization Jun 3, 2019
Gemfile.lock maint: Update gems (#179) Aug 18, 2019
MIT-LICENSE rails plugin new hackathon_manager --full May 24, 2017
Procfile [heroku] Add db:migrate step to release phase May 21, 2019 feat: Support SMTP as an alternative email provider to Sparkpost (#172) Jul 14, 2019
Rakefile “rails new” with existing code Apr 17, 2019
app.json feat: Support SMTP as an alternative email provider to Sparkpost (#172) Jul 14, 2019 “rails new” with existing code Apr 17, 2019
package.json build: Rename to hackathon-manager in package.json May 29, 2019
release.config.js ci: Add maintenance section to releases May 29, 2019
yarn.lock build(deps): bump lodash from 4.17.11 to 4.17.14 (#171) Jul 17, 2019


Build Status Code Climate Test Coverage security

An all-in-one platform for managing hackathon registration & logistics, originally developed for BrickHack.


  • Hacker applications: Enable hackers to apply to your hackathon while providing all relevant information (contact info, school, demographics, etc)
  • MyMLH support: Streamline the application process when users log in with MyMLH, a common platform for applying to any MLH hackathon. Basic info is pre-filled based on a common application, so hackers don't have to re-type it every time.
  • Admissions & RSVPs: Facilitate accepting hackers to your hackathon & enable them to RSVP
  • Bus Lists: Coordinate bus sign-ups during the RSVP process while communicating important information to riders & captains
  • Email communication: Ensure hackers get consistent, timely information throughout their application process, while enabling your organizing team to communicate important information at any time.
  • Statistics & Visualization: Surface key analytics about your admissions, distribution of applicants, progress towards attendance, etc.


HackathonManager is a standalone web app separate from your regular marketing website/public homepage.

A typical setup would be:

  • — Marketing site with event info, schedule, sponsors, etc and a button to apply
  • — HackathonManager deployment to accept hacker applications + host management dashboard

This allows your public marketing site to operate however you want it (e.g. GitHub pages) while HackathonManager lives in an isolated, consistent environment.

HackathonManager makes use of a few different third-party services & Ruby gems:

Get Started

Deploy HackathonManager for your hackathon »



Documentation is available at

Docs are maintained as markdown files in the docs/ folder, with the website configuration & tooling stored in website/.

Doc & website changes are auto-built and deployed via Travis CI once merged into master.

Commits + Releases

Releases are automatically generated by semantic-release using commit messages.

Commit messages should follow the standard type(scope): subject format. For example:

  • feat: Improve form typography
  • deploy(heroku): Ensure db:migrate is run after each deploy
  • fix: Support HTTPS in questionnaire portfolio URL

For more information, see semantic-release's how does it work.


GitHub issues and pull requests welcome!

All documentation is easily editable using the GitHub UI. Click the "Edit" button at the top of any documentation page to get started.

If there's a new feature you're looking to implement, please file an issue to open discussion on the feature before starting work or opening a pull request.

Local Development

  1. Setup Ruby + MySQL for local development

If you don't already have Ruby + MySQL set up, see this guide by GoRails for pointers.

  • Select your computer's operating system & version
  • If given the choice, use rbenv -- this will ensure a clean, sustainable Ruby dev environment
  • SQLite and PostgreSQL steps are optional
  1. Clone the repo
$ git clone
$ cd hackathon-manager
  1. Install dependencies
$ bundle install
  1. Setup databse
$ bin/rails db:setup
  1. Start up the server
$ bin/rails s  # short for bin/rails server
  1. Visit http://localhost:3000/apply, create an account, and complete an application

  2. In another bash window, promote your user to an admin

$ cd hackathon-manager
$ bin/rails c  # short for bin/rails console
# Wait for the console to start...
Loading development environment (Rails 5.1.1)
irb(main):001:0> User.last.update_attribute(:role, :admin)
  1. Visit http://localhost:3000/manage and set up the hackathon as needed

See for docs on regular hackathon setup

Local Development Utilities

  • Mail View - Email templates can be previewed at http://localhost:3000/rails/mailers
  • Mail Catcher - When active, emails will be captured by MailCatcher instead of slipping into a black hole (no emails are ever sent in development). Visit and follow instructions under "How" to get setup.
  • Guard - Automatically runs tests based on the files you edit. bundle exec guard
  • Coverage - Test coverage can be manually generated via the bin/rails coverage:run command. Results are then made available in the coverage/ directory.
  • Sidekiq - Run background jobs (such as emails) and view active & completed jobs. Sidekiq is automatically started with Docker - a dashboard is available at http://localhost:3000/sidekiq (also available in production).


The gem is available as open source under the terms of the MIT License.

You can’t perform that action at this time.