Planned · the endpoints are the design

One gate in front of the bucket.

Every app that takes uploads writes its own limits, type checks and sanitising. gatething does it once, in front of one bucket.

How it works Built by Rytter

$ gatething keys create shop
gk_live_7e2a… · uploads/shop/ · read, write
415 · svg rejected: scripts aren't sanitised, they're refused
$ curl -F file=@photo.jpg gatething.com/api/v1/sanitize
200 · removed GPS location, camera serial

Features

Storing a file, decided once.

  • A key per app

    Each app's key reaches its own prefix and nothing else, so revoking one touches no other app.

  • Rules in one file

    Size, types, lifetime and cleaning per app, with defaults that refuse what nobody should allow.

  • Sanitise on its own

    Anything can send a file to the sanitize endpoint and get the clean version back.

How it works

Apps hold a gate key, never a bucket key.

  1. 1

    Send

    The app sends the file with its key, so it never writes a bucket policy of its own.

  2. 2

    Check

    Size, type and sanitising are applied on the way in, so a bad file never reaches storage.

  3. 3

    Expire

    Every file gets a lifetime from its app's rules, so deletion is decided before anything is stored.

Who built it

Built by Rytter.

I'm Jakob Rytter. I build software and run it, from the server to the screen, and gatething is how my apps will store what they are sent.

rytter.it All the things