Go to file
Adam Veldhousen 29a051457e
ci.vdhsn.com/push Build encountered an error Details
beta promote and ignore
2023-07-12 17:52:02 -05:00
.vscode MVP build (#1) 2023-06-12 20:25:55 -05:00
doc auth deployment 2023-07-10 01:52:02 -05:00
env auth kustomize 2023-07-10 03:46:29 -05:00
src beta promote and ignore 2023-07-12 17:52:02 -05:00
.drone.yml beta promote and ignore 2023-07-12 17:52:02 -05:00
.gitignore MVP build (#1) 2023-06-12 20:25:55 -05:00
.sops.yaml MVP build (#1) 2023-06-12 20:25:55 -05:00
.tool-versions MVP build (#1) 2023-06-12 20:25:55 -05:00
LICENSE docs and architecture planning 2023-04-16 13:06:10 -05:00
Makefile test 2023-07-12 01:09:03 -05:00
README.md resources 2023-07-12 01:56:08 -05:00
Tiltfile auth deployment 2023-07-10 01:52:02 -05:00
go.work update go mods 2023-07-12 13:36:36 -05:00
go.work.sum MVP build (#1) 2023-06-12 20:25:55 -05:00

README.md

Barretthousen

Build Status Search and get alerts for items across the most popular auction sites.

Built with microservice architecture and various fancy tools for learning purposes

Technology

This project is for fun and learning so there are a lot of tools at play:

Infra

  • Tilt: local development env orchestration
  • Ctlptl: Automate local kubernetes clusters for local dev
  • Docker
  • Postgres:
  • Traefik:
  • Kustomize:
  • Helm:

Backend

  • Go
  • goose: Go SQL db migration tool
  • Sqlc: Generate Go code to query SQL databases from migrations in a type safe way
  • Buf: Nice frontend for protoc and .proto libraries
  • Protobufs:

Frontend

Diagram

Services

Auction terms glossary

  • Web-client Frontend site that users access to browse upcoming auctions and subscribe for updates to their searches

  • Admin-client Enables site administrators to kicks off scrape and email jobs in Runner and Ringman, and view status on current/past jobs.

  • Catalog API for searching upcoming auctions.

  • Runner Scrapes sites for upcoming auctions. Transforms the data into a suitable shape and stores it for use by the frontend.

  • Ringman Manages email subscriptions and sending emails to users about upcoming auctions.

  • Proxy-web Proxies JSON HTTP API requests for the web client to GRPC based services downstream

  • Proxy-admin Proxies JSON HTTP API requests for the admin client to GRPC based services downstream

Contributing

You will need the following prereqs installed:

Everything you need is in the makefile:

# install asdf tools, sqlc, buf
make setup

# generate protobufs and sql boilerplate
make gen

# spin up a k8s cluster, build and deploy services locally w/ hot reloading - be patient this takes a few minutes first run
make dev

# build production docker images for the backend microservices, optionally push to the respective env
make build-backend-image SERVICE=[catalog, runner, proxy-web, proxy-admin] [ENV=[beta, prod]]

# build client docker image for web frontends, optionally push to the respective env
make build-client-image SERVICE=[web-client, admin-client] [ENV=[beta, prod]]

# acceptance tests
make acceptance-test SERVICE=[runner,catalog] ORIGIN=[beta.barretthousen.com,beta.admin.barretthousen.com]

For how to deploy read me.