diff --git a/app/Http/Controllers/Kasir/Menu.php b/app/Http/Controllers/Kasir/Menu.php
new file mode 100644
index 0000000..182d3ab
--- /dev/null
+++ b/app/Http/Controllers/Kasir/Menu.php
@@ -0,0 +1,38 @@
+<?php
+
+namespace App\Http\Controllers\Kasir;
+
+use App\Http\Controllers\Controller;
+use App\Models\Pesanan;
+use App\Models\Produk;
+use Illuminate\Http\Request;
+
+class Menu extends Controller
+{
+    public function index()
+    {
+        return view('pages.menu.index');
+    }
+
+    public function getDataMenu()
+    {
+        $data = Produk::with(['kategori_produk'])->get();
+        $nomor = 1;
+
+        return $datatables = datatables()
+            ->of($data)
+            ->addColumn('nomor', function ($data) use (&$nomor) {
+                return $nomor++;
+            })
+            ->addColumn('kategori_produk', function ($data) {
+                return $data->kategori_produk->nama_kategori_produk;
+            })
+            ->addColumn('ubah', function ($data) {
+                return '<div class="btn-group">
+                            <a href="javascript:void(0)" onclick="print(\'' . $data->id . '\')"><span class="btn btn-xs btn-success"><i class="fas fa-print"></i></span></a>
+                        </div>';
+            })
+            ->rawColumns(['nomor', 'kode_produk', 'ubah'])
+            ->make(true);
+    }
+}
diff --git a/resources/views/pages/menu/index.blade.php b/resources/views/pages/menu/index.blade.php
new file mode 100644
index 0000000..522032d
--- /dev/null
+++ b/resources/views/pages/menu/index.blade.php
@@ -0,0 +1,148 @@
+@extends('layouts.base')
+
+@section('content-header')
+<div class="col-12">
+    <div class="container" style="display: contents">
+        <div class="row mb-2">
+            <div class="col-sm-6">
+                <h1 class="m-0"> Kasir <small>kasir 3.0</small></h1>
+            </div>
+            <div class="col-sm-6">
+                <ol class="breadcrumb float-sm-right">
+                    <li class="breadcrumb-item"><a href="#">Home</a></li>
+                    <li class="breadcrumb-item"><a href="#">Kasir</a></li>
+                    <li class="breadcrumb-item active">History</li>
+                </ol>
+            </div>
+        </div>
+    </div>
+</div>
+@endsection
+
+@section('content')
+<div class="col-12 mt-2">
+    <div class="container" style="display: contents">
+        <div class="card">
+            <div class="card bg-warning" style="min-height:5px; border-radius:1px;"></div>
+            <div class="card-header mt-0 pt-0">
+                <div class="d-flex">
+                    <h3>Daftar Menu</h3>
+                    <!-- Button trigger modal -->
+                    <div class="ml-auto">
+                        <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#modal-default">
+                            Tambah Menu
+                        </button>
+                    </div>
+                </div>
+            </div>
+            <div class="card-body">
+                {{-- <h5 class="card-title">Form List Data</h5> --}}
+                <div class="table-responsive mt-3">
+                    <table id="tabelku" class="table table-hover display" style="width: 100%">
+                        <thead>
+                            <tr>
+                                <th class="text-center">No</th>
+                                <th>Kode Produk</th>
+                                <th>Nama Produk</th>
+                                <th>Harga Produk</th>
+                                <th>Kategori Produk</th>
+                                <th class="text-center"><i class="fas fa-cog"></i></th>
+                            </tr>
+                        </thead>
+                    </table>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+
+<!-- Modal Tambah Menu -->
+<div class="modal fade" id="modal-default">
+    <div class="modal-dialog modal-lg">
+        <div class="modal-content">
+            <div class="modal-header">
+                <h4 class="modal-title">Default Modal</h4>
+                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                    <span aria-hidden="true">&times;</span>
+                </button>
+            </div>
+            <div class="modal-body">
+                <form>
+                    <div class="form-group">
+                        <label for="recipient-name" class="col-form-label">Recipient:</label>
+                        <input type="text" class="form-control" id="recipient-name">
+                    </div>
+                    <div class="form-group">
+                        <label for="message-text" class="col-form-label">Message:</label>
+                        <textarea class="form-control" id="message-text"></textarea>
+                    </div>
+                </form>
+            </div>
+            <div class="modal-footer justify-content-between">
+                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
+                <button type="button" class="btn btn-primary">Save changes</button>
+            </div>
+        </div>
+    </div>
+</div>
+@endsection
+
+@push('styles')
+<!-- Toastr -->
+<style>
+    @media only screen and (max-width : 991px) {
+        /* Styles */
+    }
+
+    @media only screen and (max-width : 768px) {
+        /* Styles */
+    }
+
+    @media only screen and (max-width : 414px) {
+        /* Styles */
+    }
+</style>
+<link rel="stylesheet" href="{{ asset('assets/plugins/toastr/toastr.min.css') }}">
+<link rel="stylesheet" href="{{asset('assets/datatables/datatables.min.css')}}">
+@endpush
+
+@push('scripts')
+<script src="{{ asset('assets/datatables/datatables.min.js') }}"></script>
+<script>
+    $(document).ready(function() {
+        $('#tabelku').DataTable({
+            processing: true,
+            serverSide: true,
+            ajax: "{{ route('menu.getDataMenu') }}",
+            columns: [{
+                    data: 'nomor',
+                    name: 'nomor',
+                    orderable: false,
+                    className: 'text-center'
+                },
+                {
+                    data: 'kode_produk',
+                    name: 'kode_produk'
+                },
+                {
+                    data: 'nama_produk',
+                    name: 'nama_produk'
+                },
+                {
+                    data: 'harga_produk',
+                    name: 'harga_produk'
+                },
+                {
+                    data: 'kategori_produk',
+                    name: 'kategori_produk'
+                },
+                {
+                    data: 'ubah',
+                    name: 'ubah',
+                    className: 'text-center'
+                },
+            ]
+        })
+    })
+</script>
+@endpush
\ No newline at end of file
diff --git a/routes/web.php b/routes/web.php
index 89f7106..e1c6e50 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -1,6 +1,7 @@
 <?php
 
 use App\Http\Controllers\Kasir\History;
+use App\Http\Controllers\Kasir\Menu;
 use App\Http\Controllers\Kasir\Transaksi;
 use Illuminate\Support\Facades\Route;
 
@@ -30,3 +31,8 @@ Route::group(['prefix' => 'history'], function () {
     Route::get('/getDataHistory', [History::class, 'getDataHistory'])->name('history.getDataHistory');
     Route::get('/print/{id}', [History::class, 'print'])->name('history.print');
 });
+
+Route::group(['prefix' => 'menu'], function () {
+    Route::get('/', [Menu::class, 'index'])->name('menu.index');
+    Route::get('/getDataMenu', [Menu::class, 'getDataMenu'])->name('menu.getDataMenu');
+});