poobrains

poobrains is a web… thing written in python on top of Flask and peewee.

This snippet might explain it better:

import poobrains

@poobrains.app.expose('/')
class Foo(poobrains.storage.Storable):

  blah = poobrains.storage.fields.CharField(null=True)
  fasel = poobrains.storage.fields.BooleanField()

These few lines of code will fold out to a complete website with administration area, exposing a paginated list of teasers of all Foo instances in the database on the frontpage ('/') and full views of Foo instances at /Foo.id (i.e. Foo instance with id 42 at '/42').

poobrains main intended features are security, good DX (Developer eXperience) and UX (as well done as possible without javascript).

Authentication (login) is done with TLS client certificates in order to avoid problems like password re-use and to gain the security of public key cryptography.

E-mails are only sent PGP-encrypted.

The permission system is restrictive, flexible and extensible. It supports permissions assigned to groups as well as users.

Lastly, it DOES NOT CONTAIN ANY JAVASCRIPT.

There also is a nice little theming system offering things like SCSS integration, inheritance of theme resources (templates, scss files, graphics, etc) and templatable SVG (with compiled-in SCSS, too).

Sadly, poobrains isn't production-grade software yet. Currently, it's still in a pre-alpha stage:

  • (unfinished) CLI will probably be completely redone since Flask got built-in CLI support a few months back
    • UPDATE: The CLI (all 2 commands!) are now ported over to the Flask integration, but there's no input sanitation / type enforcement yet
  • No documentation - There's a few comments here and there, but nothing serious as of now
  • UX of the default theme is still sub-par
    • mobile view not working correctly, don't own a device to test properly
      • UPDATE: Apparently fixed by adding the viewport meta-tag. Should work for any resolution from ~320x480 now.
    • a good bunch of templates still need to be written
  • Good deal of housecleaning still needed for better DX
    • pyreverse recursively and reliably fails analyzing poobrains. Oops. ¯\(ツ)
  • Form system might still see some bigger changes before going alpha
  • No tests
  • No code review (though "I have a guy"™)