Adam Veldhousen
b55917d4eb
ci.vdhsn.com/push Build is passing
Details
|
10 months ago | |
---|---|---|
.vscode | 11 months ago | |
doc | 10 months ago | |
env | 10 months ago | |
hack | 10 months ago | |
src | 10 months ago | |
.drone.yml | 10 months ago | |
.gitignore | 11 months ago | |
.sops.yaml | 11 months ago | |
.tool-versions | 11 months ago | |
LICENSE | 1 year ago | |
Makefile | 10 months ago | |
README.md | 10 months ago | |
Tiltfile | 10 months ago | |
go.work | 10 months ago | |
go.work.sum | 11 months ago |
README.md
Barretthousen
Search and get alerts for items across the most popular auction sites.
Built with microservice architecture and various fancy tools for learning purposes
Links
- Keybase Team Chat
- Source
- User's Site
- Admin Panel
- (Staging) User's Site
- (Staging) Admin Panel
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
-
Typescript:
-
TailwindCSS:
Services
-
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:
- Docker
- Make
- asdf
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.