Github Actions Build codecov Documentation Status


A mildly opinionated library used to bootstrap apps. Its primary use is to commonize (and test) the typical bespoke boilerplate most applications tend to reimplement to varying levels of sophistication.

All dependencies are intentionally optional, and exposed through extras in order to make opting into or out of specific strapp decisions and modules entirely optional.

Package Highlights

  • SQLAlchemy

    • Session creation helper functions

      • Opt-in “dry run” session feature

    • Custom declarative_base

      • Opt-in created_at/updated_at columns

      • Opt-out reprable models

      • For type safety, utilize the mypy plugin

        plugins = 'strapp.sqlalchemy.mypy'
  • Click

    • Context “Resolver”

  • Flask

    • Non-decorator based route registration pattern (removes circular import issues)

    • Opt-in error handlers

    • Opt-in database handling

  • Logging

    • Logging verbosity helper

  • Sentry

    • Setup helper

    • Context helper

  • Dramatiq

    • Interface helpers (configure, enqueue, get_results)

    • Declarative actors (PreparedActor)

    • Optional middlewares: SentryMiddleware, DatadogMiddleware

Optional Integrations

Strapp is designed with integration with Configly and Setuplog, two of our other open sourced packages.

These are entirely optional, and explained at the relevant locations in the docs to which they apply.