The backend behind QuickPick. It handles sign-up, friendships and push notifications, and passes encrypted picks from one phone to the next without being able to read them.
Spring Boot on Java 25, Postgres, Twilio for the SMS codes, Firebase for push.
You need JDK 25 and Docker.
docker compose up -d postgres
./gradlew bootRunBefore that, core wants two things that aren't in the repo:
configurations/config.ini
[database]
hostname = localhost
port = 5432
username = postgres
password = change-me
database = quickpick
[api]
port = 8080
; HS256 keys, at least 32 characters each
verification_key =
authentication_key =
refresh_key =
allowed_origins = http://localhost:5173
[twilio]
account_sid =
auth_token =
phone_number =
verify_service_sid =
; optional: fixed codes for test numbers, no SMS is sent
[twilio.test.1]
phone_number = +4915100000000
verification_code = 123456
[firebase]
; service account JSON, placed in configurations/notification/
configuration = service-account.json
project_id =
[google]
client_id =
client_secret =
[statistic]
key =geo/GeoLite2-City.mmdb, free from MaxMind after signing up.