adding geronimo-microprofile-site
diff --git a/geronimo-microprofile-site/pom.xml b/geronimo-microprofile-site/pom.xml
new file mode 100644
index 0000000..35de34e
--- /dev/null
+++ b/geronimo-microprofile-site/pom.xml
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="
+          http://maven.apache.org/POM/4.0.0
+          http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <parent>
+    <artifactId>geronimo-microprofile</artifactId>
+    <groupId>org.apache.geronimo</groupId>
+    <version>1.0.0-SNAPSHOT</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+
+  <artifactId>geronimo-microprofile-site</artifactId>
+  <name>Geronimo Microprofile :: Site Generator</name>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.geronimo.specs</groupId>
+      <artifactId>geronimo-json_1.0_spec</artifactId>
+      <version>1.0-alpha-1</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.johnzon</groupId>
+      <artifactId>johnzon-jsonb</artifactId>
+      <version>1.1.8</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.cxf</groupId>
+      <artifactId>cxf-rt-rs-client</artifactId>
+      <version>3.2.5</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-text</artifactId>
+      <version>1.4</version>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.jbake</groupId>
+        <artifactId>jbake-maven-plugin</artifactId>
+        <version>0.3.1</version>
+        <executions>
+          <execution>
+            <id>generate-site</id>
+            <phase>pre-site</phase>
+            <goals>
+              <goal>generate</goal>
+            </goals>
+          </execution>
+        </executions>
+        <configuration>
+        </configuration>
+        <dependencies>
+          <dependency>
+            <groupId>org.asciidoctor</groupId>
+            <artifactId>asciidoctorj</artifactId>
+            <version>1.5.4.1</version>
+          </dependency>
+          <dependency>
+            <groupId>org.freemarker</groupId>
+            <artifactId>freemarker</artifactId>
+            <version>2.3.28</version>
+          </dependency>
+        </dependencies>
+      </plugin>
+    </plugins>
+  </build>
+
+  <distributionManagement>
+    <repository>
+      <id>localhost</id>
+      <url>file://${project.basedir}/target/deploy/</url>
+    </repository>
+    <snapshotRepository>
+      <id>localhost</id>
+      <url>file://${project.basedir}/target/deploy/</url>
+    </snapshotRepository>
+  </distributionManagement>
+</project>
\ No newline at end of file
diff --git a/geronimo-microprofile-site/src/main/java/org/apache/geronimo/microprofile/site/Downloads.java b/geronimo-microprofile-site/src/main/java/org/apache/geronimo/microprofile/site/Downloads.java
new file mode 100644
index 0000000..4e1d407
--- /dev/null
+++ b/geronimo-microprofile-site/src/main/java/org/apache/geronimo/microprofile/site/Downloads.java
@@ -0,0 +1,346 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.geronimo.microprofile.site;
+
+import static java.time.format.DateTimeFormatter.RFC_1123_DATE_TIME;
+import static java.util.Arrays.asList;
+import static java.util.Optional.ofNullable;
+import static java.util.stream.Collectors.toList;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.sql.Date;
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.ZoneOffset;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Objects;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Stream;
+
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+
+import org.apache.commons.text.WordUtils;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
+
+// regenerate when needed only, useless to do it for any site update
+public class Downloads {
+
+    private static final SAXParserFactory FACTORY = SAXParserFactory.newInstance();
+
+    private static final String MVN_BASE = "http://repo.maven.apache.org/maven2/";
+
+    private static final long KILO_RATION = 1024;
+
+    static {
+        FACTORY.setNamespaceAware(false);
+        FACTORY.setValidating(false);
+    }
+
+    private Downloads() {
+        // no-op
+    }
+
+    public static void main(final String[] args) {
+
+        System.setProperty("java.util.concurrent.ForkJoinPool.common.parallelism", "512");
+
+        Stream.of("org/apache/geronimo/config/geronimo-config-impl", "org/apache/geronimo/safeguard/safeguard-impl",
+                "org/apache/geronimo/geronimo-jwt-auth", "org/apache/geronimo/geronimo-opentracing",
+                "org/apache/geronimo/geronimo-health", "org/apache/geronimo/geronimo-metrics",
+                "org/apache/geronimo/geronimo-openapi-impl").flatMap(Downloads::toVersions).map(v -> v.extensions("jar"))
+                .flatMap(Downloads::toDownloadable).parallel().map(Downloads::fillDownloadable).filter(Objects::nonNull)
+                .sorted((o1, o2) -> {
+                    final int nameComp = o1.name.compareTo(o2.name);
+                    if (nameComp != 0) {
+                        return nameComp;
+                    }
+
+                    final int versionComp = o2.version.compareTo(o1.version);
+                    if (versionComp != 0) {
+                        return versionComp;
+                    }
+
+                    final long dateComp = LocalDateTime.parse(o2.date, RFC_1123_DATE_TIME).toInstant(ZoneOffset.UTC)
+                            .toEpochMilli()
+                            - LocalDateTime.parse(o1.date, RFC_1123_DATE_TIME).toInstant(ZoneOffset.UTC).toEpochMilli();
+                    if (dateComp != 0) {
+                        return (int) dateComp;
+                    }
+
+                    return o1.url.compareTo(o2.url);
+                }).peek(Downloads::printRow).collect(toList());
+    }
+
+    private static void printRow(final Download d) {
+        System.out.println("" + "|" + d.name.replace("Apache ", "") + (d.classifier.isEmpty() ? "" : (" " + d.classifier)) + "|"
+                + d.version + "|"
+                + new SimpleDateFormat("d MMM yyyy")
+                        .format(Date.from(LocalDateTime.parse(d.date, RFC_1123_DATE_TIME).toInstant(ZoneOffset.UTC)))
+                + "|" + d.size + " kB " + "|" + d.format.toUpperCase() + "| " + d.url + "[icon:download[] "
+                + d.format.toUpperCase() + "] " + d.sha1 + "[icon:download[] SHA1] ");
+    }
+
+    private static Download fillDownloadable(final Download download) {
+        try {
+            final URL url = new URL(download.url);
+            final HttpURLConnection connection = HttpURLConnection.class.cast(url.openConnection());
+            connection.setConnectTimeout((int) TimeUnit.SECONDS.toMillis(30));
+            final int responseCode = connection.getResponseCode();
+            if (responseCode != HttpURLConnection.HTTP_OK) {
+                if (HttpURLConnection.HTTP_NOT_FOUND != responseCode) {
+                    System.err.println("Got " + responseCode + " for " + download.url);
+                }
+                return null;
+            }
+
+            download.setDate(connection.getHeaderField("Last-Modified").replaceAll(" +", " "));
+            download.setSize(toMega(ofNullable(connection.getHeaderField("Content-Length")).map(Long::parseLong).orElse(0L),
+                    ofNullable(connection.getHeaderField("Accept-Ranges")).orElse("bytes")));
+
+            connection.getInputStream().close();
+        } catch (final IOException e) {
+            e.printStackTrace();
+            return null;
+        }
+        return download;
+    }
+
+    private static long toMega(final long length, final String bytes) {
+        if (!"bytes".equalsIgnoreCase(bytes)) {
+            throw new IllegalArgumentException("Not handled unit: " + bytes);
+        }
+        return length / KILO_RATION;
+    }
+
+    private static Stream<Download> toDownloadable(final Version version) {
+        final String base = version.base;
+        final String artifactId = base.substring(base.lastIndexOf('/') + 1);
+        final String artifactBase = version.base + "/" + version.version + "/" + artifactId + "-" + version.version;
+        return version.extensions.stream()
+                .flatMap(e -> (version.classifiers.isEmpty() ? Stream.of(new ArtifactDescription("", e))
+                        : version.classifiers.stream().map(c -> new ArtifactDescription(c, e))))
+                .map(a -> toDownload(artifactId, a.classifier, version.version, a.extension,
+                        artifactBase + (a.classifier.isEmpty() ? '.' + a.extension : ('-' + a.classifier + '.' + a.extension))));
+    }
+
+    private static Download toDownload(final String artifactId, final String classifier, final String version,
+            final String format, final String url) {
+        return new Download(
+                WordUtils.capitalize(artifactId.replace('-', ' ')).replace("Openejb", "OpenEJB").replace("Tomee", "TomEE"),
+                classifier, version, format, url, url + ".sha1", url + ".asc");
+    }
+
+    private static Stream<Version> toVersions(final String baseUrl) {
+        final QuickMvnMetadataParser handler = new QuickMvnMetadataParser();
+        final String base = MVN_BASE + baseUrl;
+        try (final InputStream stream = new URL(base + "/maven-metadata.xml").openStream()) {
+            final SAXParser parser = FACTORY.newSAXParser();
+            parser.parse(stream, handler);
+            return handler.foundVersions.stream().map(v -> new Version(base, v)).parallel();
+        } catch (final Exception e) {
+            if (Boolean.getBoolean("debug")) {
+                e.printStackTrace();
+            }
+            return Stream.empty();
+        }
+    }
+
+    public static class Version {
+
+        private final String base;
+
+        private final String version;
+
+        private final Collection<String> classifiers = new ArrayList<>();
+
+        private final Collection<String> extensions = new ArrayList<>();
+
+        public Version(final String base, final String version) {
+            this.base = base;
+            this.version = version;
+        }
+
+        private Version extensions(final String... values) {
+            extensions.addAll(asList(values));
+            return this;
+        }
+
+        private Version classifiers(final String... values) {
+            classifiers.addAll(asList(values));
+            return this;
+        }
+
+        public String getBase() {
+            return base;
+        }
+
+        public String getVersion() {
+            return version;
+        }
+
+        public Collection<String> getClassifiers() {
+            return classifiers;
+        }
+
+        public Collection<String> getExtensions() {
+            return extensions;
+        }
+    }
+
+    public static class ArtifactDescription {
+
+        private final String classifier;
+
+        private final String extension;
+
+        public ArtifactDescription(final String classifier, final String extension) {
+            this.classifier = classifier;
+            this.extension = extension;
+        }
+
+        public String getClassifier() {
+            return classifier;
+        }
+
+        public String getExtension() {
+            return extension;
+        }
+    }
+
+    public static class Download {
+
+        private final String name;
+
+        private final String classifier;
+
+        private final String version;
+
+        private final String format;
+
+        private final String url;
+
+        private final String sha1;
+
+        private final String asc;
+
+        private String date;
+
+        private long size;
+
+        public Download(final String name, final String classifier, final String version, final String format, final String url,
+                final String sha1, final String asc) {
+            this.name = name;
+            this.classifier = classifier;
+            this.version = version;
+            this.format = format;
+            this.url = url;
+            this.sha1 = sha1;
+            this.asc = asc;
+        }
+
+        public String getName() {
+            return name;
+        }
+
+        public String getClassifier() {
+            return classifier;
+        }
+
+        public String getVersion() {
+            return version;
+        }
+
+        public String getFormat() {
+            return format;
+        }
+
+        public String getUrl() {
+            return url;
+        }
+
+        public String getSha1() {
+            return sha1;
+        }
+
+        public String getAsc() {
+            return asc;
+        }
+
+        public String getDate() {
+            return date;
+        }
+
+        public void setDate(final String date) {
+            this.date = date;
+        }
+
+        public long getSize() {
+            return size;
+        }
+
+        public void setSize(final long size) {
+            this.size = size;
+        }
+    }
+
+    private static class QuickMvnMetadataParser extends DefaultHandler {
+
+        private boolean versioning = false;
+
+        private boolean versions = false;
+
+        private StringBuilder version;
+
+        private final Collection<String> foundVersions = new ArrayList<>();
+
+        @Override
+        public void startElement(final String uri, final String localName, final String name, final Attributes attributes)
+                throws SAXException {
+            if ("versioning".equalsIgnoreCase(name)) {
+                versioning = true;
+            } else if ("versions".equalsIgnoreCase(name)) {
+                versions = true;
+            } else if (versioning && versions && "version".equalsIgnoreCase(name)) {
+                version = new StringBuilder();
+            }
+        }
+
+        @Override
+        public void characters(final char[] ch, final int start, final int length) {
+            if (version != null) {
+                version.append(new String(ch, start, length));
+            }
+        }
+
+        public void endElement(final String uri, final String localName, final String name) {
+            if ("versioning".equalsIgnoreCase(name)) {
+                versioning = false;
+            } else if ("versions".equalsIgnoreCase(name)) {
+                versions = false;
+            } else if ("version".equalsIgnoreCase(name)) {
+                foundVersions.add(version.toString());
+            }
+        }
+    }
+}
diff --git a/geronimo-microprofile-site/src/main/jbake/content/config.adoc b/geronimo-microprofile-site/src/main/jbake/content/config.adoc
new file mode 100644
index 0000000..6a85de0
--- /dev/null
+++ b/geronimo-microprofile-site/src/main/jbake/content/config.adoc
@@ -0,0 +1,37 @@
+= Apache Geronimo Config
+:jbake-date: 2018-07-24
+:icons: font
+
+Apache Geronimo Config is an implementation of Microprofile Config.
+This specification intends to standardize the way you configure an application
+and decouple the write side of the data (sources) from the read side in your application.
+
+== Dependencies
+
+=== API
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.eclipse.microprofile.config</groupId>
+  <artifactId>microprofile-config-api</artifactId>
+  <version>1.2.1</version>
+  <exclusions>
+    <exclusion>
+      <groupId>org.osgi</groupId>
+      <artifactId>org.osgi.annotation.versioning</artifactId>
+    </exclusion>
+  </exclusions>
+</dependency>
+----
+
+=== Implementation
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.geronimo.config</groupId>
+  <artifactId>geronimo-config-impl</artifactId>
+  <version>1.2</version>
+</dependency>
+----
\ No newline at end of file
diff --git a/geronimo-microprofile-site/src/main/jbake/content/downloads.adoc b/geronimo-microprofile-site/src/main/jbake/content/downloads.adoc
new file mode 100644
index 0000000..7506457
--- /dev/null
+++ b/geronimo-microprofile-site/src/main/jbake/content/downloads.adoc
@@ -0,0 +1,19 @@
+= Downloads
+:jbake-date: 2018-07-24
+:icons: font
+
+[.table.table-bordered,options="header"]
+|===
+
+|Name|Version|Date|Size|Type|Links
+
+|Geronimo Config Impl|1.1|2 janv. 2018|59 MB |JAR| http://repo.maven.apache.org/maven2/org/apache/geronimo/config/geronimo-config-impl/1.1/geronimo-config-impl-1.1.jar[icon:download[] JAR] http://repo.maven.apache.org/maven2/org/apache/geronimo/config/geronimo-config-impl/1.1/geronimo-config-impl-1.1.jar.sha1[icon:download[] SHA1]
+|Geronimo Openapi Impl|1.0.0|16 juil. 2018|157 MB |JAR| http://repo.maven.apache.org/maven2/org/apache/geronimo/geronimo-openapi-impl/1.0.0/geronimo-openapi-impl-1.0.0.jar[icon:download[] JAR] http://repo.maven.apache.org/maven2/org/apache/geronimo/geronimo-openapi-impl/1.0.0/geronimo-openapi-impl-1.0.0.jar.sha1[icon:download[] SHA1]
+|Safeguard Impl|1.0|6 janv. 2018|64 MB |JAR| http://repo.maven.apache.org/maven2/org/apache/geronimo/safeguard/safeguard-impl/1.0/safeguard-impl-1.0.jar[icon:download[] JAR] http://repo.maven.apache.org/maven2/org/apache/geronimo/safeguard/safeguard-impl/1.0/safeguard-impl-1.0.jar.sha1[icon:download[] SHA1]
+|Geronimo Metrics|1.0.0|15 juin 2018|73 MB |JAR| http://repo.maven.apache.org/maven2/org/apache/geronimo/geronimo-metrics/1.0.0/geronimo-metrics-1.0.0.jar[icon:download[] JAR] http://repo.maven.apache.org/maven2/org/apache/geronimo/geronimo-metrics/1.0.0/geronimo-metrics-1.0.0.jar.sha1[icon:download[] SHA1]
+|Geronimo Config Impl|1.2|10 juin 2018|70 MB |JAR| http://repo.maven.apache.org/maven2/org/apache/geronimo/config/geronimo-config-impl/1.2/geronimo-config-impl-1.2.jar[icon:download[] JAR] http://repo.maven.apache.org/maven2/org/apache/geronimo/config/geronimo-config-impl/1.2/geronimo-config-impl-1.2.jar.sha1[icon:download[] SHA1]
+|Geronimo Health|1.0.0|16 juil. 2018|19 MB |JAR| http://repo.maven.apache.org/maven2/org/apache/geronimo/geronimo-health/1.0.0/geronimo-health-1.0.0.jar[icon:download[] JAR] http://repo.maven.apache.org/maven2/org/apache/geronimo/geronimo-health/1.0.0/geronimo-health-1.0.0.jar.sha1[icon:download[] SHA1]
+|Geronimo Jwt Auth|1.0.0|13 juin 2018|67 MB |JAR| http://repo.maven.apache.org/maven2/org/apache/geronimo/geronimo-jwt-auth/1.0.0/geronimo-jwt-auth-1.0.0.jar[icon:download[] JAR] http://repo.maven.apache.org/maven2/org/apache/geronimo/geronimo-jwt-auth/1.0.0/geronimo-jwt-auth-1.0.0.jar.sha1[icon:download[] SHA1]
+|Geronimo Config Impl|1.0|10 sept. 2017|53 MB |JAR| http://repo.maven.apache.org/maven2/org/apache/geronimo/config/geronimo-config-impl/1.0/geronimo-config-impl-1.0.jar[icon:download[] JAR] http://repo.maven.apache.org/maven2/org/apache/geronimo/config/geronimo-config-impl/1.0/geronimo-config-impl-1.0.jar.sha1[icon:download[] SHA1]
+
+|===
diff --git a/geronimo-microprofile-site/src/main/jbake/content/fault-tolerance.adoc b/geronimo-microprofile-site/src/main/jbake/content/fault-tolerance.adoc
new file mode 100644
index 0000000..dc90da5
--- /dev/null
+++ b/geronimo-microprofile-site/src/main/jbake/content/fault-tolerance.adoc
@@ -0,0 +1,37 @@
+= Apache Geronimo Safeguard
+:jbake-date: 2018-07-24
+:icons: font
+
+Apache Geronimo Safeguard intends to provide tools to ensure your application
+scaling is masterized and you can recover from part of your application os system
+(in a microservice architecture) failling.
+
+== Dependencies
+
+=== API
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.eclipse.microprofile.fault-tolerance</groupId>
+  <artifactId>microprofile-fault-tolerance-api</artifactId>
+  <version>1.0</version>
+  <exclusions>
+    <exclusion>
+      <groupId>org.osgi</groupId>
+      <artifactId>org.osgi.annotation.versioning</artifactId>
+    </exclusion>
+  </exclusions>
+</dependency>
+----
+
+=== Implementation
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.geronimo.safeguard</groupId>
+  <artifactId>safeguard-impl</artifactId>
+  <version>1.0</version>
+</dependency>
+----
\ No newline at end of file
diff --git a/geronimo-microprofile-site/src/main/jbake/content/health.adoc b/geronimo-microprofile-site/src/main/jbake/content/health.adoc
new file mode 100644
index 0000000..36ec396
--- /dev/null
+++ b/geronimo-microprofile-site/src/main/jbake/content/health.adoc
@@ -0,0 +1,41 @@
+= Apache Geronimo Health
+:jbake-date: 2018-07-24
+:icons: font
+
+Apache Geronimo Health is an implementation of Microprofile Health.
+It provides a way to implement and expose through HTTP healthchecks
+to ensure you application is functional.
+
+== Dependencies
+
+=== API
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.eclipse.microprofile.health</groupId>
+  <artifactId>microprofile-health-api</artifactId>
+  <version>1.0</version>
+  <exclusions>
+    <exclusion>
+      <groupId>javax.inject</groupId>
+      <artifactId>javax.inject</artifactId>
+    </exclusion>
+    <exclusion>
+      <groupId>org.osgi</groupId>
+      <artifactId>org.osgi.annotation.versioning</artifactId>
+    </exclusion>
+  </exclusions>
+</dependency>
+----
+
+=== Implementation
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.geronimo</groupId>
+  <artifactId>geronimo-health</artifactId>
+  <version>1.0.0</version>
+</dependency>
+----
diff --git a/geronimo-microprofile-site/src/main/jbake/content/index.adoc b/geronimo-microprofile-site/src/main/jbake/content/index.adoc
new file mode 100644
index 0000000..2b72a56
--- /dev/null
+++ b/geronimo-microprofile-site/src/main/jbake/content/index.adoc
@@ -0,0 +1,30 @@
+= Apache Geronimo And Microprofile
+:jbake-date: 2018-07-24
+:icons: font
+
+Apache Geronimo hosts several Microprofile Implementation.
+This site let's you get started with all of them.
+
+link:downloads.html[icon:download[] Downloads Area]
+
+Here are the available implementations:
+
+link:config.html[icon:database[] Config] |
+link:fault-tolerance.html[icon:exclamation-triangle[] Fault Tolerance (Safeguard)] |
+link:jwt-auth.html[icon:shield[] JWT Auth] |
+link:opentracing.html[icon:truck[] OpenTracing] |
+link:health.html[icon:medkit[] Health] |
+link:metrics.html[icon:balance-scale[] Metrics] |
+link:openapi.html[icon:briefcase[] OpenAPI]
+
+Note we also provide some pom aggregator to import all the stack at once:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.geronimo</groupId>
+  <artifactId>geronimo-microprofile-agrgegator</artifactId>
+  <version>1.0.0</version>
+  <type>pom</type>
+</dependency>
+----
diff --git a/geronimo-microprofile-site/src/main/jbake/content/jwt-auth.adoc b/geronimo-microprofile-site/src/main/jbake/content/jwt-auth.adoc
new file mode 100644
index 0000000..8da63cc
--- /dev/null
+++ b/geronimo-microprofile-site/src/main/jbake/content/jwt-auth.adoc
@@ -0,0 +1,36 @@
+= Apache Geronimo JWT Auth
+:jbake-date: 2018-07-24
+:icons: font
+
+Apache Geronimo JWT Auth is an implementation of Microprofile JWT Auth.
+It provides a way to validate and interact with a JWT metadata.
+
+== Dependencies
+
+=== API
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.eclipse.microprofile.jwt</groupId>
+  <artifactId>microprofile-jwt-auth-api</artifactId>
+  <version>1.1</version>
+  <exclusions>
+    <exclusion>
+      <groupId>org.osgi</groupId>
+      <artifactId>org.osgi.annotation.versioning</artifactId>
+    </exclusion>
+  </exclusions>
+</dependency>
+----
+
+=== Implementation
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.geronimo</groupId>
+  <artifactId>geronimo-jwt-auth</artifactId>
+  <version>1.0.0</version>
+</dependency>
+----
diff --git a/geronimo-microprofile-site/src/main/jbake/content/metrics.adoc b/geronimo-microprofile-site/src/main/jbake/content/metrics.adoc
new file mode 100644
index 0000000..f0b4f76
--- /dev/null
+++ b/geronimo-microprofile-site/src/main/jbake/content/metrics.adoc
@@ -0,0 +1,36 @@
+= Apache Geronimo Metrics
+:jbake-date: 2018-07-24
+:icons: font
+
+Apache Geronimo Metrics is an implementation of Microprofile Metrics.
+It is highly inspired from Codehale/Dropwizard metrics API and integrates with CDI.
+
+== Dependencies
+
+=== API
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.eclipse.microprofile.metrics</groupId>
+  <artifactId>microprofile-metrics-api</artifactId>
+  <version>1.1</version>
+  <exclusions>
+    <exclusion>
+      <groupId>org.osgi</groupId>
+      <artifactId>org.osgi.annotation.versioning</artifactId>
+    </exclusion>
+  </exclusions>
+</dependency>
+----
+
+=== Implementation
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.geronimo</groupId>
+  <artifactId>geronimo-metrics</artifactId>
+  <version>1.0.0</version>
+</dependency>
+----
diff --git a/geronimo-microprofile-site/src/main/jbake/content/openapi.adoc b/geronimo-microprofile-site/src/main/jbake/content/openapi.adoc
new file mode 100644
index 0000000..6b407e7
--- /dev/null
+++ b/geronimo-microprofile-site/src/main/jbake/content/openapi.adoc
@@ -0,0 +1,31 @@
+= Apache Geronimo OpenAPI
+:jbake-date: 2018-07-24
+:icons: font
+
+Apache Geronimo OpenAPI is an implementation of Microprofile OpenAPI.
+It is highly inspired from Swagger and relies on the OpenAPI initiative.
+It allows you to document your endpoint using annotations or a pre-generated JSON.
+
+== Dependencies
+
+=== API
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.eclipse.microprofile.openapi</groupId>
+  <artifactId>microprofile-openapi-api</artifactId>
+  <version>1.0.1</version>
+</dependency>
+----
+
+=== Implementation
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.geronimo</groupId>
+  <artifactId>geronimo-openapi-impl</artifactId>
+  <version>1.0.0</version>
+</dependency>
+----
diff --git a/geronimo-microprofile-site/src/main/jbake/content/opentracing.adoc b/geronimo-microprofile-site/src/main/jbake/content/opentracing.adoc
new file mode 100644
index 0000000..9e0bd1c
--- /dev/null
+++ b/geronimo-microprofile-site/src/main/jbake/content/opentracing.adoc
@@ -0,0 +1,61 @@
+= Apache Geronimo OpenTracing
+:jbake-date: 2018-07-24
+:icons: font
+
+Apache Geronimo OpenTracing is an implementation of Microprofile OpenTracing.
+It provides a way to track JAX-RS calls (client and server) in a distributed system.
+
+== Dependencies
+
+=== API
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.eclipse.microprofile.opentracing</groupId>
+  <artifactId>microprofile-opentracing-api</artifactId>
+  <version>1.1</version>
+  <exclusions>
+    <exclusion>
+      <groupId>javax.inject</groupId>
+      <artifactId>javax.inject</artifactId>
+    </exclusion>
+    <exclusion>
+      <groupId>org.osgi</groupId>
+      <artifactId>org.osgi.annotation.versioning</artifactId>
+    </exclusion>
+    <exclusion>
+      <groupId>javax.enterprise</groupId>
+      <artifactId>cdi-api</artifactId>
+    </exclusion>
+    <exclusion>
+      <groupId>org.apache.geronimo.specs</groupId>
+      <artifactId>geronimo-atinject_1.0_spec</artifactId>
+    </exclusion>
+    <exclusion>
+      <groupId>javax.ws.rs</groupId>
+      <artifactId>javax.ws.rs-api</artifactId>
+    </exclusion>
+    <exclusion>
+      <groupId>javax.annotation</groupId>
+      <artifactId>javax.annotation-api</artifactId>
+    </exclusion>
+  </exclusions>
+</dependency>
+----
+
+=== Implementation
+
+[source,xml]
+----
+<dependency>
+  <groupId>io.opentracing</groupId>
+  <artifactId>opentracing-api</artifactId>
+  <version>0.31.0</version>
+</dependency>
+<dependency>
+  <groupId>org.apache.geronimo</groupId>
+  <artifactId>geronimo-opentracing</artifactId>
+  <version>1.0.1-SNAPSHOT</version>
+</dependency>
+----
diff --git a/geronimo-microprofile-site/src/main/jbake/jbake.properties b/geronimo-microprofile-site/src/main/jbake/jbake.properties
new file mode 100644
index 0000000..d07456a
--- /dev/null
+++ b/geronimo-microprofile-site/src/main/jbake/jbake.properties
@@ -0,0 +1,20 @@
+default.status=published
+default.type=page
+date.format=yyyy-MM-dd
+db.store=memory
+site.host=http://geronimo.apache.org/microprofile
+site.title=Apache Geronimo Microprofile
+site.author=Apache Geronimo
+site.author.avatar=http://geronimo.apache.org/index.data/glogo-tm-med.gif
+site.google.trackingid=UA-4380560-1
+sidebar.social.github=apache
+sidebar.social.twitter=ASFGeronimo
+sidebar.social.email=user@geronimo.apache.org
+render.tags = true
+render.index = false
+render.archive = false
+render.feed = false
+render.sitemap = true
+asciidoctor.attributes=source-highlighter=prettify
+asciidoctor.attributes.export=true
+asciidoctor.attributes.export.prefix=attributes
diff --git a/geronimo-microprofile-site/src/main/jbake/templates/footer.ftl b/geronimo-microprofile-site/src/main/jbake/templates/footer.ftl
new file mode 100644
index 0000000..9464183
--- /dev/null
+++ b/geronimo-microprofile-site/src/main/jbake/templates/footer.ftl
@@ -0,0 +1,15 @@
+	</div>
+		<div id="push"></div>
+    </div>
+
+    <div id="footer">
+      <div class="container">
+        <p class="muted credit">&copy; 2018 | Apache Geronimo</p>
+      </div>
+    </div>
+
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
+    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/js/bootstrap.min.js" integrity="sha384-o+RDsa0aLu++PJvFqy8fFScvbHFLtbvScb8AjopnFD+iEQ7wo/CG0xlczd+2O/em" crossorigin="anonymous"></script>
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/prettify/r298/prettify.min.js" integrity="sha256-SHXnnZAbgSEf+OBhDLR7I2mx9vNZAIzPeCGhxRV+VQw=" crossorigin="anonymous"></script>
+  </body>
+</html>
diff --git a/geronimo-microprofile-site/src/main/jbake/templates/header.ftl b/geronimo-microprofile-site/src/main/jbake/templates/header.ftl
new file mode 100644
index 0000000..7fb9c09
--- /dev/null
+++ b/geronimo-microprofile-site/src/main/jbake/templates/header.ftl
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8"/>
+    <title><#if (content.title)??><#escape x as x?xml>${content.title}</#escape><#else>JBake</#if></title>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta name="description" content="Apache Geronimo Microprofile Site">
+    <meta name="author" content="Apache">
+    <meta name="keywords" content="Apache Geronimo Microprofile">
+    <meta name="generator" content="JBake">
+
+    <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-Smlep5jCw/wG7hdkwQ/Z5nLIefveQRIY9nfy6xoR1uRYBtpZgI6339F5dgvm/e9B" crossorigin="anonymous">
+    <link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
+    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prettify/r298/prettify.min.css" integrity="sha256-IPtNBA1od/cGBfXTxYDxuT5+Y2BKy14o6j0FaIXDmYk=" crossorigin="anonymous" />
+
+    <!--[if lt IE 9]>
+      <script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js" integrity="sha256-3Jy/GbSLrg0o9y5Z5n1uw0qxZECH7C6OQpVBgNFYa0g=" crossorigin="anonymous"></script>
+    <![endif]-->
+  </head>
+  <body onload="prettyPrint()">
+    <div id="wrap">
diff --git a/geronimo-microprofile-site/src/main/jbake/templates/menu.ftl b/geronimo-microprofile-site/src/main/jbake/templates/menu.ftl
new file mode 100644
index 0000000..2037cc4
--- /dev/null
+++ b/geronimo-microprofile-site/src/main/jbake/templates/menu.ftl
@@ -0,0 +1,22 @@
+    <section class="menu cid-qv1frvgcz3" once="menu" id="menu1-3e" data-rv-view="4067">
+        <nav class="navbar navbar-expand beta-menu navbar-dropdown align-items-center navbar-fixed-top navbar-toggleable-sm">
+            <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
+                <div class="hamburger">
+                    <span></span>
+                    <span></span>
+                    <span></span>
+                    <span></span>
+                </div>
+            </button>
+            <div class="menu-logo">
+                <div class="navbar-brand">
+
+                    <span class="navbar-caption-wrap"><a class="navbar-caption text-black display-4"
+                            href="index.html">
+                            Apache Geronimo Microprofile</a></span>
+                </div>
+            </div>
+        </nav>
+    </section>
+
+    <div class="container">
\ No newline at end of file
diff --git a/geronimo-microprofile-site/src/main/jbake/templates/page.ftl b/geronimo-microprofile-site/src/main/jbake/templates/page.ftl
new file mode 100644
index 0000000..0577f53
--- /dev/null
+++ b/geronimo-microprofile-site/src/main/jbake/templates/page.ftl
@@ -0,0 +1,15 @@
+<#include "header.ftl">
+
+	<#include "menu.ftl">
+
+	<div class="page-header">
+		<h4><#escape x as x?xml>${content.title}</#escape></h4>
+	</div>
+
+	<p><em>${content.date}</em></p>
+
+	<p>${content.body}</p>
+
+	<hr />
+
+<#include "footer.ftl">
\ No newline at end of file
diff --git a/geronimo-microprofile-site/src/main/jbake/templates/sitemap.ftl b/geronimo-microprofile-site/src/main/jbake/templates/sitemap.ftl
new file mode 100644
index 0000000..e79791f
--- /dev/null
+++ b/geronimo-microprofile-site/src/main/jbake/templates/sitemap.ftl
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
+<#list published_content as content>
+    <url>
+        <loc>${config.site_host}${content.uri}</loc>
+        <lastmod>${content.date}</lastmod>
+    </url>
+</#list>
+</urlset>
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 7e64d2b..958c5b1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -40,6 +40,7 @@
   <modules>
     <module>geronimo-microprofile-aggregator</module>
     <module>utilda</module>
+    <module>geronimo-microprofile-site</module>
   </modules>
 
   <scm>