Awesome
Hackathons Backend
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
Contributing
This app is built with 🛤️ Ruby on Rails (running on the edge) and uses 🥋 Solid Queue for running background jobs.
Getting Started
-
Make sure you have Docker and Ruby 3.3.6 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!
Additional Dependencies
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
Production Deployment
Vendors:
- Heroku
- Redis (Heroku Data for Redis
premium0
)
- Redis (Heroku Data for Redis
- Hetzner
- Runs the Rails app and Solid Queue (3 vCPU, 4 GB)
- Deployed via Kamal
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.
Production Rails Console
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
Solid Queue
Solid Queue 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 jobs, visit /admin/jobs
on the production site. You must
be logged in as an admin to access this page.
Application performance monitoring sponsored by <a href="https://appsignal.com/?ref=github:hackclub/hackathons-backend"> AppSignal </a>.