diff --git a/src/handler/handler.go b/src/handler/handler.go
index fe4c124974d27ba382b4ad9ea9752c7bc902340f..6cdcd5bd09b20f911df263ac9bcc492323f46735 100644
--- a/src/handler/handler.go
+++ b/src/handler/handler.go
@@ -8,6 +8,8 @@ import (
 	batchSidangTransport "gitlab.informatika.org/k-01-11/graduit-be/src/module/batch_sidang/transport"
 	bimbinganLogConfig "gitlab.informatika.org/k-01-11/graduit-be/src/module/bimbingan_log/config"
 	bimbinganLogTransport "gitlab.informatika.org/k-01-11/graduit-be/src/module/bimbingan_log/transport"
+	dashboardDosbingConfig "gitlab.informatika.org/k-01-11/graduit-be/src/module/dashboard_dosbing/config"
+	dashboardDosbingTrasport "gitlab.informatika.org/k-01-11/graduit-be/src/module/dashboard_dosbing/transport"
 	jadwalSeminarConfig "gitlab.informatika.org/k-01-11/graduit-be/src/module/jadwal_seminar/config"
 	jadwalSeminarTransport "gitlab.informatika.org/k-01-11/graduit-be/src/module/jadwal_seminar/transport"
 	jadwalSidangConfig "gitlab.informatika.org/k-01-11/graduit-be/src/module/jadwal_sidang/config"
@@ -23,15 +25,16 @@ import (
 )
 
 type Service struct {
-	InternalSystemLogHandler    *systemLogTransport.InternalSystemLogHandler
-	AdminSytemLogHandler        *systemLogTransport.AdminSystemLogHandler
-	AdminBimbinganLogHandler    *bimbinganLogTransport.AdminBimbinganLogHandler
-	AdminTopicAllocationHandler *topicAllocationTransport.AdminTopicAllocationHandler
-	BatchSeminarHandler         *batchSeminarTransport.AdminBatchSeminarHandler
-	BatchSidangHandler          *batchSidangTransport.AdminBatchSidangHandler
-	JadwalSidangHandler         *jadwalSidangTransport.AdminJadwalSidangHandler
-	JadwalSeminarHandler        *jadwalSeminarTransport.AdminJadwalSeminarHandler
-	AdminStatusMahasiswaHandler *statusMahasiswaTransport.AdminStatusMahasiswaHandler
+	InternalSystemLogHandler     *systemLogTransport.InternalSystemLogHandler
+	AdminSytemLogHandler         *systemLogTransport.AdminSystemLogHandler
+	AdminBimbinganLogHandler     *bimbinganLogTransport.AdminBimbinganLogHandler
+	AdminTopicAllocationHandler  *topicAllocationTransport.AdminTopicAllocationHandler
+	BatchSeminarHandler          *batchSeminarTransport.AdminBatchSeminarHandler
+	BatchSidangHandler           *batchSidangTransport.AdminBatchSidangHandler
+	JadwalSidangHandler          *jadwalSidangTransport.AdminJadwalSidangHandler
+	JadwalSeminarHandler         *jadwalSeminarTransport.AdminJadwalSeminarHandler
+	AdminStatusMahasiswaHandler  *statusMahasiswaTransport.AdminStatusMahasiswaHandler
+	AdminDashboardDosbingHandler *dashboardDosbingTrasport.AdminDashboardDosbingHandler
 	AdminPendaftaranHandler     *pendaftaranTransport.AdminPendaftaranHandler
 }
 
@@ -75,21 +78,26 @@ func MakeHandler() *Service {
 		DBWrite: dbWrite,
 		DBRead:  dbRead,
 	})
+	AdminDashboardDosbingHandler := dashboardDosbingTrasport.NewAdminDashboardDosbingHandler(dashboardDosbingConfig.DashboardDosbingTransportConfig{
+		DBWrite: dbWrite,
+		DBRead:  dbRead,
+	})
 	AdminPendaftaranHandler := pendaftaranTransport.NewAdminPendaftaranHandler(pendaftaranConfig.PendaftaranTransportConfig{
 		DBWrite: dbWrite,
 		DBRead:  dbRead,
 	})
 
 	return &Service{
-		InternalSystemLogHandler:    InternalSystemLogHandler,
-		AdminSytemLogHandler:        AdminSystemLogHandler,
-		AdminBimbinganLogHandler:    AdminBimbinganLogHandler,
-		AdminTopicAllocationHandler: AdminTopicAllocationHandler,
-		BatchSeminarHandler:         AdminBatchSeminarHandler,
-		BatchSidangHandler:          AdminBatchSidangHandler,
-		JadwalSidangHandler:         AdminJadwalSidangHandler,
-		JadwalSeminarHandler:        AdminJadwalSeminarHandler,
-		AdminStatusMahasiswaHandler: AdminStatusMahasiswaHandler,
+		InternalSystemLogHandler:     InternalSystemLogHandler,
+		AdminSytemLogHandler:         AdminSystemLogHandler,
+		AdminBimbinganLogHandler:     AdminBimbinganLogHandler,
+		AdminTopicAllocationHandler:  AdminTopicAllocationHandler,
+		BatchSeminarHandler:          AdminBatchSeminarHandler,
+		BatchSidangHandler:           AdminBatchSidangHandler,
+		JadwalSidangHandler:          AdminJadwalSidangHandler,
+		JadwalSeminarHandler:         AdminJadwalSeminarHandler,
+		AdminStatusMahasiswaHandler:  AdminStatusMahasiswaHandler,
+		AdminDashboardDosbingHandler: AdminDashboardDosbingHandler,
 		AdminPendaftaranHandler:     AdminPendaftaranHandler,
 	}
 }
diff --git a/src/handler/server.go b/src/handler/server.go
index 67cb667285c8a6cf650fd07e86b484bb668a6f8b..83e29b0d863f0f03692fe314934aeb5b07537285 100644
--- a/src/handler/server.go
+++ b/src/handler/server.go
@@ -29,6 +29,7 @@ func (s *Service) InitializeRoutes() *echo.Echo {
 	s.JadwalSeminarHandler.MountAdmin(adminGroup)
 	s.JadwalSidangHandler.MountAdmin(adminGroup)
 	s.AdminStatusMahasiswaHandler.MountAdmin(adminGroup)
+	s.AdminDashboardDosbingHandler.MountAdmin(adminGroup)
 	s.AdminPendaftaranHandler.MountAdmin(adminGroup)
 	return e
 }
diff --git a/src/module/dashboard_dosbing/config/common.go b/src/module/dashboard_dosbing/config/common.go
new file mode 100644
index 0000000000000000000000000000000000000000..4adf2ccda7ef79c77ddc17425604bd60769c9f62
--- /dev/null
+++ b/src/module/dashboard_dosbing/config/common.go
@@ -0,0 +1,8 @@
+package config
+
+import "gorm.io/gorm"
+
+type DashboardDosbingTransportConfig struct {
+	DBWrite *gorm.DB
+	DBRead  *gorm.DB
+}
diff --git a/src/module/dashboard_dosbing/entity/dashboard_dosbing.go b/src/module/dashboard_dosbing/entity/dashboard_dosbing.go
new file mode 100644
index 0000000000000000000000000000000000000000..ee728754438d9b0952247cfd873b4719b822133b
--- /dev/null
+++ b/src/module/dashboard_dosbing/entity/dashboard_dosbing.go
@@ -0,0 +1,20 @@
+package entity
+
+type JumlahMahasiswa struct {
+	MahasiswaIF  int `json:"mahasiswa_if"`
+	MahasiswaSTI int `json:"mahasiswa_sti"`
+}
+
+type StatusBimbinganMahasiswa struct {
+	Lancar         int `json:"lancar"`
+	ButuhBimbingan int `json:"butuh_bimbingan"`
+	Terkendala     int `json:"terkendala"`
+}
+
+type MahasiswaBimbingan struct {
+	IdMahasiswa string `json:"id_mahasiswa"`
+	Nama        string `json:"nama"`
+	NIM         string `json:"nim"`
+	Topik       string `json:"topik"`
+	Status      string `json:"status"`
+}
diff --git a/src/module/dashboard_dosbing/internal/repository/dashboard_dosbing.go b/src/module/dashboard_dosbing/internal/repository/dashboard_dosbing.go
new file mode 100644
index 0000000000000000000000000000000000000000..a035311b8959b854cdfe03c0fc8c90eb51afef0e
--- /dev/null
+++ b/src/module/dashboard_dosbing/internal/repository/dashboard_dosbing.go
@@ -0,0 +1,93 @@
+package repository
+
+import (
+	"errors"
+
+	"gitlab.informatika.org/k-01-11/graduit-be/src/models"
+	"gitlab.informatika.org/k-01-11/graduit-be/src/module/dashboard_dosbing/entity"
+	"gorm.io/gorm"
+)
+
+type DashboardDosbingRepo struct {
+	DBWrite *gorm.DB
+	DBRead  *gorm.DB
+}
+
+func NewDashboardDosbingRepository(dbWrite *gorm.DB, dbRead *gorm.DB) *DashboardDosbingRepo {
+	return &DashboardDosbingRepo{
+		DBWrite: dbWrite,
+		DBRead:  dbRead,
+	}
+}
+
+func (repo *DashboardDosbingRepo) GetMahasiswaByDosenId(idDosen string, offset, size int) (output []entity.MahasiswaBimbingan, err error) {
+	var mahasiswaBimbingan []entity.MahasiswaBimbingan
+
+	var dosen models.Dosen
+	var mahasiswa []models.Mahasiswa
+	var topik models.Topik
+	var pendaftaran models.Pendaftaran
+
+	result := repo.DBRead.Where("id_dosen = ?", idDosen).First(&dosen)
+	if result.Error != nil {
+		return nil, errors.New("dosen tidak ditemukan")
+	}
+
+	result = repo.DBRead.Limit(size).Offset(offset).Where("id_dosen = ?", dosen.IdDosen).Find(&mahasiswa)
+	if result.Error != nil {
+		return nil, result.Error
+	}
+
+	for _, mhs := range mahasiswa {
+
+		repo.DBRead.Where("status = TRUE").First(&pendaftaran)
+		repo.DBRead.Where("id = ?", pendaftaran.IdTopik).First(&topik)
+
+		bimbingan := entity.MahasiswaBimbingan{
+			IdMahasiswa: mhs.IdMahasiswa,
+			Nama:        mhs.Name,
+			NIM:         mhs.NIM,
+			Topik:       topik.Judul,
+			// TODO : KONEKIN KE STATUS
+			Status: "LANCAR",
+		}
+
+		mahasiswaBimbingan = append(mahasiswaBimbingan, bimbingan)
+	}
+
+	return mahasiswaBimbingan, nil
+
+}
+
+func (repo *DashboardDosbingRepo) GetAmountMahasiswaByDosenId(idDosen string) (output []entity.JumlahMahasiswa, err error) {
+	var jumlahMahasiswa entity.JumlahMahasiswa
+
+	var dosen models.Dosen
+	var mahasiswa []models.Mahasiswa
+
+	result := repo.DBRead.Where("id_dosen = ?", idDosen).First(&dosen)
+	if result.Error != nil {
+		return nil, errors.New("dosen tidak ditemukan")
+	}
+
+	// Mahasiswa IF
+	result = repo.DBRead.Where("id_dosen = ? AND NIM LIKE ?", dosen.IdDosen, "135%").Find(&mahasiswa)
+	if result.Error != nil {
+		jumlahMahasiswa.MahasiswaIF = 0
+	}
+	jumlahMahasiswa.MahasiswaIF = int(result.RowsAffected)
+
+	// Mahasiswa STI
+	result = repo.DBRead.Where("id_dosen = ? AND NIM LIKE ?", dosen.IdDosen, "182%").Find(&mahasiswa)
+	if result.Error != nil {
+		jumlahMahasiswa.MahasiswaSTI = 0
+	}
+	jumlahMahasiswa.MahasiswaSTI = int(result.RowsAffected)
+
+	return []entity.JumlahMahasiswa{jumlahMahasiswa}, nil
+
+}
+
+func (repo *DashboardDosbingRepo) GetAmountStatusBimbinganMahasiswaByDosenId(idDosen string) (output []entity.StatusBimbinganMahasiswa, err error) {
+	return nil, errors.New("Not implemented")
+}
diff --git a/src/module/dashboard_dosbing/internal/usecase/dashboard_dosbing.go b/src/module/dashboard_dosbing/internal/usecase/dashboard_dosbing.go
new file mode 100644
index 0000000000000000000000000000000000000000..40296971c81582b8ffc2edb6368ab20a84b04a57
--- /dev/null
+++ b/src/module/dashboard_dosbing/internal/usecase/dashboard_dosbing.go
@@ -0,0 +1,49 @@
+package usecase
+
+import "gitlab.informatika.org/k-01-11/graduit-be/src/module/dashboard_dosbing/entity"
+
+type DashboardDosbingUseCase interface {
+	GetMahasiswaByDosenId(idDosen string, offset, size int) (output []entity.MahasiswaBimbingan, err error)
+	GetAmountMahasiswaByDosenId(idDosen string) (output []entity.JumlahMahasiswa, err error)
+	GetAmountStatusBimbinganMahasiswaByDosenId(idDosen string) (output []entity.StatusBimbinganMahasiswa, err error)
+}
+
+type DashboardDosbingUc struct {
+	dashboardDosbingRepo DashboardDosbingRepository
+}
+
+func NewDashboardDosbingUsecase(dashboardDosbingRepo DashboardDosbingRepository) *DashboardDosbingUc {
+	return &DashboardDosbingUc{
+		dashboardDosbingRepo: dashboardDosbingRepo,
+	}
+}
+
+func (uc *DashboardDosbingUc) GetMahasiswaByDosenId(idDosen string, offset, size int) (output []entity.MahasiswaBimbingan, err error) {
+	listMahasiswa, err := uc.dashboardDosbingRepo.GetMahasiswaByDosenId(idDosen, offset, size)
+
+	if err != nil {
+		return listMahasiswa, err
+	}
+
+	return listMahasiswa, nil
+}
+
+func (uc *DashboardDosbingUc) GetAmountMahasiswaByDosenId(idDosen string) (output []entity.JumlahMahasiswa, err error) {
+	listMahasiswa, err := uc.dashboardDosbingRepo.GetAmountMahasiswaByDosenId(idDosen)
+
+	if err != nil {
+		return listMahasiswa, err
+	}
+
+	return listMahasiswa, nil
+}
+
+func (uc *DashboardDosbingUc) GetAmountStatusBimbinganMahasiswaByDosenId(idDosen string) (output []entity.StatusBimbinganMahasiswa, err error) {
+	listMahasiswa, err := uc.dashboardDosbingRepo.GetAmountStatusBimbinganMahasiswaByDosenId(idDosen)
+
+	if err != nil {
+		return listMahasiswa, err
+	}
+
+	return listMahasiswa, nil
+}
diff --git a/src/module/dashboard_dosbing/internal/usecase/repository.go b/src/module/dashboard_dosbing/internal/usecase/repository.go
new file mode 100644
index 0000000000000000000000000000000000000000..0d7f821934403bc375cc92a598c3b0a4a8f1af03
--- /dev/null
+++ b/src/module/dashboard_dosbing/internal/usecase/repository.go
@@ -0,0 +1,9 @@
+package usecase
+
+import "gitlab.informatika.org/k-01-11/graduit-be/src/module/dashboard_dosbing/entity"
+
+type DashboardDosbingRepository interface {
+	GetMahasiswaByDosenId(idDosen string, offset, size int) (output []entity.MahasiswaBimbingan, err error)
+	GetAmountMahasiswaByDosenId(idDosen string) (output []entity.JumlahMahasiswa, err error)
+	GetAmountStatusBimbinganMahasiswaByDosenId(idDosen string) (output []entity.StatusBimbinganMahasiswa, err error)
+}
diff --git a/src/module/dashboard_dosbing/transport/admin_handler.go b/src/module/dashboard_dosbing/transport/admin_handler.go
new file mode 100644
index 0000000000000000000000000000000000000000..0786eedfd05918765c07ed3935e088128a458a8d
--- /dev/null
+++ b/src/module/dashboard_dosbing/transport/admin_handler.go
@@ -0,0 +1,93 @@
+package transport
+
+import (
+	"net/http"
+	"strconv"
+
+	"github.com/labstack/echo"
+	"gitlab.informatika.org/k-01-11/graduit-be/src/module/dashboard_dosbing/config"
+	"gitlab.informatika.org/k-01-11/graduit-be/src/module/dashboard_dosbing/internal/repository"
+	"gitlab.informatika.org/k-01-11/graduit-be/src/module/dashboard_dosbing/internal/usecase"
+	"gitlab.informatika.org/k-01-11/graduit-be/src/utils"
+)
+
+type AdminDashboardDosbingHandler struct {
+	dashboardDosbingUseCase usecase.DashboardDosbingUseCase
+}
+
+func NewAdminDashboardDosbingHandler(cfg config.DashboardDosbingTransportConfig) *AdminDashboardDosbingHandler {
+	dashboardDosbingRepository := repository.NewDashboardDosbingRepository(cfg.DBWrite, cfg.DBRead)
+	dashboardDosbingUsecase := usecase.NewDashboardDosbingUsecase(dashboardDosbingRepository)
+
+	return &AdminDashboardDosbingHandler{
+		dashboardDosbingUseCase: dashboardDosbingUsecase,
+	}
+}
+
+func (t *AdminDashboardDosbingHandler) MountAdmin(group *echo.Group) {
+	group.GET("/dashboard-dosbing", t.GetMahasiswaByDosenId)
+	group.GET("/dashboard-dosbing/jurusan", t.GetAmountMahasiswaByDosenId)
+	group.GET("/dashboard-dosbing/bimbingan", t.GetAmountStatusBimbinganMahasiswaByDosenId)
+}
+
+func (t *AdminDashboardDosbingHandler) GetMahasiswaByDosenId(c echo.Context) error {
+	idDosen := c.QueryParam("id_dosen")
+	sizeStr := c.QueryParam("limit")
+	offsetStr := c.QueryParam("offset")
+
+	if idDosen == "" {
+		return c.JSON(http.StatusInternalServerError, utils.ResponseDetailOutput(false, http.StatusInternalServerError, "insert id_dosen", nil))
+	}
+
+	size, err := strconv.Atoi(sizeStr)
+	if err != nil {
+		// Handle error, maybe return an error response
+		size = 10
+	}
+
+	offset, err := strconv.Atoi(offsetStr)
+	if err != nil {
+		// Handle error, maybe return an error response
+		offset = 0
+	}
+
+	listMahasiswa, err := t.dashboardDosbingUseCase.GetMahasiswaByDosenId(idDosen, offset, size)
+	if err != nil {
+		return c.JSON(http.StatusBadRequest, utils.ResponseDetailOutput(false, http.StatusBadRequest, err.Error(), nil))
+	}
+
+	return c.JSON(http.StatusOK, utils.ResponseDetailOutput(true, http.StatusOK, "List mahasiswa successfully retreived", listMahasiswa))
+
+}
+
+func (t *AdminDashboardDosbingHandler) GetAmountMahasiswaByDosenId(c echo.Context) error {
+	idDosen := c.QueryParam("id_dosen")
+
+	if idDosen == "" {
+		return c.JSON(http.StatusInternalServerError, utils.ResponseDetailOutput(false, http.StatusInternalServerError, "insert id_dosen", nil))
+	}
+
+	listMahasiswa, err := t.dashboardDosbingUseCase.GetAmountMahasiswaByDosenId(idDosen)
+	if err != nil {
+		return c.JSON(http.StatusBadRequest, utils.ResponseDetailOutput(false, http.StatusBadRequest, err.Error(), nil))
+	}
+
+	return c.JSON(http.StatusOK, utils.ResponseDetailOutput(true, http.StatusOK, "List mahasiswa successfully retreived", listMahasiswa[0]))
+
+}
+
+func (t *AdminDashboardDosbingHandler) GetAmountStatusBimbinganMahasiswaByDosenId(c echo.Context) error {
+	idDosen := c.QueryParam("id_dosen")
+
+	if idDosen == "" {
+		return c.JSON(http.StatusInternalServerError, utils.ResponseDetailOutput(false, http.StatusInternalServerError, "insert id_dosen", nil))
+	}
+
+	listMahasiswa, err := t.dashboardDosbingUseCase.GetAmountStatusBimbinganMahasiswaByDosenId(idDosen)
+	if err != nil {
+		return c.JSON(http.StatusBadRequest, utils.ResponseDetailOutput(false, http.StatusBadRequest, err.Error(), nil))
+	}
+
+	return c.JSON(http.StatusOK, utils.ResponseDetailOutput(true, http.StatusOK, "List mahasiswa successfully retreived", listMahasiswa[0]))
+
+}