diff --git a/doc/README.md b/doc/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..865806f297a1316fcff0df1eff99c9fe95b21288
--- /dev/null
+++ b/doc/README.md
@@ -0,0 +1,17 @@
+## The GitLab Documentation covers the following subjects
+
++ [API](api/README.md)
++ [Development](development/README.md)
++ [Install](install/README.md)
++ [Integration](external-issue-tracker/README.md)
++ [Legal](legal/README.md)
++ [Markdown](markdown/markdown.md)
++ [Permissions](permissions/permissions.md)
++ [Public access](public_access/public_access.md)
++ [Raketasks](raketasks/README.md)
++ [Release](release/README.md)
++ [Security](security/README.md)
++ [System hooks](system_hooks/system_hooks.md)
++ [Update](update/README.md)
++ [Web hooks](web_hooks/web_hooks.md)
++ [Workflow](workflow/workflow.md)
diff --git a/doc/api/README.md b/doc/api/README.md
index 850666953a3959d4bc2a9f8db205193f3ebebf22..fa5b12af14c3e1c2e8fe010426f9bbb8d859aad3 100644
--- a/doc/api/README.md
+++ b/doc/api/README.md
@@ -1,5 +1,31 @@
 # GitLab API
 
+## End-points
+
++ [Users](users.md)
++ [Session](session.md)
++ [Projects](projects.md)
++ [Project Snippets](project_snippets.md)
++ [Repositories](repositories.md)
++ [Repository Files](repository_files.md)
++ [Commits](commits.md)
++ [Merge Requests](merge_requests.md)
++ [Issues](issues.md)
++ [Milestones](milestones.md)
++ [Notes](notes.md)
++ [Deploy Keys](deploy_keys.md)
++ [System Hooks](system_hooks.md)
++ [Groups](groups.md)
+
+## Clients
+
++ [php-gitlab-api](https://github.com/m4tthumphrey/php-gitlab-api) - PHP
++ [Ruby Wrapper](https://github.com/NARKOZ/gitlab) - Ruby
++ [python-gitlab](https://github.com/Itxaka/python-gitlab) - Python
++ [java-gitlab-api](https://github.com/timols/java-gitlab-api) - Java
+
+## Introduction
+
 All API requests require authentication. You need to pass a `private_token` parameter by url or header. If passed as header, the header name must be "PRIVATE-TOKEN" (capital and with dash instead of underscore). You can find or reset your private token in your profile.
 
 If no, or an invalid, `private_token` is provided then an error message will be returned with status code 401:
@@ -117,30 +143,3 @@ Issue
 
 So if you want to get issue with api you use `http://host/api/v3/.../issues/:id.json`
 But when you want to create a link to web page - use  `http:://host/project/issues/:iid.json`
-
-
-
-## Contents
-
-+ [Users](users.md)
-+ [Session](session.md)
-+ [Projects](projects.md)
-+ [Project Snippets](project_snippets.md)
-+ [Repositories](repositories.md)
-+ [Repository Files](repository_files.md)
-+ [Commits](commits.md)
-+ [Merge Requests](merge_requests.md)
-+ [Issues](issues.md)
-+ [Milestones](milestones.md)
-+ [Notes](notes.md)
-+ [Deploy Keys](deploy_keys.md)
-+ [System Hooks](system_hooks.md)
-+ [Groups](groups.md)
-
-
-## Clients
-
-+ [php-gitlab-api](https://github.com/m4tthumphrey/php-gitlab-api) - PHP
-+ [Ruby Wrapper](https://github.com/NARKOZ/gitlab) - Ruby
-+ [python-gitlab](https://github.com/Itxaka/python-gitlab) - Python
-+ [java-gitlab-api](https://github.com/timols/java-gitlab-api) - Java
diff --git a/doc/development/README.md b/doc/development/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..aa59eb2c3e1fa1f86b3432972b086cfec79a0de6
--- /dev/null
+++ b/doc/development/README.md
@@ -0,0 +1,2 @@
++ [Architecture](architecture.md)
++ [Shell commands](shell_commands.md)
diff --git a/doc/install/README.md b/doc/install/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..ec80e3cd62a66604611ab10950739015e113f78a
--- /dev/null
+++ b/doc/install/README.md
@@ -0,0 +1,4 @@
++ [Installation](installation.md)
++ [Requirements](requirements.md)
++ [Structure](structure.md)
++ [Database MySQL](database_mysql.md)
diff --git a/doc/legal/README.md b/doc/legal/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..ebfdad13540845b82bc6330f7f313ac68272c7c5
--- /dev/null
+++ b/doc/legal/README.md
@@ -0,0 +1,2 @@
++ [Corporate contributor license agreement](corporate_contributor_license_agreement.md)
++ [Individual contributor license agreement](individual_contributor_license_agreement.md)
diff --git a/doc/raketasks/README.md b/doc/raketasks/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..9aa80af12cc6a69644e2f086989a5dbb3ff78bf5
--- /dev/null
+++ b/doc/raketasks/README.md
@@ -0,0 +1,6 @@
++ [Backup restore](backup_restore.md)
++ [Cleanup](cleanup.md)
++ [Features](features.md)
++ [Maintenance](maintenance.md)
++ [User management](user_management.md)
++ [Web hooks](web_hooks.md)
diff --git a/doc/release/README.md b/doc/release/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..22510be3f18023ada89aa8e546ee50455cdd4a24
--- /dev/null
+++ b/doc/release/README.md
@@ -0,0 +1,2 @@
++ [Monthly](monthly.md)
++ [Security](security.md)
diff --git a/doc/security/README.md b/doc/security/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..f8dd1291b9bf486e982b7e940e58b81ca559e4da
--- /dev/null
+++ b/doc/security/README.md
@@ -0,0 +1,2 @@
++ [Password length limits](password_length_limits.md)
++ [Rack attack](rack_attack.md)
diff --git a/doc/update/README.md b/doc/update/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..97afd71bbe30d193321cf86cd605f9df3f8e6734
--- /dev/null
+++ b/doc/update/README.md
@@ -0,0 +1,5 @@
++ [The indivual upgrade guides](https://gitlab.com/gitlab-org/gitlab-ce/tree/master/doc/update)
++ [Uprader](upgrader.md)
++ [Ruby](ruby.md)
++ [Patch versions](patch_versions.md)
++ [MySQL to Postgress](mysql_to_postgress.md)