Skip to content

andrebq/boombox

Repository files navigation

boombox - Share data with anyone anywhere anytime

This project is definetly inpsired by https://datasette.io/, and I was interested in exploring that idea.

It also serves as a way to expriment with the concept of sharing data and allowing arbitrary * user-code in a server. The knowledge acquired here will be used in other project that I am working at the moment.

With that said, I expect this to be interesting but not particuarly production ready (aka don't complain if lose data of someone hacks your server)

Main concepts

The name comes from the old boombox, kids these days would use a bluetooth speaker with a builtin battery. I'm old soo are my references :-). Deal with it!

Each active user session has a control cassette associated with it, that cassette contains:

  • Web assets (html pages, javascript, css, etc...)
  • Dynamic page blocks (currently only lua scripts are supported)
    • Pages might return JSON objects as well
  • Routing that maps a given URL (or collection of URLS) to a given dynamic page

Then, users can explorer one or more data cassettes, those have less capabilities than a control cassette, they can:

  • Contain one or more tables with data that can be queried by the user (arbitrary queries are allowed).
  • Routing that maps URLs to dynamic code blocks
    • These code blocks can only return JSON encoded data and are restricted to reading data from the data cassette they are stored.

What is a cassette

A cassette is just a sqlite database. control cassettes can be written by users (assuming you implement proper authorization management). Data cassettes on the other hand are read-only. To update them a user has to upload an entire new cassette (again assuming proper authorization management).

About

Share data with anyone anywhere anytime

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages