Crucible is a Flask-based batteries-included glue framework.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Benjamin Shelton 5c7601ee04 Enable setting headers and origin, renaming decorator to cors. 1 year ago
crucible Enable setting headers and origin, renaming decorator to cors. 1 year ago
.gitignore Added build and dist directories to .gitignore. 4 years ago
LICENSE Re-licensing Crucible under the NCSA license to ensure documentation is 1 year ago
LICENSES Added licenses for dependent software. 1 year ago Import scaffold via 4 years ago
Makefile I can't type, apparently. 1 year ago Added README. 1 year ago Updated upstream packages. 1 year ago

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'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
  • 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.