The following are the guiding principles around itty3:

What itty3 Is

  • Small (ideally, ~1kloc of code or less)
  • Self-contained (depends only on the Python stdlib)
  • Open (BSD license, baby!)
  • Respects HTTP & the Web (all the HTTP verbs, good status codes,
    content-types, etc.)
  • Easy to start working with (import itty3 & define some functions)
  • Flexible & easy to extend (all code can be used in relative isolation)
  • Few to no globals (outside of constants)
  • Fast & efficient (within reason/readability)
  • Well-tested
  • Well-documented
  • Unicode everywhere (that we can)

itty3 is designed for the sweet spot around creating single-page apps, small APIs & experiments. The code you produce with itty3 should be (relatively) easy to migrate to other things (Django, Flask, etc.) when you’ve moved beyond itty3’s capabilities.

What itty3 Isn’t

  • An everything-and-the-kitchen-sink webframework (there are better options)
  • Strongly opinionated about tools
  • A perfect solution

itty3 won’t ever ship with an authentication layer, database engines, scaffolding, Makefiles (beyond the Sphinx one), etc.

It’s designed for the modern Web, so I’m sure there’s ancient things that don’t work. Sorrynotsorry.

The Future

There are planned improvements for the future. The Github Issues for the project is the most up-to-date source of that information, but generally speaking:

  • Cookie support
  • Included example code
  • More/better docs
  • Maybe file uploads? Maybe