diff --git a/docs/Makefile b/docs/Makefile
new file mode 100644
index 000000000..928599a23
--- /dev/null
+++ b/docs/Makefile
@@ -0,0 +1,20 @@
+# Minimal makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS =
+SPHINXBUILD = python -msphinx
+SPHINXPROJ = hyperledger-fabric-ca
+SOURCEDIR = source
+BUILDDIR = build
+
+# Put it first so that "make" without argument is like "make help".
+help:
+ @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
+
+.PHONY: help Makefile
+
+# Catch-all target: route all unknown targets to Sphinx using the new
+# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
+%: Makefile
+ @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
\ No newline at end of file
diff --git a/docs/make.bat b/docs/make.bat
new file mode 100644
index 000000000..5b3b16dea
--- /dev/null
+++ b/docs/make.bat
@@ -0,0 +1,36 @@
+@ECHO OFF
+
+pushd %~dp0
+
+REM Command file for Sphinx documentation
+
+if "%SPHINXBUILD%" == "" (
+ set SPHINXBUILD=python -msphinx
+)
+set SOURCEDIR=source
+set BUILDDIR=build
+set SPHINXPROJ=hyperledger-fabric-ca
+
+if "%1" == "" goto help
+
+%SPHINXBUILD% >NUL 2>NUL
+if errorlevel 9009 (
+ echo.
+ echo.The Sphinx module was not found. Make sure you have Sphinx installed,
+ echo.then set the SPHINXBUILD environment variable to point to the full
+ echo.path of the 'sphinx-build' executable. Alternatively you may add the
+ echo.Sphinx directory to PATH.
+ echo.
+ echo.If you don't have Sphinx installed, grab it from
+ echo.http://sphinx-doc.org/
+ exit /b 1
+)
+
+%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
+goto end
+
+:help
+%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
+
+:end
+popd
diff --git a/docs/requirements.txt b/docs/requirements.txt
new file mode 100644
index 000000000..9d3e4e1d8
--- /dev/null
+++ b/docs/requirements.txt
@@ -0,0 +1,14 @@
+python-markdown-math==0.2
+
+alabaster==0.7.8
+Babel==2.3.4
+docutils==0.12
+imagesize==0.7.1
+Jinja2==2.8
+MarkupSafe==0.23
+Pygments==2.1.3
+pytz==2016.4
+six==1.10.0
+snowballstemmer==1.2.1
+Sphinx==1.4.4
+sphinx-rtd-theme==0.1.9
diff --git a/docs/source/_static/css/custom.css b/docs/source/_static/css/custom.css
new file mode 100644
index 000000000..482a8eec4
--- /dev/null
+++ b/docs/source/_static/css/custom.css
@@ -0,0 +1,181 @@
+@import "theme.css";
+
+/* Highlights */
+
+.highlight .k,
+.highlight .kd {
+ color: #263673;
+}
+
+
+/* Text */
+
+body,
+h1,
+h2,
+.rst-content .toctree-wrapper p.caption,
+h3,
+h4,
+h5,
+h6,
+legend,
+input {
+ color: #010101;
+ letter-spacing: 0.3px
+}
+
+p {
+ font-size: 100%; /* Get rid of RTD rule that assumes nobody changes their browser font size */
+}
+
+
+/* Links */
+
+a {
+ color: #6ca158
+}
+
+a:hover {
+ color: #6ca158
+}
+
+a:visited {
+ color: #ADAFB3
+}
+
+
+/* Side navigation bar */
+
+.wy-side-nav-search {
+ background-color: #252627;
+}
+
+.wy-side-nav-search a.icon-home {
+ color: transparent;
+/* background-image: url('../images/fabric1.png'); */
+ background-repeat: no-repeat;
+ background-size: Auto 20px;
+ background-position: center top;
+ background-origin: content box;
+ height: 20px;
+ width: 100%
+}
+
+.wy-side-nav-search input[type=text] {
+ border-radius: 5px
+}
+
+.wy-menu-vertical a:hover {
+ background-color: #ADAFB3;
+ color: #FFF
+}
+
+.wy-nav-content {
+ background-color: #fff max-width: 1000px;
+}
+
+.wy-nav-side {
+ background-color: #252627;
+}
+
+
+/* Navigation headers */
+
+.rst-content tt.literal,
+.rst-content tt.literal,
+.rst-content code.literal {
+ color: ##d43232;
+ text-transform: none;
+}
+
+.wy-menu-vertical header,
+.wy-menu-vertical p.caption {
+ color: #6ca158;
+}
+
+
+/* Code snippets */
+
+.codesnippet-widgets {
+ min-width: 100%;
+ display: block;
+ background: #005CAB;
+ color: white;
+ padding: 10px 0;
+ margin: 0 0 -1px 0;
+}
+
+.codesnippet-widgets > span {
+ padding: 10px;
+ cursor: pointer;
+}
+
+.codesnippet-widgets > .current {
+ background: #263673;
+}
+
+.codeset > .highlight-java {
+ display: none;
+}
+
+
+/* Notification boxes */
+
+.wy-alert.wy-alert-warning .wy-alert-title,
+.rst-content .wy-alert-warning.note .wy-alert-title,
+.rst-content .attention .wy-alert-title,
+.rst-content .caution .wy-alert-title,
+.rst-content .wy-alert-warning.danger .wy-alert-title,
+.rst-content .wy-alert-warning.error .wy-alert-title,
+.rst-content .wy-alert-warning.hint .wy-alert-title,
+.rst-content .wy-alert-warning.important .wy-alert-title,
+.rst-content .wy-alert-warning.tip .wy-alert-title,
+.rst-content .warning .wy-alert-title,
+.rst-content .wy-alert-warning.seealso .wy-alert-title,
+.rst-content .admonition-todo .wy-alert-title,
+.wy-alert.wy-alert-warning .rst-content .admonition-title,
+.rst-content .wy-alert.wy-alert-warning .admonition-title,
+.rst-content .wy-alert-warning.note .admonition-title,
+.rst-content .attention .admonition-title,
+.rst-content .caution .admonition-title,
+.rst-content .wy-alert-warning.danger .admonition-title,
+.rst-content .wy-alert-warning.error .admonition-title,
+.rst-content .wy-alert-warning.hint .admonition-title,
+.rst-content .wy-alert-warning.important .admonition-title,
+.rst-content .wy-alert-warning.tip .admonition-title,
+.rst-content .warning .admonition-title,
+.rst-content .wy-alert-warning.seealso .admonition-title,
+.rst-content .admonition-todo .admonition-title {
+ background-color: #263673
+}
+
+.wy-alert,
+.rst-content .note,
+.rst-content .attention,
+.rst-content .caution,
+.rst-content .danger,
+.rst-content .error,
+.rst-content .hint,
+.rst-content .important,
+.rst-content .tip,
+.rst-content .warning,
+.rst-content .seealso,
+.rst-content .admonition-todo {
+ background-color: #d9e5ef
+}
+
+
+/* Mobile view */
+
+.wy-nav-top {
+ background-color: #252627;
+}
+
+.wy-nav-top a {
+ color: transparent;
+/* background-image: url('../images/fabric1.png'); */
+ background-repeat: no-repeat;
+ background-size: Auto 19px;
+ background-position: center top;
+ background-origin: content box;
+}
diff --git a/docs/source/_templates/layout.html b/docs/source/_templates/layout.html
new file mode 100644
index 000000000..a8d56182d
--- /dev/null
+++ b/docs/source/_templates/layout.html
@@ -0,0 +1,7 @@
+{% extends "!layout.html" %}
+{% block sidebartitle %}
+{{ super() }}
+
+Rocket Chat CI
+StackOverflow
+{% endblock %}
diff --git a/docs/source/conf.py b/docs/source/conf.py
new file mode 100644
index 000000000..4ddefa6d0
--- /dev/null
+++ b/docs/source/conf.py
@@ -0,0 +1,180 @@
+# -*- coding: utf-8 -*-
+#
+# hyperledger-fabric-ca documentation build configuration file, created by
+# sphinx-quickstart on Tue May 23 17:35:49 2017.
+#
+# This file is execfile()d with the current directory set to its
+# containing dir.
+#
+# Note that not all possible configuration values are present in this
+# autogenerated file.
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+#
+import os
+import sys
+sys.path.insert(0, os.path.abspath('.'))
+
+import sphinx_rtd_theme
+
+# -- General configuration ------------------------------------------------
+
+# If your documentation needs a minimal Sphinx version, state it here.
+#
+# needs_sphinx = '1.0'
+
+# Add any Sphinx extension module names here, as strings. They can be
+# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
+# ones.
+
+extensions = ['sphinx.ext.autodoc',
+ 'sphinx.ext.doctest',
+ 'sphinx.ext.intersphinx',
+ 'sphinx.ext.todo',
+ 'sphinx.ext.imgmath',
+ 'sphinx.ext.ifconfig',
+ 'sphinx.ext.viewcode']
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+# The suffix(es) of source filenames.
+# You can specify multiple suffix as a list of string:
+#
+# source_suffix = ['.rst', '.md']
+source_suffix = '.rst'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+project = u'hyperledger-fabric-cadocs'
+copyright = u'2017, hyperledger'
+author = u'hyperledger'
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The short X.Y version.
+version = u'master'
+# The full version, including alpha/beta/rc tags.
+release = u'master'
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+#
+# This is also used if you do content translation via gettext catalogs.
+# Usually you set "language" from the command line for these cases.
+language = None
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+# This patterns also effect to html_static_path and html_extra_path
+exclude_patterns = []
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+# If true, `todo` and `todoList` produce output, else they produce nothing.
+todo_include_todos = True
+
+
+# -- Options for HTML output ----------------------------------------------
+
+# The theme to use for HTML and HTML Help pages. See the documentation for
+# a list of builtin themes.
+#
+
+html_theme = 'sphinx_rtd_theme'
+
+html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
+
+html_add_permalinks = True
+
+# Theme options are theme-specific and customize the look and feel of a theme
+# further. For a list of options available for each theme, see the
+# documentation.
+#
+# html_theme_options = {}
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['_static']
+
+def setup(app):
+ app.add_stylesheet('css/custom.css')
+
+# -- Options for HTMLHelp output ------------------------------------------
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'hyperledger-fabric-cadocs'
+
+
+# -- Options for LaTeX output ---------------------------------------------
+
+latex_elements = {
+ # The paper size ('letterpaper' or 'a4paper').
+ #
+ # 'papersize': 'letterpaper',
+
+ # The font size ('10pt', '11pt' or '12pt').
+ #
+ # 'pointsize': '10pt',
+
+ # Additional stuff for the LaTeX preamble.
+ #
+ # 'preamble': '',
+
+ # Latex figure (float) alignment
+ #
+ # 'figure_align': 'htbp',
+}
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title,
+# author, documentclass [howto, manual, or own class]).
+latex_documents = [
+ (master_doc, 'hyperledger-fabric-cadocs.tex', u'hyperledger-fabric-ca Documentation',
+ u'hyperledger', 'manual'),
+]
+
+
+# -- Options for manual page output ---------------------------------------
+
+# One entry per manual page. List of tuples
+# (source start file, name, description, authors, manual section).
+man_pages = [
+ (master_doc, 'hyperledger-fabric-cadocs', u'hyperledger-fabric-ca Documentation',
+ [author], 1)
+]
+
+
+# -- Options for Texinfo output -------------------------------------------
+
+# Grouping the document tree into Texinfo files. List of tuples
+# (source start file, target name, title, author,
+# dir menu entry, description, category)
+texinfo_documents = [
+ (master_doc, 'hyperledger-fabric-cadocs', u'hyperledger-fabric-ca Documentation',
+ author, 'hyperledger-fabric-ca', 'One line description of project.',
+ 'Miscellaneous'),
+]
+
+# Bibliographic Dublin Core info.
+epub_title = project
+epub_author = author
+epub_publisher = author
+epub_copyright = copyright
+
+# A list of files that should not be packed into the epub file.
+epub_exclude_files = ['search.html']
+
+# Example configuration for intersphinx: refer to the Python standard library.
+intersphinx_mapping = {'https://docs.python.org/': None}
diff --git a/docs/source/custom_theme/searchbox.html b/docs/source/custom_theme/searchbox.html
new file mode 100644
index 000000000..33ed3e243
--- /dev/null
+++ b/docs/source/custom_theme/searchbox.html
@@ -0,0 +1,5 @@
+