boxomon

command module
v0.4.0 Latest Latest
Warning

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

Go to latest
Published: Jun 29, 2020 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)

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

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