Flask application generator for boosting your development.
- 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.
- Batteries Included
- Use Flask-SQLAlchemy and Flask-Migrate as database tools.
- Use Flask-WTF to validate forms.
- Use Flask-Script to help writing scripts.
- Use permission to define permissions.
- Use Bootstrap as frontend framework.
- Use Bower to manage frontend packages.
- Use Gulp and FIS to compile static assets.
- 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.
- Scaffold Commands
- Generate project files:
boost new <project>
- Generate controller files:
boost new controller <controller>
- Generate action files:
boost new action <controller> <action> [-t]
- Generate form files:
boost new form <form>
- Generate model files:
boost new model <model>
- Generate macro files:
boost new macro <category> <macro>
orboost new macro <macro>
- Generate project files:
pip install flask-boost
boost new <your_project_name>
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:
- pycrpyto: try to follow this article compiling-pycrypto-on-win7-64, or get the complied pycrypyto library directly: archive_pycrpyto_library.
Create database with name your_project_name
and encoding utf8
.
Update SQLALCHEMY_DATABASE_URI
in config/development.py
as needed.
Then init tables:
python manage.py db upgrade
Run local server:
python manage.py run
Install Node.js first and then install Bower, FIS and Gulp globally:
npm install -g bower npm install -g fis npm install -g fis-postpackager-simple npm install -g gulp
Install local packages:
npm install bower install
gulp watch
Install LiveReload browser extension from here.
And use python manage.py live
instead of python manage.py run
to start app.
boost new <project> boost new controller <controller> boost new action <controller> <action> [-t] boost new form <form> boost new model <model> boost new macro <category> <macro> boost new macro <macro> boost -v boost -h
PyCharm is the recommended IDE for Flask-Boost.
Recommended preferences:
- In
Preferences -> Project -> Project Interpreter
, setvenv
as project interpreter. - In
Preferences -> Project -> Project Structure
, setapplication/pages
andapplication/macros
as template folders, setapplication
andapplication/static/css
as resource folders. - In
Language & Frameworks -> JavaScript -> Bower
, setbower.json
as bower.json.
Recommended PyCharm plugins:
- .ignore
- Markdown
- Bootstrap3
Install mysql-server, python-virtualenv, git, supervisor, nginx, g++, python-dev, libmysqlclient-dev, libxml2-dev, libxslt-dev on your server.
git clone **.git cd <your_project_dir> virtualenv venv . venv/bin/activate pip install -r requirements.txt
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)
Create database with name your_project_name
and encoding utf8
.
And run:
export MODE=PRODUCTION python manage.py db upgrade
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
Install Node.js first and then install Bower, FIS and Gulp globally:
npm install -g bower npm install -g fis npm install -g fis-postpackager-simple npm install -g gulp
Install local packages:
npm install bower install
Then:
gulp python manage.py build
service nginx restart service supervisor restart
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.
MIT