diff --git a/app/controllers/groups/milestones_controller.rb b/app/controllers/groups/milestones_controller.rb
new file mode 100644
index 0000000000000000000000000000000000000000..fc5381051259a75697769511bfe2deeb36abc598
--- /dev/null
+++ b/app/controllers/groups/milestones_controller.rb
@@ -0,0 +1,7 @@
+class Groups::MilestonesController < ApplicationController
+  layout 'group'
+
+  def index
+    @group = Group.find_by(path: params[:group_id])
+  end
+end
diff --git a/app/views/groups/milestones/index.html.haml b/app/views/groups/milestones/index.html.haml
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/app/views/layouts/nav/_group.html.haml b/app/views/layouts/nav/_group.html.haml
index d306e1eeb546c6bdb68520cfc923563b29e8292d..5fa14bd0d9b4961633a37536d2924a6953309639 100644
--- a/app/views/layouts/nav/_group.html.haml
+++ b/app/views/layouts/nav/_group.html.haml
@@ -12,6 +12,11 @@
       Merge Requests
       - if current_user
         %span.count= current_user.cared_merge_requests.opened.of_group(@group).count
+  = nav_link(path: 'groups#milestones') do
+    = link_to merge_requests_group_path(@group) do
+      Milestones
+      - if current_user
+        %span.count= current_user.cared_merge_requests.opened.of_group(@group).count
   = nav_link(path: 'groups#members') do
     = link_to "Members", members_group_path(@group)
 
diff --git a/config/routes.rb b/config/routes.rb
index 14ff52f387ae5cb601a183e1a2447719571a029c..244cb339898a551c28f4df09ff1b2e10845521f5 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -151,8 +151,10 @@ Gitlab::Application.routes.draw do
     end
 
     resources :users_groups, only: [:create, :update, :destroy]
+
     scope module: :groups do
       resource :avatar, only: [:destroy]
+      resources :milestones
     end
   end