PowderHound-Go is a collection of backend services for PowderHound, primarily handling email delivery and web scraping jobs. These services are built using a distributed task architecture leveraging the Go Asynq library.
The project is structured as follows:
cmd/
: Contains the main applications for the project (email-service and scraping-service).config/
: Contains JSON configuration files that control the resort web scraping jobs.deployment/
: Contains Docker files for the email and scraping services.internal/
: Internal packages that contain most of the logic for the email and web scraping services.
The Email Service is responsible for building and sending forecast and overnight alert emails. It uses the Hermes library for building the emails and Resend for delivery. The main logic can be found in internal/email/email.go
.
The Scraping Service is responsible for scraping ski resort data from various resort websites. It uses the Chromedp library for web scraping. The main logic can be found in internal/scraping/scraping.go
.
Both services are containerized using Docker, and are deployed via GitHub Actions using the provided Docker Compose files in the deployment/
directory.