diff --git a/build.gradle b/build.gradle
index c986793fc569c7151e4563cb218a7b693e8c007f..6817b7d18c416efe75b655cd2184474ca4daa1b6 100644
--- a/build.gradle
+++ b/build.gradle
@@ -17,6 +17,8 @@ apply from: project(":nshmp-lib").file("gradle/spotless.gradle")
 sourceCompatibility = JavaVersion.VERSION_11
 compileJava.options.encoding = "UTF-8"
 
+mainClassName = "gov.usgs.earthquake.nshmp.www.Application"
+
 repositories {
   jcenter()
 }
@@ -38,6 +40,10 @@ dependencies {
   runtimeOnly "io.micronaut:micronaut-runtime-osx"
   runtimeOnly "ch.qos.logback:logback-classic:${logbackVersion}"
 
+  // Swagger
+  annotationProcessor("io.micronaut.configuration:micronaut-openapi:${swaggerVersion}")
+  implementation("io.swagger.core.v3:swagger-annotations:${swaggerVersion}")
+
   // junit
   testAnnotationProcessor "io.micronaut:micronaut-inject-java:${mnVersion}"
   testImplementation platform("io.micronaut:micronaut-bom:${mnVersion}")
@@ -78,7 +84,6 @@ test {
   }
 
   filter {
-    excludeTestsMatching "gov.usgs.earthquake.nshmp.www.BasinTermControllerTests"
     excludeTestsMatching "gov.usgs.earthquake.nshmp.www.FaultSectionsControllerTests"
   }
 }
@@ -89,16 +94,17 @@ jacocoTestReport {
     html.enabled true
   }
 }
-
 check.dependsOn jacocoTestReport
 
-mainClassName = "gov.usgs.earthquake.nshmp.www.Application"
-
 shadowJar {
   mergeServiceFiles()
 }
 
-tasks.withType(JavaCompile){
+tasks.withType(JavaCompile) {
+  options.fork = true
+  options.forkOptions.jvmArgs << "-Dmicronaut.openapi.views.spec=" +
+      "swagger-ui.enabled=true," +
+      "swagger-ui.layout=BaseLayout"
   options.encoding = "UTF-8"
   options.compilerArgs.add("-parameters")
 }
diff --git a/gradle.properties b/gradle.properties
index a8d9a98087726ce92ffb7b85e220e01ed399f13c..e6363b6f59e81e8f3283dfbb68577a5a5eb05d19 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -2,3 +2,4 @@ jacksonVersion = 2.9.0
 junitVersion = 5.5.2
 logbackVersion = 1.2.3
 mnVersion = 1.3.2
+swaggerVersion = 1.4.0