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). It uses π PostgreSQL for the database and π₯ Sidekiq/Redis for background jobs.
-
Make sure you have Docker and Ruby 3.3.2 installed.
-
Clone the repo
git clone https://github.com/hackclub/hackathons-backend.git cd hackathons-backend
-
Setup credentials
cp .env.example .env
-
Install dependencies
bundle install
-
Boot required services (PostgreSQL, etc.)
docker compose up
-
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
- Postgres (Heroku Postgres
standard0
) - Redis (Heroku Data for Redis
premium0
)
- Postgres (Heroku Postgres
- 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 .