Skip to content

Best practices setup for large webapps, apis and cli applications with flask

License

Notifications You must be signed in to change notification settings

projectshift/shift-boiler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

shift-boiler

boiler

Boiler is a best-practices setup of flask framework integrated with a number of libraries to quickly bootstrap app development. You can do console applications, web apps or apis with boiler. It is also a good example of how to set up flask framework for large projects or scale from micro- to relatively big system by adding features and extensions as the project grows.

Here are some main features all of which are pluggable and optional:

  • Click integration for CLI apps
  • Web app scaffolding
  • API app scaffolding and Restfulness
  • ORM with SQLAlchemy
  • Database migrations with Alembic
  • Entity/model validation framework with shift-schema
  • Localization and translations with Babel
  • Web forms with WTForms
  • Routing with lazy-views and on-demand view import
  • Set of useful Jinja additions and filters including support for versioned static assets.
  • All of the features are pluggable and optional. Use whatever you need.

Ridiculously quick start

Create virtual environment:

mkdir boiler-testdrive && cd boiler-testdrive
virtualenv -p python3 env
source env/bin/activate

Install and run boiler:

pip install shiftboiler
boiler init .
boiler dependencies flask
./cli run

This was quickstart for robots. We also have a quickstart for humans, with some further exaplanations.

Versioning

We loosely follow semver except we did not have a major release yet to indicate the fact that boiler is still not entirely production ready. however we did successfully used it in production on multiple occasions for webapps and apis. Just remember to freeze your boiler version in requirements file and expect minor versions to introduce breaking changes.

Documentation