diff --git a/README.rst b/README.rst
index 4f83f20b4f532bfe4012618558cc95ba3b9d5ef8..5174f923a994c0632c64a28e626d3588fc5dc7ad 100644
--- a/README.rst
+++ b/README.rst
@@ -14,6 +14,7 @@ Features
 - Procfile for deploying to a PaaS (e.g. Heroku)
 - nose for testing
 - A simple ``manage.py`` script.
+- CSS and JS minification using Flask-Assets
 - Easily switch between development and production environments through the MYFLASKAPP_ENV system  variable.
 
 Screenshots
diff --git a/{{cookiecutter.repo_name}}/.gitignore b/{{cookiecutter.repo_name}}/.gitignore
index 2a88a2413c96898a122ee20fd73bd5d5d51cf80f..19a1119b8f840c12aab9ce4e2564b0d02f5b76e8 100644
--- a/{{cookiecutter.repo_name}}/.gitignore
+++ b/{{cookiecutter.repo_name}}/.gitignore
@@ -40,3 +40,9 @@ output/*/index.html
 
 # Sphinx
 docs/_build
+
+.webassets-cache
+
+# Virtualenvs
+env
+env*
diff --git a/{{cookiecutter.repo_name}}/requirements/prod.txt b/{{cookiecutter.repo_name}}/requirements/prod.txt
index 149deabe5ffc9b76b93e5916db2441d84fd97ee7..b8f4800ed241d18a9eb18fcbbfc7d0a2b8926ede 100644
--- a/{{cookiecutter.repo_name}}/requirements/prod.txt
+++ b/{{cookiecutter.repo_name}}/requirements/prod.txt
@@ -1,12 +1,25 @@
 # Everything that needed in production
+
+# Flask
 Flask==0.10.1
-Flask-SQLAlchemy==1.0
-Flask-WTF==0.9.2
-Jinja2==2.7
 MarkupSafe==0.18
+Werkzeug==0.9.4
+Jinja2==2.7
+itsdangerous==0.23
+
+# Database
+Flask-SQLAlchemy==1.0
 SQLAlchemy==0.8.2
+
+# Forms
+Flask-WTF==0.9.2
 WTForms==1.0.4
-Werkzeug==0.9.4
+
+# Deployment
 gunicorn==17.5
-itsdangerous==0.23
 wsgiref==0.1.2
+
+# Assets
+Flask-Assets==0.8
+cssmin>=0.1.4
+jsmin>=2.0.4
diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/app.py b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/app.py
index a2e833a6aabfcd15c89a4fd2fbd4015f46a59482..88947a0892e77c8af69b2caa051ae3b684be3d19 100644
--- a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/app.py
+++ b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/app.py
@@ -2,6 +2,10 @@
 import os
 from flask import Flask
 from flask.ext.sqlalchemy import SQLAlchemy
+from flask.ext.assets import Environment
+from webassets.loaders import PythonLoader
+
+from {{cookiecutter.repo_name}} import assets
 
 app = Flask(__name__)
 # The environment variable, either 'prod' or 'dev'
@@ -11,3 +15,10 @@ app.config.from_object('{{cookiecutter.repo_name}}.settings.{env}Config'
                         .format(env=env.capitalize()))
 app.config['ENV'] = env
 db = SQLAlchemy(app)
+
+# Register asset bundles
+assets_env = Environment()
+assets_env.init_app(app)
+assets_loader = PythonLoader(assets)
+for name, bundle in assets_loader.load_bundles().iteritems():
+    assets_env.register(name, bundle)
diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/assets.py b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/assets.py
new file mode 100644
index 0000000000000000000000000000000000000000..f751629e9e2d4f1144a3706f2b2a4f5a0f9e4ba7
--- /dev/null
+++ b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/assets.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+from flask.ext.assets import Bundle
+
+common_css = Bundle(
+    "libs/bootstrap3/css/bootstrap.min.css",
+    "css/style.css",
+    filters="cssmin",
+    output="public/css/common.css"
+)
+
+common_js = Bundle(
+    "libs/jquery2/jquery-2.0.3.min.js",
+    "libs/bootstrap3/js/bootstrap.min.js",
+    "js/plugins.js",
+    Bundle(
+        "js/script.js",
+        filters="jsmin"
+    ),
+    output="public/js/common.js"
+)
diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/main.py b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/main.py
index 6e6f8cdb699310c1456b3e0ccbe04d7c7a0d448f..153bad06908f85b4eb8bd5a1369c12d71e08da00 100644
--- a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/main.py
+++ b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/main.py
@@ -4,7 +4,7 @@
 Entry point for all things, to avoid circular imports.
 """
 import os
-from .app import app, db
+from .app import app, db, assets_env
 from .models import *
 from .views import *
 
diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/_layouts/base.html b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/_layouts/base.html
index de74c56853a46f46af0069a512a49b66002399b1..99cdbda449dc032b22ce2d8d1928a34450262754 100644
--- a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/_layouts/base.html
+++ b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/_layouts/base.html
@@ -20,9 +20,10 @@
   <!-- Mobile viewport optimized: h5bp.com/viewport -->
   <meta name="viewport" content="width=device-width">
 
-  <link rel="stylesheet" href="{{ url_for('static', filename='libs/bootstrap3/css/bootstrap.min.css') }}">
+  {% assets "common_css" %}
+    <link rel="stylesheet" href="{{ ASSET_URL }}">
+  {% endassets %}
 
-  <link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
   {% block css %}{% endblock %}
 
 </head>
@@ -58,17 +59,13 @@
 
 {% include "_layouts/footer.html" %}
 
-
 <!-- JavaScript at the bottom for fast page loading -->
-<script src="{{ url_for('static', filename='libs/jquery2/jquery-2.0.3.min.js') }}"></script>
-<script src="{{ url_for('static', filename='libs/bootstrap3/js/bootstrap.min.js') }}"></script>
-
-
-<script src="{{ url_for('static', filename='js/plugins.js') }}"></script>
-<script src="{{ url_for('static', filename='js/script.js') }}"></script>
-
+{% assets "common_js" %}
+    <script type="text/javascript" src="{{ ASSET_URL }}"></script>
+{% endassets %}
+{% block js %}{% endblock %}
 <!-- end scripts -->
 {% endblock %}
 </body>
 </html>
-{% endraw %}
\ No newline at end of file
+{% endraw %}