~samuelw/geom

experiments in go backends
adds LICENSE
WIP stuff left from before.
WIP Indexes, missing ID-fields on all jsons stored in db

refs

main
browse  log 

clone

read-only
https://git.sr.ht/~samuelw/geom
read/write
git@git.sr.ht:~samuelw/geom

You can also use your local clone with git send-email.

#GEOM

Very cool name.

Experimental backend to maybe use for quick PoCs in the future. Inspired by pocketbase, but targeting a more code-centric usage.

#Why?

Firebase is nice, but self hosted and everything in code is even nicer.

The goal is to have:

  • Single file database - easy to back up and handle
    • Schemaless documents for quick development and wild west migrations
    • If anyone asks "where is our data?" the answer is "this file"
    • Easy to separate data into files, eg GDPR data in one, anonymous data in another, a third for time-series data
  • Easy to implement access control
    • Firebase-esque rules for documents
  • Tools ready to implement business logic
    • In memory pubsub
    • In memory cache
    • Realtime document updates
  • Indexes from json document fields
    • Simplify "joins"
  • Acceptable performance for a few thousand users
    • Clear paths forward when performance starts degrading
      • Easy to replace in embedded pubsub/cache/dbs with externals
  • Super simple deployment
    • Exetutable + database file + config file -> rock and roll

#Structure

An example of a firebase-like implementation is under work in examples/documents.go