The thing that powers hackathons.hackclub.com!
- 📎 Collecting and reviewing applications to list your hackathon
- 📧 Notifying subscribers of hackathons in their area
- 🌍 Geocoding hackathon and subscription locations into coordinates
- 💾 Archiving hackathon websites for posterity
- 🗓️ Provides a JSON API for the front-end
📝 Application Form | 📬 Subscription Email |
---|---|
This app is built with 🛤️ Ruby on Rails (running on the edge) and uses 🥋 Sidekiq/Redis for running background jobs.
-
Make sure you have Docker and Ruby 3.3.5 installed.
-
Clone the repo
git clone https://github.com/hackclub/hackathons-backend.git cd hackathons-backend
-
Install dependencies
bundle install
-
Setup the database and run the server
rails db:prepare rails server
The application will now be running at localhost:3000!
Rails 7 (Active Storage) depends on vips to process images. You'll want this dependency installed on your machine. For macs, run:
brew install vips
Vendors:
- Heroku
- Redis (Heroku Data for Redis
premium0
)
- Redis (Heroku Data for Redis
- Hetzner
- Runs the Rails app and Sidekiq (3 vCPU, 4 GB)
- Deployed via Kamal
All pushes to the main
branch are automatically deployed by Kamal.
- Environment variables are stored on GitHub and accessed by GitHub Actions when deploying.
- Deployments take 2-5 minutes to complete.
- After pushing to
main
, please monitor theCD / Deploy
check for the status of the deployment.
We audit the use of the production console with console1984
and audits1984
.
To use the production console, you must first have SSH access to the Hetzner
server(s). Please ask @garyhtou
for access.
Then, run the following locally on your computer:
bin/console prod
Sidekiq is used to process background jobs in production. In development, we use the good old default Active Job Async queue adapter.
To check up on Sidekiq, visit /admin/sidekiq
on the production site. You must
be logged in as an admin to access this page.
Application performance monitoring sponsored by AppSignal .