Flask-Turbo-Boost

Forked Flask-Boost - Flask application generator for boosting your development.


Keywords
flask, project, template, rich-sample, generator
License
MIT
Install
pip install Flask-Turbo-Boost==0.2.8

Documentation

Flask-Boost

Latest Version Downloads Per Month Python Versions The MIT License

Flask application generator for boosting your development.

Features

  • Well Defined Project Structure
    • Use factory pattern to generate Flask app.
    • Use Blueprints to organize controllers.
    • Split controllers, models, forms, utilities, assets, Jinja2 pages, Jinja2 macros into different directories.
    • Organize Jinja2 page assets (HTML, JavaScript, CSS) to the same directory.
    • Organize Jinja2 macro assets (HTML, JavaScript, CSS) to the same directory.
    • API-Only Project Structure
  • Batteries Included
    • Use Flask-SQLAlchemy and Flask-Migrate as database tools.
    • Use Searchable-Mixin for search every Models [Optional]
    • Use ActiveRecord-Like-Mixin for search every Models [Optional]
    • Use JWTAuth for authentication [Optional]
    • Use JsonSchema for validate incoming requests [Optional]
    • Use Flask-WTF to validate forms.
    • Use Flask-Security for user management.
    • Use Flask-Dance for social user authentication (Sample with facebook and google).
    • Use Bulma as frontend framework.
    • Dockerfile – Sample dockerfile for development
    • docker-compose.yml – Sample docker-compose for deployment
    • Use Gunicorn to run Flask app and Supervisor to manage Gunicorn processes.
    • Use Fabric as deployment tool.
    • Use Sentry to log exceptions.
    • Use Nginx to serve static files.
    • Use sub script command to generate admin and form from a model.
  • Scaffold Commands
    • Generate project files: turbo new <project>
    • Generate API-only project files: turbo new --api <project>
    • Generate controller files: turbo new controller <controller>
    • Generate action files: turbo new action <controller> <action> [-t]
    • Generate form files: turbo new form <form>
    • Generate model files: turbo new model <model>
    • Generate macro files: turbo new macro <category> <macro> or boost new macro <macro>

Installation

pip install flask-turbo-boost

Development Guide

Init project

turbo new <your_project_name>

Setup backend requirements

cd <your_project_dir>
virtualenv venv
. venv/bin/activate (venv\Scripts\activate in Windows)
pip install -r requirements.txt

Note: if you failed in pip install -r requirements.txt in Windows, try to install package binaries directly:

Init database

Create database with name your_project_name and encoding utf8.

Update SQLALCHEMY_DATABASE_URI in config/development.py as needed.

Then init tables:

flask db upgrade

Run app

Run local server:

flask run

Scaffold commands

turbo new <project>
turbo new --api <project>
turbo new controller <controller>
turbo new action <controller> <action> [-t]
turbo new form <form>
turbo new model <model>
turbo new macro <category> <macro>
turbo new macro <macro>
turbo -v
turbo -h

First Production Deploy

Config server

Install mysql-server, python-virtualenv, git, supervisor, nginx, g++, python-dev, libmysqlclient-dev, libxml2-dev, libxslt-dev on your server.

Install requirements

git clone **.git
cd <your_project_dir>
virtualenv venv
. venv/bin/activate
pip install -r requirements.txt

Config app

Save config/production_sample.py as config/production.py, update configs in config/production.py as needed and transfer it to server.

Note: remember to update SECRET_KEY in config/production.py! You can generate random secret key as follows:

>>> import os
>>> os.urandom(24)

Init database

Create database with name your_project_name and encoding utf8.

And run:

export MODE=PRODUCTION
flask db upgrade

Copy config files

Update project root path as needed in deploy/nginx.conf and deploy/supervisor.conf.

cp deploy/flask_env.sh /etc/profile.d/
cp deploy/nginx.conf /etc/nginx/conf.d/<your_project_name>.conf
cp deploy/supervisor.conf /etc/supervisor/conf.d/<your_project_name>.conf

Start app

service nginx restart
service supervisor restart

Daily Production Deploy

Update HOST_STRING in config with the format user@ip.

Commit your codes and run:

git push && fab deploy

P.S. If you wanna to deploy flask with Apache2, see this post.

License

MIT