boxomon

command module
v0.5.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 12, 2024 License: MIT Imports: 1 Imported by: 0

README

Table of Contents generated with DocToc

What Is It?

A birthday gift, Boxomon is a cute toy that, when asked, provides an encouraging message, as relayed to you by your favorite pokemon!

In its first form, Boxomon was a physical box - 3D printed, it used a TFT touchscreen with an Arduino mini, displaying static images and messages from the Arduino's embedded memory. Some handrolled crypto, a little bit of LabVIEW code, and devboards stitched everything together. Boxomon v0.1 lasted a while, but eventually the wires began to fail, it became unreliable.

Boxomon v0.2 migrated all of this to a more stable form, and modernized it as well. Boxomon became a 2-tier web app with an Angular frontend and a Golang backend, running on Kubernetes. Messages stored in memory, images served from GCS, and audio, all available over the Internet! I rebuilt the physical box using a Raspberry Pi 3 running Rasbian, a new touchscreen, a small audio shield, and a commodity case, and set it up to auto-start Chrome at the correct URL.

With v0.4, Boxomon is now a three-tier app: the same Angular frontend (for now), a new Golang backend, and PostgresQL database. The new changes make Boxomon less confusing (state is stored in a simple database instead of using a complicated heuristic for message ordering), more fun and easy to work on, and take advantage of a few staples of reliable services like gRPC and Prometheus metrics.

Maybe later

Minor changes

  • Make the backend healthchecks validate database connectivity
  • Convert the frontend to use make, pull code into top directory similar to go backend instead of all being contained in frontend/
  • Make an easy tool to add messages or images, and rework how the next image is picked (only consider messages and images used within the past _ days, not all time)
  • Combine Helm charts to make Boxomon a single chart.

Major changes

  • Build in a concept of identity - assign potential messages and images to users, require some form of authn, probably oauth2
  • Refactor the frontend to use lateral gRPC instead of making a browser HTTP request; remove the backend ingress except for health checks
  • Modernize the frontend with some improved styling (migrate to React instead of Angular)

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
backend module
pkg
cmd
Package proto is a reverse proxy.
Package proto is a reverse proxy.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL