Crucible: A Glue Framework
Crucible is a glue framework based on Flask and includes a number of additional
extensions and features found in common use, such as authentication, CSRF
protection, and more.
There's a lot to take in that Crucible provides, so the best thing to start with
is a list. Crucible:
- provides a more detailed extension system that supports different runtime
environments (for running different extension sets)
- includes a wrapper system for unmodified Flask extensions
- exposes default integration with Celery that's relatively easy to use for
background task management and offloads long-duration calls like bcrypt()
onto Celery out of the box
- includes cryptographic utilities that wrap cryptography.io's primitives and a
few high level features
- uses the factory pattern by default for application reuse
- has an extended roster of signals, useful for writing plugins
- integrates primarily with Flask_Classy
- offers additional decorators for use with Flask_Classy
- extensively (ab)uses blueprints
- has an integrated key management with options (eventually) to integrate with
KeyStar for centralized key control, rotation, and distribution
- provides an assets pipeline and management with a build tool that integrates
with others like webpack
- also includes a "lite" wrapper around SQLAlchemy similar to Flask-SQLAlchemy
but without the need to redefine models or worry about potential
incompatibilities; use SQLAlchemy as it is!
- supplies integrated Alembic support with motifications to remove the
infuriating hash-based naming convention; branches should be managed by your
VCS not your migration tool, and migration names should be obvious and
communicate clearly in what order they execute
- leans heavily on existing libraries like Click to provide support for custom
command line options and even scripts that may be defined in
setup.py
- includes a scaffold that can be used to bootstrap new projects with
everything needed out of the box
Documentation is currently in the works, including a sample application, so
this README is currently little more than a stub. This is because Crucible is
not yet ready for general use and may be renamed in the near future to avoid
conflicting with projects sharing a similar name.