diff --git a/{{cookiecutter.app_name}}/assets/js/main.js b/{{cookiecutter.app_name}}/assets/js/main.js
index bb66bea1a85706daa0c0e909ad00377ebe514e83..ed90e69617c404c566beff8c17490d63751617b5 100644
--- a/{{cookiecutter.app_name}}/assets/js/main.js
+++ b/{{cookiecutter.app_name}}/assets/js/main.js
@@ -7,6 +7,7 @@
 // JavaScript modules
 require('jquery');
 require('font-awesome-webpack');
+require('popper.js');
 require('bootstrap');
 
 // Your own code
diff --git a/{{cookiecutter.app_name}}/package.json b/{{cookiecutter.app_name}}/package.json
index da1d4d0ae783b37e46154b0de76cc318284d44a2..f1aa713c1616afd73069acc4f9a448ba5159216e 100644
--- a/{{cookiecutter.app_name}}/package.json
+++ b/{{cookiecutter.app_name}}/package.json
@@ -21,9 +21,10 @@
   },
   "homepage": "https://github.com/{{cookiecutter.github_username}}/{{cookiecutter.app_name}}#readme",
   "dependencies": {
-    "bootstrap": "^3.3.7",
+    "bootstrap": "^4.1.3",
     "font-awesome": "^4.7.0",
-    "jquery": "^3.2.1"
+    "jquery": "^3.2.1",
+    "popper.js": "^1.14.3"
   },
   "devDependencies": {
     "babel-core": "^6.25.0",
@@ -45,6 +46,7 @@
     "style-loader": "^0.23.0",
     "url-loader": "^1.0.1",
     "webpack": "^2.6.1",
-    "webpack-dev-server": "^3.1.5"
+    "webpack-dev-server": "^3.1.5",
+    "sync-exec": "^0.6.2"
   }
 }
diff --git a/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/templates/layout.html b/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/templates/layout.html
index 725edb443f2d17a99529a8fa7e5ff64a806fc4f9..b0a83de9c39816fff792f966ed1ba31b5d6bbd6a 100644
--- a/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/templates/layout.html
+++ b/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/templates/layout.html
@@ -32,28 +32,26 @@
 {% endwith %}
 
 <header>{% block header %}{% endblock %}</header>
-<div class="{% block content_class %}container{% endblock content_class %}">
 
-  <div role="main">
-    {% with messages = get_flashed_messages(with_categories=true) %}
-    {% if messages %}
-    <div class="row">
-      <div class="col-md-12">
-        {% for category, message in messages %}
-        <div class="alert alert-{{ category }}">
-          <a class="close" title="Close" href="#" data-dismiss="alert">&times;</a>
-         {{message}}
-        </div><!-- end .alert -->
-        {% endfor %}
-      </div><!-- end col-md -->
-    </div><!-- end row -->
-        {% endif %}
-    {% endwith %}
+<main role="main">
+{% with messages = get_flashed_messages(with_categories=true) %}
+{% if messages %}
+        <div class="row">
+          <div class="col-md-12">
+            {% for category, message in messages %}
+            <div class="alert alert-{{ category }}">
+              <a class="close" title="Close" href="#" data-dismiss="alert">&times;</a>
+             {{message}}
+            </div><!-- end .alert -->
+            {% endfor %}
+          </div><!-- end col-md -->
+        </div><!-- end row -->
+{% endif %}
+{% endwith %}
 
-    {% block content %}{% endblock %}
-  </div>
+{% block content %}{% endblock %}
+</main>
 
-</div><!-- end container -->
 
 {% include "footer.html" %}
 
diff --git a/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/templates/nav.html b/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/templates/nav.html
index faeec2d1abfe6ef04edf369d633ea3c10aada47a..29deea0352c42d86acf6f1b883c909b48e23a386 100644
--- a/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/templates/nav.html
+++ b/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/templates/nav.html
@@ -1,49 +1,50 @@
 {% raw %}
-<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
-  <div class="container">
+<nav class="navbar navbar-expand-lg navbar-dark bg-dark fixed-top">
+  <a class="navbar-brand" href="{{ url_for('public.home') }}">
+    {% endraw %} {{cookiecutter.project_name}} {% raw %}
+  </a>
+  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent"
+    aria-expanded="false" aria-label="Toggle navigation">
+    <span class="navbar-toggler-icon"></span>
+  </button>
 
-  <!-- Brand and toggle get grouped for better mobile display -->
-  <div class="navbar-header">
-    <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
-      <span class="sr-only">Toggle navigation</span>
-      <span class="icon-bar"></span>
-      <span class="icon-bar"></span>
-      <span class="icon-bar"></span>
-    </button>
-    <a class="navbar-brand" href="{{ url_for('public.home') }}">
-{% endraw %}
-      {{cookiecutter.project_name}}
-{% raw %}
-    </a>
-  </div>
-  <!-- Collect the nav links, forms, and other content for toggling -->
-  <div class="collapse navbar-collapse navbar-ex1-collapse">
-    <ul class="nav navbar-nav">
-      <li><a href="{{ url_for('public.home') }}">Home</a></li>
-      <li><a href="{{ url_for('public.about') }}">About</a></li>
+  <div class="collapse navbar-collapse" id="navbarSupportedContent">
+    <ul class="navbar-nav mr-auto">
+      <li class="nav-item active">
+        <a class="nav-link" href="{{ url_for('public.home') }}">Home
+          <span class="sr-only">(current)</span>
+        </a>
+      </li>
+      <li class="nav-item">
+        <a class="nav-link" href="{{ url_for('public.about') }}">About</a>
+      </li>
     </ul>
     {% if current_user and current_user.is_authenticated %}
-    <ul class="nav navbar-nav navbar-right">
-        <li>
-            <p class="navbar-text"><a class="navbar-link" href="{{ url_for('user.members') }}">Logged in as {{ current_user.username }}</a></p>
-        </li>
-        <li><a class="navbar-link" href="{{ url_for('public.logout') }}"><i class="fa fa-sign-out"></i></a></li>
-
+    <ul class="navbar-nav my-auto">
+      <li class="nav-item active">
+        <a class="nav-link" href="{{ url_for('user.members') }}">Logged in as {{ current_user.username }}</a>
+      </li>
+      <li class="nav-item">
+        <a class="nav-link" href="{{ url_for('public.logout') }}">
+          <i class="fa fa-sign-out"></i>
+        </a>
+      </li>
     </ul>
     {% elif form %}
-    <ul class="nav navbar-nav navbar-right">
-      <li><a href="{{ url_for('public.register') }}">Create account</a></li>
-    </ul>
-    <form id="loginForm" method="POST" class="navbar-form form-inline navbar-right" action="/" role="login">
-      <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/>
-      <div class="form-group">
-        {{ form.username(placeholder="Username", class_="form-control") }}
-        {{ form.password(placeholder="Password", class_="form-control") }}
+    <form class="form-inline" id="loginForm" method="POST" action="/" role="login">
+      <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
+      <div class="input-group mb-2 mr-sm-2">
+        {{ form.username(placeholder="Username", class_="form-control mr-sm-1 my-auto") }} {{ form.password(placeholder="Password",
+        class_="form-control mr-sm-1 my-auto") }}
+        <button class="btn btn-light btn-primary m-auto" type="submit">Login</button>
       </div>
-      <button type="submit" class="btn btn-default">Log in</button>
     </form>
+    <ul class="navbar-nav my-auto">
+      <li class="nav-item">
+        <a class="nav-link navbar-text" href="{{ url_for('public.register') }}">Create account</a>
+      </li>
+    </ul>
     {% endif %}
   </div><!-- /.navbar-collapse -->
-  </div><!-- /.container -->
 </nav>
-{% endraw %}
+{% endraw %}
\ No newline at end of file
diff --git a/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/templates/public/about.html b/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/templates/public/about.html
index 1d31fad28b202ca73140b3ccdd0423d39fe40068..4dcb7c1da5cc6d6339d94292dac9ccb7fab53a60 100644
--- a/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/templates/public/about.html
+++ b/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/templates/public/about.html
@@ -2,10 +2,10 @@
 {% extends "layout.html" %}
 
 {% block content %}
-<div class="body-content">
+<div class="container">
+    <h1 class="mt-5">About</h1>
     <div class="row">
-      <h1>About</h1>
-      <p>This template was created by <a href="http://github.com/sloria/">Steven Loria</a> for use with the <a href="http://github.com/audreyr/cookiecutter/">cookiecutter</a> package by <a href="http://github.com/audreyr/">Audrey Roy</a>.</p>
+      <p class="lead">This template was created by <a href="http://github.com/sloria/">Steven Loria</a> for use with the <a href="http://github.com/audreyr/cookiecutter/">cookiecutter</a> package by <a href="http://github.com/audreyr/">Audrey Roy</a>.</p>
     </div>
 </div>
 {% endblock %}
diff --git a/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/templates/public/home.html b/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/templates/public/home.html
index 3485a6da722d7097202acbd3aead74d4e22980c1..0a9cd83e88a90c0f769e85c09ca85ea82e60ddba 100644
--- a/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/templates/public/home.html
+++ b/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/templates/public/home.html
@@ -3,29 +3,31 @@
 {% block content %}
 <!-- Main jumbotron for a primary marketing message or call to action -->
 <div class="jumbotron">
-{% endraw %}
-  <h1>Welcome to {{ cookiecutter.project_name }}</h1>
-{% raw %}
-  <p>This is a starter Flask template. It includes Bootstrap 3, jQuery 2, Flask-SQLAlchemy, WTForms, and various testing utilities out of the box.</p>
-  <p><a href="https://github.com/sloria/cookiecutter-flask" class="btn btn-primary btn-large">Learn more &raquo;</a></p>
+    <div class="container">
+    {% endraw %}
+      <h1 class="display-3">Welcome to {{ cookiecutter.project_name }}</h1>
+    {% raw %}
+      <p>This is a starter Flask template. It includes Bootstrap 4, jQuery 3, Flask-SQLAlchemy, WTForms, and various testing utilities out of the box.</p>
+      <p><a href="https://github.com/sloria/cookiecutter-flask" class="btn btn-primary btn-large">Learn more &raquo;</a></p>
+    </div>
 </div><!-- /.jumbotron -->
 
-<div class="body-content">
+<div class="container">
   <div class="row">
     <div class="col-lg-4">
-      <h2><i class="fa fa-code"></i> Bootstrap 3</h2>
+      <h2><i class="fa fa-code"></i> Bootstrap 4</h2>
       <p>Sleek, intuitive, and powerful mobile-first front-end framework for faster and easier web development.</p>
-      <p><a class="btn btn-default" href="http://getbootstrap.com/">Official website &raquo;</a></p>
+      <p><a class="btn btn-outline-secondary" href="http://getbootstrap.com/">Official website &raquo;</a></p>
     </div>
     <div class="col-lg-4">
       <h2><i class="fa fa-flask"></i> SQLAlchemy</h2>
       <p>SQLAlchemy is the Python SQL toolkit and Object Relational Mapper that gives application developers the full power and flexibility of SQL.</p>
-      <p><a href="http://www.sqlalchemy.org/" class="btn btn-default">Official website &raquo;</a></p>
+      <p><a href="http://www.sqlalchemy.org/" class="btn btn-outline-secondary">Official website &raquo;</a></p>
    </div>
     <div class="col-lg-4">
       <h2><i class="fa fa-edit"></i> WTForms</h2>
       <p>WTForms is a flexible forms validation and rendering library for python web development.</p>
-      <p><a href="http://wtforms.simplecodes.com/" class="btn btn-default">Official website &raquo;</a></p>
+      <p><a href="http://wtforms.simplecodes.com/" class="btn btn-outline-secondary">Official website &raquo;</a></p>
     </div>
   </div><!-- /.row -->
 </div>
diff --git a/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/templates/public/register.html b/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/templates/public/register.html
index 7a970350d123f681f2546c3160cb52f2d619b9a5..d36caa5d2308ece72b6979694b694f22eaee53e6 100644
--- a/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/templates/public/register.html
+++ b/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/templates/public/register.html
@@ -2,7 +2,7 @@
 {% extends "layout.html" %}
 {% block content %}
 <div class="container-narrow">
-  <h1>Register</h1>
+  <h1 class="mt-5">Register</h1>
     <br/>
     <form id="registerForm" class="form form-register" method="POST" action="" role="form">
            {{ form.csrf_token }}
@@ -13,6 +13,7 @@
             <div class="form-group">
                 {{form.email.label}}
                 {{form.email(placeholder="Email", class_="form-control")}}
+                <small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small>
             </div>
             <div class="form-group">
                 {{form.password.label}}
@@ -22,7 +23,7 @@
                 {{form.confirm.label}}
                 {{form.confirm(placeholder="Password (again)", class_="form-control")}}
             </div>
-            <p><input class="btn btn-default btn-submit" type="submit" value="Register"></p>
+            <p><input class="btn btn-primary" type="submit" value="Register"></p>
     </form>
     <p><em>Already registered?</em> Click <a href="/">here</a> to login.</p>
 </div>
diff --git a/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/templates/users/members.html b/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/templates/users/members.html
index 5179bfb62b6ac2f9bf6eb22677d51f9d14c7157b..6bd2c266834d9875501a8c6adf810574c75614a6 100644
--- a/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/templates/users/members.html
+++ b/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/templates/users/members.html
@@ -1,7 +1,9 @@
 {% raw %}
 {% extends "layout.html" %}
 {% block content %}
-    <h1>Welcome {{ current_user.username }}</h1>
-    <h3>This is the members-only page.</h3>
+    <div class="container">
+        <h1>Welcome {{ current_user.username }}</h1>
+        <h3>This is the members-only page.</h3>
+    </div>
 {% endblock %}
 {% endraw%}