From f117c95dc6b27c8014cedfccee339b1c3a10d426 Mon Sep 17 00:00:00 2001
From: Nisse <nisselommerde@gmail.com>
Date: Mon, 9 Sep 2024 15:29:31 -0700
Subject: [PATCH] basics test

---
 app/Enums/OrderStatus.php                     |   5 +-
 .../Controllers/Auth/RegisterController.php   |   2 -
 app/Http/Controllers/ContactController.php    |  27 +-
 app/Http/Controllers/CustomerController.php   |  38 +-
 app/Http/Controllers/DashboardController.php  |  34 ++
 app/Http/Controllers/HomeController.php       |  28 --
 app/Http/Controllers/ManagementController.php |  22 ++
 app/Http/Controllers/OrderController.php      | 101 +++++-
 .../Controllers/OrderProductController.php    |  25 ++
 .../Controllers/PackingSlipController.php     |  30 +-
 .../Controllers/ShippingEntryController.php   |  25 +-
 app/Http/Requests/ContactRequest.php          |   2 +-
 app/Http/Requests/OrderProductRequest.php     |  23 ++
 app/Http/Requests/OrderRequest.php            |  21 +-
 app/Http/Requests/PackingSlipRequest.php      |   2 +-
 app/Http/Requests/ProductServiceRequest.php   |  26 ++
 app/Http/Requests/ProductSizeRequest.php      |  22 ++
 app/Http/Requests/ServiceFileRequest.php      |  24 ++
 app/Livewire/Counter.php                      |  25 ++
 app/Livewire/CreateOrder.php                  |  42 +++
 app/Livewire/CustomerAndContactSelect.php     |  41 +++
 app/Livewire/OrderProductsCreate.php          | 158 +++++++++
 app/Livewire/OrdersTable.php                  |  61 ++++
 app/Models/Contact.php                        |   9 +-
 app/Models/Customer.php                       |   2 +-
 app/Models/Order.php                          |  70 +++-
 app/Models/OrderProduct.php                   |  37 ++
 app/Models/PackingSlip.php                    |   5 +-
 app/Models/ProductService.php                 |  33 ++
 app/Models/ProductSize.php                    |  24 ++
 app/Models/ServiceFile.php                    |  28 ++
 app/Models/ShippingEntry.php                  |   4 +-
 composer.json                                 |   5 +-
 composer.lock                                 |  94 ++++-
 database/factories/ContactFactory.php         |   2 +-
 database/factories/CustomerFactory.php        |   2 +-
 database/factories/OrderFactory.php           |  14 +-
 database/factories/OrderProductFactory.php    |  23 ++
 database/factories/PackingSlipFactory.php     |   4 +-
 database/factories/ProductServiceFactory.php  |  25 ++
 database/factories/ProductSizeFactory.php     |  22 ++
 database/factories/ServiceFileFactory.php     |  25 ++
 database/factories/ShippingEntryFactory.php   |   3 +-
 ...24_09_03_204957_create_customers_table.php |   3 +-
 ...024_09_04_203012_create_contacts_table.php |   3 +-
 ...9_05_215151_create_packing_slips_table.php |   5 +-
 ...6_213725_create_shipping_entries_table.php |   3 +-
 .../2024_09_09_194631_create_orders_table.php |  16 +-
 ..._10_224439_create_order_products_table.php |  26 ++
 ...0_224947_create_product_services_table.php |  28 ++
 ...9_10_225029_create_service_files_table.php |  30 ++
 ...9_10_230904_create_product_sizes_table.php |  25 ++
 database/seeders/CustomerSeeder.php           |  92 +++++
 database/seeders/DatabaseSeeder.php           |  78 +----
 pint.json                                     |  11 +
 resources/sass/app.scss                       |  11 +
 resources/views/customers/index.blade.php     | 144 --------
 resources/views/customers/show.blade.php      |  12 +-
 resources/views/dashboard.blade.php           |  59 ++++
 resources/views/home.blade.php                |  23 --
 resources/views/layouts/app.blade.php         |  60 +---
 resources/views/layouts/nav.blade.php         |  97 ++++++
 resources/views/livewire/counter.blade.php    |   7 +
 .../views/livewire/create-order.blade.php     |   3 +
 .../customer-and-contact-select.blade.php     |  44 +++
 .../livewire/order-products-create.blade.php  | 299 ++++++++++++++++
 .../views/livewire/orders-table.blade.php     | 111 ++++++
 resources/views/management/index.blade.php    |  27 ++
 .../views/order-products/create.blade.php     |  39 +++
 resources/views/orders/create.blade.php       | 329 +++++++++++-------
 resources/views/orders/index.blade.php        |  91 +++++
 resources/views/orders/show.blade.php         |  71 ++++
 .../partials/customers/edit-modal.blade.php   | 110 ------
 .../{ => index}/create-modal.blade.php        |   0
 .../{ => index}/delete-all-modal.blade.php    |   0
 .../customers/show-overview.blade.php         |  76 ----
 .../contacts-tab.blade.php}                   |   8 +-
 .../customers/show/overview-tab.blade.php     |   6 +
 .../packing-slips-tab.blade.php}              |  10 +-
 .../shipping-info-tab.blade.php}              |   0
 .../management/index/customers.blade.php      |  76 ++++
 .../index/management-tabs.blade.php           |  43 +++
 .../management/index/packing-slips.blade.php  |   5 +
 .../management/index/service-files.blade.php  |   5 +
 .../vendor/pagination/bootstrap-4.blade.php   |  46 ---
 .../vendor/pagination/bootstrap-5.blade.php   |  88 -----
 .../views/vendor/pagination/default.blade.php |  46 ---
 .../vendor/pagination/semantic-ui.blade.php   |  36 --
 .../pagination/simple-bootstrap-4.blade.php   |  27 --
 .../pagination/simple-bootstrap-5.blade.php   |  29 --
 .../pagination/simple-default.blade.php       |  19 -
 .../pagination/simple-tailwind.blade.php      |  25 --
 .../vendor/pagination/tailwind.blade.php      | 106 ------
 routes/web.php                                |  19 +-
 94 files changed, 2492 insertions(+), 1250 deletions(-)
 create mode 100644 app/Http/Controllers/DashboardController.php
 delete mode 100644 app/Http/Controllers/HomeController.php
 create mode 100644 app/Http/Controllers/ManagementController.php
 create mode 100644 app/Http/Controllers/OrderProductController.php
 create mode 100644 app/Http/Requests/OrderProductRequest.php
 create mode 100644 app/Http/Requests/ProductServiceRequest.php
 create mode 100644 app/Http/Requests/ProductSizeRequest.php
 create mode 100644 app/Http/Requests/ServiceFileRequest.php
 create mode 100644 app/Livewire/Counter.php
 create mode 100644 app/Livewire/CreateOrder.php
 create mode 100644 app/Livewire/CustomerAndContactSelect.php
 create mode 100644 app/Livewire/OrderProductsCreate.php
 create mode 100644 app/Livewire/OrdersTable.php
 create mode 100644 app/Models/OrderProduct.php
 create mode 100644 app/Models/ProductService.php
 create mode 100644 app/Models/ProductSize.php
 create mode 100644 app/Models/ServiceFile.php
 create mode 100644 database/factories/OrderProductFactory.php
 create mode 100644 database/factories/ProductServiceFactory.php
 create mode 100644 database/factories/ProductSizeFactory.php
 create mode 100644 database/factories/ServiceFileFactory.php
 create mode 100644 database/migrations/2024_09_10_224439_create_order_products_table.php
 create mode 100644 database/migrations/2024_09_10_224947_create_product_services_table.php
 create mode 100644 database/migrations/2024_09_10_225029_create_service_files_table.php
 create mode 100644 database/migrations/2024_09_10_230904_create_product_sizes_table.php
 create mode 100644 database/seeders/CustomerSeeder.php
 create mode 100644 pint.json
 delete mode 100644 resources/views/customers/index.blade.php
 create mode 100644 resources/views/dashboard.blade.php
 delete mode 100644 resources/views/home.blade.php
 create mode 100644 resources/views/layouts/nav.blade.php
 create mode 100644 resources/views/livewire/counter.blade.php
 create mode 100644 resources/views/livewire/create-order.blade.php
 create mode 100644 resources/views/livewire/customer-and-contact-select.blade.php
 create mode 100644 resources/views/livewire/order-products-create.blade.php
 create mode 100644 resources/views/livewire/orders-table.blade.php
 create mode 100644 resources/views/management/index.blade.php
 create mode 100644 resources/views/order-products/create.blade.php
 create mode 100644 resources/views/orders/index.blade.php
 create mode 100644 resources/views/orders/show.blade.php
 delete mode 100644 resources/views/partials/customers/edit-modal.blade.php
 rename resources/views/partials/customers/{ => index}/create-modal.blade.php (100%)
 rename resources/views/partials/customers/{ => index}/delete-all-modal.blade.php (100%)
 delete mode 100644 resources/views/partials/customers/show-overview.blade.php
 rename resources/views/partials/customers/{show-contacts.blade.php => show/contacts-tab.blade.php} (83%)
 create mode 100644 resources/views/partials/customers/show/overview-tab.blade.php
 rename resources/views/partials/customers/{show-packing-slips.blade.php => show/packing-slips-tab.blade.php} (86%)
 rename resources/views/partials/customers/{show-shipping-info.blade.php => show/shipping-info-tab.blade.php} (100%)
 create mode 100644 resources/views/partials/management/index/customers.blade.php
 create mode 100644 resources/views/partials/management/index/management-tabs.blade.php
 create mode 100644 resources/views/partials/management/index/packing-slips.blade.php
 create mode 100644 resources/views/partials/management/index/service-files.blade.php
 delete mode 100644 resources/views/vendor/pagination/bootstrap-4.blade.php
 delete mode 100644 resources/views/vendor/pagination/bootstrap-5.blade.php
 delete mode 100644 resources/views/vendor/pagination/default.blade.php
 delete mode 100644 resources/views/vendor/pagination/semantic-ui.blade.php
 delete mode 100644 resources/views/vendor/pagination/simple-bootstrap-4.blade.php
 delete mode 100644 resources/views/vendor/pagination/simple-bootstrap-5.blade.php
 delete mode 100644 resources/views/vendor/pagination/simple-default.blade.php
 delete mode 100644 resources/views/vendor/pagination/simple-tailwind.blade.php
 delete mode 100644 resources/views/vendor/pagination/tailwind.blade.php

diff --git a/app/Enums/OrderStatus.php b/app/Enums/OrderStatus.php
index 77ae5cd..0086032 100644
--- a/app/Enums/OrderStatus.php
+++ b/app/Enums/OrderStatus.php
@@ -4,9 +4,8 @@
 
 enum OrderStatus: string
 {
-    case ORDER = 'Order';
     case APPROVED = 'Approved';
     case PRODUCTION = 'Production';
-    case COMPLETED = 'Completed';
-    case CANCELLED = 'Cancelled';
+    case SHIPPED = 'Shipped';
+    case INVOICED = 'Invoiced';
 }
diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php
index 961ea36..75ecdb1 100644
--- a/app/Http/Controllers/Auth/RegisterController.php
+++ b/app/Http/Controllers/Auth/RegisterController.php
@@ -43,7 +43,6 @@ public function __construct()
     /**
      * Get a validator for an incoming registration request.
      *
-     * @param  array  $data
      * @return \Illuminate\Contracts\Validation\Validator
      */
     protected function validator(array $data)
@@ -58,7 +57,6 @@ protected function validator(array $data)
     /**
      * Create a new user instance after a valid registration.
      *
-     * @param  array  $data
      * @return \App\Models\User
      */
     protected function create(array $data)
diff --git a/app/Http/Controllers/ContactController.php b/app/Http/Controllers/ContactController.php
index 4172381..dbafc47 100644
--- a/app/Http/Controllers/ContactController.php
+++ b/app/Http/Controllers/ContactController.php
@@ -9,15 +9,12 @@
 
 class ContactController extends Controller
 {
-    public function index()
-    {
-
-    }
+    public function index() {}
 
     public function create(Request $request)
     {
         return view('contacts.create', [
-            'customers' => Customer::all(),
+            'customers'    => Customer::all(),
             'fromCustomer' => $request->get('customer'),
         ]);
     }
@@ -29,17 +26,11 @@ public function store(ContactRequest $request)
         return redirect()->route('customers.show', [$contact->customer, 'contacts'])->with('status', 'Contact created successfully');
     }
 
-    public function show($id)
-    {
-    }
+    public function show($id) {}
 
-    public function edit($id)
-    {
-    }
+    public function edit($id) {}
 
-    public function update(Request $request, $id)
-    {
-    }
+    public function update(Request $request, $id) {}
 
     public function requestDestroy(Request $request)
     {
@@ -49,11 +40,5 @@ public function requestDestroy(Request $request)
         return redirect()->route('customers.show', [$contact->customer->id, 'contacts'])->with('status', 'Contact deleted successfully');
     }
 
-    public function destroy($id)
-    {
-//        $contact = Contact::findOrFail($id);
-//        $contact->delete();
-//
-//        return redirect()->route('customers.show', $contact->customer()->iud)->with('status', 'Contact deleted successfully');
-    }
+    public function destroy($id) {}
 }
diff --git a/app/Http/Controllers/CustomerController.php b/app/Http/Controllers/CustomerController.php
index 0bc5ee0..13ebe99 100644
--- a/app/Http/Controllers/CustomerController.php
+++ b/app/Http/Controllers/CustomerController.php
@@ -5,25 +5,18 @@
 use App\Http\Requests\CustomerRequest;
 use App\Models\Customer;
 use App\Models\PackingSlip;
-use App\Models\ShippingEntry;
 use Illuminate\Http\Request;
 use Illuminate\Support\Carbon;
 
 class CustomerController extends Controller
 {
-    public function index(Request $request)
-    {
-        return view('customers.index', [
-            'customers' => Customer::all(),
-            'tab' => $request->tab,
-        ]);
-    }
+    public function index() {}
 
     public function store(CustomerRequest $request)
     {
         Customer::create($request->validated());
 
-        return redirect()->route('customers.index')->with('status', 'Customer created successfully.');
+        return redirect()->route('management.index')->with('status', 'Customer created successfully.');
     }
 
     public function create()
@@ -31,28 +24,19 @@ public function create()
         return view('customers.create');
     }
 
-    public function show(Customer $customer, string $tab = null)
+    public function show(Customer $customer, ?string $tab = null)
     {
-        if (!$tab) {
+        if (! $tab) {
             return redirect()->route('customers.show', [$customer, 'tab' => 'details']);
         }
 
-        $orders = $customer->orders();
-        $priorities = '"production", "approved", "order"';
-
         return view('customers.show', [
-            'tab' => $tab,
-            'customer' => $customer,
-            'active_orders' => $orders
-                ->where('status', '!=', 'cancelled')
-                ->where('status', '!=', 'completed')
-                ->orderBy('rush', 'desc')
-                ->orderBy('due_date', 'desc')
-                ->paginate(10),
-            'contacts' => $customer->contacts()->get(),
-            'packingSlips' => PackingSlip::where('customer_id', $customer->id)->orderByDesc('date_received')->paginate(15),
+            'tab'             => $tab,
+            'customer'        => $customer,
+            'contacts'        => $customer->contacts()->get(),
+            'packingSlips'    => PackingSlip::where('customer_id', $customer->id)->orderByDesc('date_received')->paginate(15),
             'shippingEntries' => $customer->shippingEntries()->get(),
-            'today' => Carbon::today()->format('Y-m-d'),
+            'today'           => Carbon::today()->format('Y-m-d'),
         ]);
     }
 
@@ -68,13 +52,13 @@ public function requestDestroy(Request $request)
         $customer = Customer::find($request->id);
         $customer->delete();
 
-        return redirect()->route('customers.index')->with('status', 'Customer deleted successfully.');
+        return redirect()->route('management.index')->with('status', 'Customer deleted successfully.');
     }
 
     public function destroy(Customer $customer)
     {
         $customer->delete();
 
-        return redirect()->route('customers.index')->with('status', 'Customer deleted successfully.');
+        return redirect()->route('management.index')->with('status', 'Customer deleted successfully.');
     }
 }
diff --git a/app/Http/Controllers/DashboardController.php b/app/Http/Controllers/DashboardController.php
new file mode 100644
index 0000000..14b83d5
--- /dev/null
+++ b/app/Http/Controllers/DashboardController.php
@@ -0,0 +1,34 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use Illuminate\Http\Request;
+use Illuminate\Support\Carbon;
+
+class DashboardController extends Controller
+{
+    /**
+     * Create a new controller instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        $this->middleware('auth');
+    }
+
+    /**
+     * Show the application dashboard.
+     */
+    public function index(Request $request)
+    {
+        if (! $request->get('tab')) {
+            return redirect()->route('dashboard', ['tab' => 'active_orders']);
+        }
+
+        return view('dashboard', [
+            'today' => Carbon::today(),
+            'tab'   => $request->get('tab'),
+        ]);
+    }
+}
diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php
deleted file mode 100644
index 7cbc2c3..0000000
--- a/app/Http/Controllers/HomeController.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-namespace App\Http\Controllers;
-
-use Illuminate\Http\Request;
-
-class HomeController extends Controller
-{
-    /**
-     * Create a new controller instance.
-     *
-     * @return void
-     */
-    public function __construct()
-    {
-        $this->middleware('auth');
-    }
-
-    /**
-     * Show the application dashboard.
-     *
-     * @return \Illuminate\Contracts\Support\Renderable
-     */
-    public function index()
-    {
-        return view('home');
-    }
-}
diff --git a/app/Http/Controllers/ManagementController.php b/app/Http/Controllers/ManagementController.php
new file mode 100644
index 0000000..2a55294
--- /dev/null
+++ b/app/Http/Controllers/ManagementController.php
@@ -0,0 +1,22 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Models\Customer;
+
+class ManagementController extends Controller
+{
+    protected string $defaultTab = 'customers';
+
+    public function index(?string $tab = null)
+    {
+        if (! $tab) {
+            return redirect()->route('management.index', ['tab' => $this->defaultTab]);
+        }
+
+        return view('management.index', [
+            'customers' => Customer::all(),
+            'tab' => $tab,
+        ]);
+    }
+}
diff --git a/app/Http/Controllers/OrderController.php b/app/Http/Controllers/OrderController.php
index 5148ec7..2aebeba 100644
--- a/app/Http/Controllers/OrderController.php
+++ b/app/Http/Controllers/OrderController.php
@@ -4,45 +4,116 @@
 
 use App\Enums\OrderStatus;
 use App\Enums\OrderType;
+use App\Http\Requests\OrderRequest;
 use App\Models\Customer;
+use App\Models\Order;
+use App\Models\OrderProduct;
+use App\Models\ProductService;
+use App\Models\ProductSize;
+use App\Models\ServiceFile;
 use Illuminate\Http\Request;
 use Illuminate\Support\Carbon;
 
 class OrderController extends Controller
 {
-    public function index()
+    public function index(Request $request)
     {
+        if (! $request->get('tab')) {
+            return redirect()->route('orders.index', ['tab' => 'all']);
+        }
 
+        return view('orders.index', [
+            'tab' => $request->get('tab'),
+        ]);
     }
 
     public function create()
     {
         return view('orders.create', [
-            'order_types' => OrderType::cases(),
+            'order_types'  => OrderType::cases(),
             'order_status' => OrderStatus::cases(),
-            'customers' => Customer::all(),
-            'today' => Carbon::today()->format('Y-m-d'),
-            'due_default' => Carbon::today()->addDay(10)->format('Y-m-d')
+            'customers'    => Customer::all(),
+            'today'        => Carbon::today()->format('Y-m-d'),
+            'due_default'  => Carbon::today()->addDay(10)->format('Y-m-d'),
         ]);
     }
 
-    public function store(Request $request)
+    public function store(OrderRequest $request)
     {
+        // Create order
+        $order = Order::create($request->safe()->only([
+            'customer_id',
+            'contact_id',
+            'order_type',
+            'status',
+            'customer_po',
+            'order_date',
+            'due_date',
+            'rush',
+            'new_art',
+            'digitizing',
+            'repeat',
+            'purchased_garments',
+            'customer_supplied_file',
+            'notes',
+        ]));
+
+        // Create orderProducts
+        for ($i = 0; $i < count($request->get('productInputCount')) - 1; $i++) {
+
+            $orderProduct = OrderProduct::create([
+                'order_id'     => $order->id,
+                'sku'          => $request->get('sku')[$i],
+                'product_name' => $request->get('product_name')[$i],
+                'color'        => $request->get('product_color')[$i],
+            ]);
+
+            // Create productSizes
+            foreach (['xs', 's', 'm', 'l', 'xl', '2xl', '3xl', 'osfa'] as $size) {
+                ProductSize::create([
+                    'order_product_id' => $orderProduct->id,
+                    'amount'           => $request->get('size_'.$size)[$i],
+                    'size'             => $size,
+                ]);
+            }
+        }
+
+        // Create productServices
+        for ($i = 0; $i < count($request->get('serviceInputCount')) - 1; $i++) {
+            $productService = ProductService::create([
+                'order_id'     => $order->id,
+                'service_type' => $request->get('service_type')[$i],
+                'placement'    => $request->get('placement')[$i],
+                'setup_amount' => $request->get('setup_amount')[$i],
+                'amount'       => $request->get('amount')[$i],
+                'amount_price' => $request->get('amount_price')[$i],
+            ]);
+
+            ServiceFile::create([
+                'product_service_id' => $productService,
+                'code'               => $request->get('service_file_name')[$i],
+                'name'               => $request->get('logo_name')[$i],
+                'width'              => $request->get('service_width')[$i],
+                'height'             => $request->get('service_height')[$i],
+                'unit'               => $request->get('service_setup_unit')[$i],
+                'setup_number'       => $request->get('setup_number')[$i],
+            ]);
+        }
+
+        return redirect()->route('order-products.create', ['order' => $order->id]);
     }
 
     public function show($id)
     {
+        return view('orders.show', [
+            'order' => Order::find($id),
+            'tab'   => 'details',
+        ]);
     }
 
-    public function edit($id)
-    {
-    }
+    public function edit($id) {}
 
-    public function update(Request $request, $id)
-    {
-    }
+    public function update(Request $request, $id) {}
 
-    public function destroy($id)
-    {
-    }
+    public function destroy($id) {}
 }
diff --git a/app/Http/Controllers/OrderProductController.php b/app/Http/Controllers/OrderProductController.php
new file mode 100644
index 0000000..e283cb6
--- /dev/null
+++ b/app/Http/Controllers/OrderProductController.php
@@ -0,0 +1,25 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use Illuminate\Http\Request;
+
+class OrderProductController extends Controller
+{
+    public function index() {}
+
+    public function create()
+    {
+        return view('order-products.create');
+    }
+
+    public function store(Request $request) {}
+
+    public function show($id) {}
+
+    public function edit($id) {}
+
+    public function update(Request $request, $id) {}
+
+    public function destroy($id) {}
+}
diff --git a/app/Http/Controllers/PackingSlipController.php b/app/Http/Controllers/PackingSlipController.php
index eed83c9..9fa5c4e 100644
--- a/app/Http/Controllers/PackingSlipController.php
+++ b/app/Http/Controllers/PackingSlipController.php
@@ -9,43 +9,29 @@
 
 class PackingSlipController extends Controller
 {
-    public function index()
-    {
+    public function index() {}
 
-    }
-
-    public function create()
-    {
-    }
+    public function create() {}
 
     public function store(PackingSlipRequest $request)
     {
         PackingSlip::create($request->validated());
 
-        if ($request->get('from_customer'))
-        {
+        if ($request->get('from_customer')) {
             return redirect()->route('customers.show', [
                 Customer::find($request->get('customer_id')),
-                'tab' => 'packing'
+                'tab' => 'packing',
             ]);
         }
 
         return redirect()->back(); //todo: change to packing slips page
     }
 
-    public function show($id)
-    {
-    }
+    public function show($id) {}
 
-    public function edit($id)
-    {
-    }
+    public function edit($id) {}
 
-    public function update(Request $request, $id)
-    {
-    }
+    public function update(Request $request, $id) {}
 
-    public function destroy($id)
-    {
-    }
+    public function destroy($id) {}
 }
diff --git a/app/Http/Controllers/ShippingEntryController.php b/app/Http/Controllers/ShippingEntryController.php
index ad8797b..9b638dc 100644
--- a/app/Http/Controllers/ShippingEntryController.php
+++ b/app/Http/Controllers/ShippingEntryController.php
@@ -8,14 +8,9 @@
 
 class ShippingEntryController extends Controller
 {
-    public function index()
-    {
+    public function index() {}
 
-    }
-
-    public function create()
-    {
-    }
+    public function create() {}
 
     public function store(ShippingEntryRequest $request)
     {
@@ -24,19 +19,11 @@ public function store(ShippingEntryRequest $request)
         return redirect()->route('customers.show', [$entry->customer, 'tab' => 'shipping']);
     }
 
-    public function show($id)
-    {
-    }
+    public function show($id) {}
 
-    public function edit($id)
-    {
-    }
+    public function edit($id) {}
 
-    public function update(Request $request, $id)
-    {
-    }
+    public function update(Request $request, $id) {}
 
-    public function destroy($id)
-    {
-    }
+    public function destroy($id) {}
 }
diff --git a/app/Http/Requests/ContactRequest.php b/app/Http/Requests/ContactRequest.php
index ca8daf3..fdd3222 100644
--- a/app/Http/Requests/ContactRequest.php
+++ b/app/Http/Requests/ContactRequest.php
@@ -16,7 +16,7 @@ public function rules(): array
             'last_name' => 'string',
             'email' => 'string',
             'phone' => 'string',
-            'notes' => 'string'
+            'notes' => 'string',
         ];
     }
 
diff --git a/app/Http/Requests/OrderProductRequest.php b/app/Http/Requests/OrderProductRequest.php
new file mode 100644
index 0000000..2382143
--- /dev/null
+++ b/app/Http/Requests/OrderProductRequest.php
@@ -0,0 +1,23 @@
+<?php
+
+namespace App\Http\Requests;
+
+use Illuminate\Foundation\Http\FormRequest;
+
+class OrderProductRequest extends FormRequest
+{
+    public function rules(): array
+    {
+        return [
+            'order_id' => ['required', 'exists:orders'],
+            'sku' => ['string', 'nullable'],
+            'product_name' => ['required'],
+            'color' => ['string', 'nullable'],
+        ];
+    }
+
+    public function authorize(): bool
+    {
+        return true;
+    }
+}
diff --git a/app/Http/Requests/OrderRequest.php b/app/Http/Requests/OrderRequest.php
index 8da7f60..70458b3 100644
--- a/app/Http/Requests/OrderRequest.php
+++ b/app/Http/Requests/OrderRequest.php
@@ -9,19 +9,20 @@ class OrderRequest extends FormRequest
     public function rules(): array
     {
         return [
-            'customer_id' => ['required', 'exists:customers'],
-            'internal_po' => ['required'],
-            'customer_po' => ['required'],
+            'customer_id' => ['required', 'exists:customers,id'],
+            'contact_id' => ['nullable', 'exists:contacts,id'],
+            'customer_po' => ['required', 'string'],
+            'order_type' => ['required', 'string'],
             'order_date' => ['required', 'date'],
             'due_date' => ['required', 'date'],
             'status' => ['required'],
-            'rush' => ['boolean'],
-            'new_art' => ['boolean'],
-            'digitizing' => ['boolean'],
-            'repeat' => ['boolean'],
-            'purchased_garments' => ['boolean'],
-            'customer_supplied_file' => ['boolean'],
-            'notes' => ['required'],
+            'rush' => ['nullable'],
+            'new_art' => ['nullable'],
+            'digitizing' => ['nullable'],
+            'repeat' => ['nullable'],
+            'purchased_garments' => ['nullable'],
+            'customer_supplied_file' => ['nullable'],
+            'notes' => ['nullable'],
         ];
     }
 
diff --git a/app/Http/Requests/PackingSlipRequest.php b/app/Http/Requests/PackingSlipRequest.php
index 043b92c..61a84a3 100644
--- a/app/Http/Requests/PackingSlipRequest.php
+++ b/app/Http/Requests/PackingSlipRequest.php
@@ -14,7 +14,7 @@ public function rules(): array
             'order_id' => 'string|nullable',
             'amount' => 'required|string',
             'contents' => 'required|string',
-            'from_customer' => 'required|bool'
+            'from_customer' => 'required|bool',
         ];
     }
 
diff --git a/app/Http/Requests/ProductServiceRequest.php b/app/Http/Requests/ProductServiceRequest.php
new file mode 100644
index 0000000..0b743db
--- /dev/null
+++ b/app/Http/Requests/ProductServiceRequest.php
@@ -0,0 +1,26 @@
+<?php
+
+namespace App\Http\Requests;
+
+use Illuminate\Foundation\Http\FormRequest;
+
+class ProductServiceRequest extends FormRequest
+{
+    public function rules(): array
+    {
+        return [
+            'order_product_id' => ['required', 'exists:order_products'],
+            'service_file_id' => ['nullable', 'exists:service_files'],
+            'service_type' => ['required'],
+            'placement' => ['required'],
+            'setup_amount' => ['required'],
+            'amount' => ['nullable'],
+            'amount_price' => ['nullable'],
+        ];
+    }
+
+    public function authorize(): bool
+    {
+        return true;
+    }
+}
diff --git a/app/Http/Requests/ProductSizeRequest.php b/app/Http/Requests/ProductSizeRequest.php
new file mode 100644
index 0000000..272716f
--- /dev/null
+++ b/app/Http/Requests/ProductSizeRequest.php
@@ -0,0 +1,22 @@
+<?php
+
+namespace App\Http\Requests;
+
+use Illuminate\Foundation\Http\FormRequest;
+
+class ProductSizeRequest extends FormRequest
+{
+    public function rules(): array
+    {
+        return [
+            'order_product_id' => ['required', 'exists:order_products'],
+            'size' => ['required'],
+            'amount' => ['required'],
+        ];
+    }
+
+    public function authorize(): bool
+    {
+        return true;
+    }
+}
diff --git a/app/Http/Requests/ServiceFileRequest.php b/app/Http/Requests/ServiceFileRequest.php
new file mode 100644
index 0000000..f66ae36
--- /dev/null
+++ b/app/Http/Requests/ServiceFileRequest.php
@@ -0,0 +1,24 @@
+<?php
+
+namespace App\Http\Requests;
+
+use Illuminate\Foundation\Http\FormRequest;
+
+class ServiceFileRequest extends FormRequest
+{
+    public function rules(): array
+    {
+        return [
+            'code' => ['required'],
+            'name' => ['required'],
+            'width' => ['required', 'numeric'],
+            'height' => ['required', 'numeric'],
+            'unit' => ['required'],
+        ];
+    }
+
+    public function authorize(): bool
+    {
+        return true;
+    }
+}
diff --git a/app/Livewire/Counter.php b/app/Livewire/Counter.php
new file mode 100644
index 0000000..b4ee99c
--- /dev/null
+++ b/app/Livewire/Counter.php
@@ -0,0 +1,25 @@
+<?php
+
+namespace App\Livewire;
+
+use Livewire\Component;
+
+class Counter extends Component
+{
+    public $count = 1;
+
+    public function increment()
+    {
+        $this->count++;
+    }
+
+    public function decrement()
+    {
+        $this->count--;
+    }
+
+    public function render()
+    {
+        return view('livewire.counter');
+    }
+}
diff --git a/app/Livewire/CreateOrder.php b/app/Livewire/CreateOrder.php
new file mode 100644
index 0000000..6c585dc
--- /dev/null
+++ b/app/Livewire/CreateOrder.php
@@ -0,0 +1,42 @@
+<?php
+
+namespace App\Livewire;
+
+use App\Enums\OrderStatus;
+use App\Enums\OrderType;
+use App\Models\Customer;
+use Illuminate\Database\Eloquent\Collection;
+use Illuminate\Support\Carbon;
+use Livewire\Component;
+
+class CreateOrder extends Component
+{
+    public Collection $customers;
+
+    public string $selectedCustomer;
+
+    public $contacts;
+
+    public function mount(Collection $customers)
+    {
+        $this->customers = $customers;
+        $this->contacts = $customers->first()->contacts;
+    }
+
+    public function getContacts()
+    {
+        $this->contacts = Customer::find($this->selectedCustomer)->contacts;
+    }
+
+    public function render()
+    {
+        return view('livewire.create-order', [
+            'contacts' => $this->contacts,
+            'order_types' => OrderType::cases(),
+            'order_status' => OrderStatus::cases(),
+            'customers' => $this->customers,
+            'today' => Carbon::today()->format('Y-m-d'),
+            'due_default' => Carbon::today()->addDay(10)->format('Y-m-d'),
+        ]);
+    }
+}
diff --git a/app/Livewire/CustomerAndContactSelect.php b/app/Livewire/CustomerAndContactSelect.php
new file mode 100644
index 0000000..14c801a
--- /dev/null
+++ b/app/Livewire/CustomerAndContactSelect.php
@@ -0,0 +1,41 @@
+<?php
+
+namespace App\Livewire;
+
+use App\Models\Customer;
+use Illuminate\Support\Collection;
+use Livewire\Component;
+
+class CustomerAndContactSelect extends Component
+{
+    public Collection $customers;
+
+    public Collection $contacts;
+
+    public string $selectedCustomer;
+
+    public function mount(Collection $customers)
+    {
+        $this->customers = $customers;
+
+        if (isset($this->selectedCustomer)) {
+            $this->contacts = Customer::find($this->selectedCustomer)->contacts;
+        } else {
+            $this->contacts = $customers->first()->contacts;
+        }
+
+    }
+
+    public function updateContactList()
+    {
+        $this->contacts = Customer::find($this->selectedCustomer)->contacts;
+    }
+
+    public function render()
+    {
+        return view('livewire.customer-and-contact-select', [
+            'customers' => $this->customers,
+            'contacts' => $this->contacts,
+        ]);
+    }
+}
diff --git a/app/Livewire/OrderProductsCreate.php b/app/Livewire/OrderProductsCreate.php
new file mode 100644
index 0000000..89867a6
--- /dev/null
+++ b/app/Livewire/OrderProductsCreate.php
@@ -0,0 +1,158 @@
+<?php
+
+namespace App\Livewire;
+
+use Exception;
+use Illuminate\Support\Collection;
+use Livewire\Component;
+
+class OrderProductsCreate extends Component
+{
+    public Collection $productInputs;
+
+    public Collection $serviceInputs;
+
+    public array $sizes = [];
+
+    public array $totals = [];
+
+    public array $units = [];
+
+    public array $prices = [];
+
+    public array $priceTotals = [];
+
+    public int $totalQuantity = 0;
+
+    public string $totalPrice = '$0.00';
+
+    public function updated()
+    {
+        try {
+            foreach ($this->sizes as $index => $size) {
+                $this->totals[$index] = array_sum($size);
+            }
+        } catch (Exception $e) {
+        }
+
+        try {
+            foreach ($this->units as $index => $unit) {
+                $this->priceTotals[$index] = $unit * $this->prices[$index];
+            }
+        } catch (Exception $e) {
+        }
+
+        $this->totalQuantity = array_sum($this->totals);
+
+        $this->totalPrice = '$'.number_format(round(array_sum($this->priceTotals), 2), 2);
+
+    }
+
+    public function addProductInput()
+    {
+        $index = $this->productInputs->count();
+        $this->productInputs->push([
+            $index => [
+                'sku'           => '',
+                'product_name'  => '',
+                'product_color' => '',
+                'size_xs'       => '',
+                'size_s'        => '',
+                'size_m'        => '',
+                'size_l'        => '',
+                'size_xl'       => '',
+                'size_2xl'      => '',
+                'size_3xl'      => '',
+                'size_osfa'     => '',
+                'product_total' => '',
+            ],
+        ]);
+    }
+
+    public function determineAddProductRow($index)
+    {
+        if ($index == $this->productInputs->count() - 1) {
+            $this->addProductInput();
+        }
+    }
+
+    public function determineAddServiceProductRow($index)
+    {
+        if ($index == $this->serviceInputs->count() - 1) {
+            $this->addServiceInput();
+        }
+    }
+
+    public function removeProductInput($key)
+    {
+        if ($this->productInputs->count() > 1) {
+            $this->productInputs->pull($key);
+        }
+    }
+
+    public function addServiceInput()
+    {
+        $this->serviceInputs->push([
+            $this->serviceInputs->count() => [
+                'service_name'        => '',
+                'product_name'        => '',
+                'product_color'       => '',
+                'logo_name'           => '',
+                'setup_number'        => '',
+                'service_width'       => '',
+                'service_height'      => '',
+                'service_setup_unit'  => '',
+                'service_setup_price' => '',
+                'service_total'       => '',
+            ],
+        ]);
+    }
+
+    public function removeServiceInput($key)
+    {
+        if ($this->serviceInputs->count() > 1) {
+            $this->serviceInputs->pull($key);
+        }
+    }
+
+    public function mount()
+    {
+        $this->fill([
+            'productInputs' => collect([
+                [
+                    'sku'           => '',
+                    'product_name'  => '',
+                    'product_color' => '',
+                    'size_xs'       => '',
+                    'size_s'        => '',
+                    'size_m'        => '',
+                    'size_l'        => '',
+                    'size_xl'       => '',
+                    'size_2xl'      => '',
+                    'size_3xl'      => '',
+                    'size_osfa'     => '',
+                    'product_total' => '0',
+                ],
+            ]),
+            'serviceInputs' => collect([
+                [
+                    'sku'                 => '',
+                    'product_name'        => '',
+                    'product_color'       => '',
+                    'logo_name'           => '',
+                    'setup_number'        => '',
+                    'service_width'       => '',
+                    'service_height'      => '',
+                    'service_setup_unit'  => '',
+                    'service_setup_price' => '',
+                    'service_total'       => '',
+                ],
+            ]),
+        ]);
+    }
+
+    public function render()
+    {
+        return view('livewire.order-products-create');
+    }
+}
diff --git a/app/Livewire/OrdersTable.php b/app/Livewire/OrdersTable.php
new file mode 100644
index 0000000..6e80d1e
--- /dev/null
+++ b/app/Livewire/OrdersTable.php
@@ -0,0 +1,61 @@
+<?php
+
+namespace App\Livewire;
+
+use App\Models\Order;
+use Illuminate\Support\Carbon;
+use Livewire\Component;
+use Livewire\WithPagination;
+
+class OrdersTable extends Component
+{
+    use WithPagination;
+
+    protected $paginationTheme = 'bootstrap';
+
+    public bool $showCustomerColumn;
+
+    public string $orderType = 'active';
+
+    public string $search = '';
+
+    public string $title = '';
+
+    public string $customer_id = '';
+
+    public Carbon $today;
+
+    public function mount(bool $showCustomerColumn, string $orderType, string $title, ?string $customer_id = null)
+    {
+        $this->today = Carbon::today();
+        $this->showCustomerColumn = $showCustomerColumn;
+        $this->orderType = $orderType;
+        $this->title = $title;
+        $this->customer_id = $customer_id ?? '';
+    }
+
+    public function render()
+    {
+        return view('livewire.orders-table', [
+            'orders' => Order::with('customer')
+                ->when($this->customer_id != null, fn ($q) => $q->where('customer_id', $this->customer_id))
+                ->when($this->orderType === 'active', fn ($q) => $q->active())
+                ->when($this->orderType === 'invoiced', fn ($q) => $q->invoiced())
+                ->when($this->orderType === 'finished', fn ($q) => $q->finished())
+                ->when($this->search !== '', function ($query) {
+                    $query->whereHas('customer', function ($query) {
+                        $query->where('company_name', 'like', '%'.$this->search.'%');
+                    })->orWhere('customer_po', 'like', '%'.$this->search.'%')
+                        ->orWhere('internal_po', 'like', '%'.$this->search.'%')
+                        ->orWhere('order_date', 'like', '%'.$this->search.'%')
+                        ->orWhere('due_date', 'like', '%'.$this->search.'%')
+                        ->orWhere('status', 'like', '%'.$this->search.'%');
+                })
+                ->orderByDesc('rush')
+                ->orderBy('due_date')
+                ->paginate(15)
+                ->withQueryString(),
+            'today' => $this->today,
+        ]);
+    }
+}
diff --git a/app/Models/Contact.php b/app/Models/Contact.php
index 2ae4319..cc17114 100644
--- a/app/Models/Contact.php
+++ b/app/Models/Contact.php
@@ -9,7 +9,7 @@
 
 class Contact extends Model
 {
-    use SoftDeletes, HasFactory;
+    use HasFactory, SoftDeletes;
 
     protected $fillable = [
         'customer_id',
@@ -20,8 +20,13 @@ class Contact extends Model
         'notes',
     ];
 
+    public function getFullNameAttribute(): string
+    {
+        return $this->first_name.' '.$this->last_name;
+    }
+
     public function customer(): BelongsTo
     {
-       return $this->belongsTo(Customer::class);
+        return $this->belongsTo(Customer::class);
     }
 }
diff --git a/app/Models/Customer.php b/app/Models/Customer.php
index 9d8b741..8b256eb 100644
--- a/app/Models/Customer.php
+++ b/app/Models/Customer.php
@@ -9,7 +9,7 @@
 
 class Customer extends Model
 {
-    use SoftDeletes, HasFactory;
+    use HasFactory, SoftDeletes;
 
     protected $fillable = [
         'company_name',
diff --git a/app/Models/Order.php b/app/Models/Order.php
index cb8ec44..e429a4a 100644
--- a/app/Models/Order.php
+++ b/app/Models/Order.php
@@ -7,19 +7,22 @@
 use Illuminate\Database\Eloquent\Factories\HasFactory;
 use Illuminate\Database\Eloquent\Model;
 use Illuminate\Database\Eloquent\Relations\BelongsTo;
+use Illuminate\Database\Eloquent\Relations\HasMany;
 use Illuminate\Database\Eloquent\SoftDeletes;
 
 class Order extends Model
 {
-    use SoftDeletes, HasFactory;
+    use HasFactory, SoftDeletes;
 
     protected $fillable = [
         'customer_id',
+        'contact_id',
         'internal_po',
         'customer_po',
         'order_date',
-        'due_date',
+        'order_type',
         'status',
+        'due_date',
         'rush',
         'new_art',
         'digitizing',
@@ -30,16 +33,57 @@ class Order extends Model
     ];
 
     protected $appends = [
-        'active_status'
+        'active',
     ];
 
-    public function getActiveStatus(): bool
+    public static function boot()
     {
-        if ($this->status === OrderStatus::COMPLETED || $this->status === OrderStatus::CANCELLED) {
-            return false;
+        parent::boot();
+
+        static::created(function ($model) {
+            $model->attributes['internal_po'] = $model->generateInternalPo($model->id);
+            $model->save();
+        });
+    }
+
+    public function generateInternalPo($id): string
+    {
+        $po = str_pad($id, 4, '0', STR_PAD_LEFT);
+        $year = date('y');
+
+        return 'TN'.$year.'-'.$po;
+    }
+
+    public function active(): bool
+    {
+        if ($this->status == OrderStatus::APPROVED
+            || $this->status == OrderStatus::PRODUCTION) {
+            return true;
         }
 
-        return true;
+        return false;
+    }
+
+    public function scopeActive($query)
+    {
+        return $query->where('status', 'approved')
+            ->orWhere('status', 'production');
+    }
+
+    public function scopeFinished($query)
+    {
+        return $query->where('status', 'shipped')
+            ->orWhere('status', 'completed');
+    }
+
+    public function scopeInvoiced($query)
+    {
+        return $query->where('status', 'invoiced');
+    }
+
+    public function scopeRush($query)
+    {
+        return $query->where('rush', true);
     }
 
     public function customer(): BelongsTo
@@ -47,12 +91,22 @@ public function customer(): BelongsTo
         return $this->belongsTo(Customer::class);
     }
 
+    public function orderProducts(): HasMany
+    {
+        return $this->hasMany(OrderProduct::class);
+    }
+
+    public function productServices(): HasMany
+    {
+        return $this->hasMany(ProductService::class);
+    }
+
     protected function serializeDate(DateTimeInterface $date): string
     {
         return $date->format('Y-m-d');
     }
 
     protected $casts = [
-        'status' => OrderStatus::class
+        'status' => OrderStatus::class,
     ];
 }
diff --git a/app/Models/OrderProduct.php b/app/Models/OrderProduct.php
new file mode 100644
index 0000000..76e7b12
--- /dev/null
+++ b/app/Models/OrderProduct.php
@@ -0,0 +1,37 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Factories\HasFactory;
+use Illuminate\Database\Eloquent\Model;
+use Illuminate\Database\Eloquent\Relations\BelongsTo;
+use Illuminate\Database\Eloquent\Relations\HasMany;
+use Illuminate\Database\Eloquent\Relations\HasOne;
+use Illuminate\Database\Eloquent\SoftDeletes;
+
+class OrderProduct extends Model
+{
+    use HasFactory, SoftDeletes;
+
+    protected $fillable = [
+        'order_id',
+        'sku',
+        'product_name',
+        'color',
+    ];
+
+    public function order(): BelongsTo
+    {
+        return $this->belongsTo(Order::class);
+    }
+
+    public function serviceFile(): HasOne
+    {
+        return $this->hasOne(ServiceFile::class);
+    }
+
+    public function productSize(): HasMany
+    {
+        return $this->hasMany(ProductSize::class);
+    }
+}
diff --git a/app/Models/PackingSlip.php b/app/Models/PackingSlip.php
index e900bdb..57c63d8 100644
--- a/app/Models/PackingSlip.php
+++ b/app/Models/PackingSlip.php
@@ -9,7 +9,7 @@
 
 class PackingSlip extends Model
 {
-    use SoftDeletes, HasFactory;
+    use HasFactory, SoftDeletes;
 
     protected $fillable = [
         'order_id',
@@ -19,7 +19,8 @@ class PackingSlip extends Model
         'contents',
     ];
 
-    public function customer(): BelongsTo {
+    public function customer(): BelongsTo
+    {
         return $this->belongsTo(Customer::class);
     }
 }
diff --git a/app/Models/ProductService.php b/app/Models/ProductService.php
new file mode 100644
index 0000000..f4929b8
--- /dev/null
+++ b/app/Models/ProductService.php
@@ -0,0 +1,33 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Factories\HasFactory;
+use Illuminate\Database\Eloquent\Model;
+use Illuminate\Database\Eloquent\Relations\BelongsTo;
+use Illuminate\Database\Eloquent\Relations\HasOne;
+use Illuminate\Database\Eloquent\SoftDeletes;
+
+class ProductService extends Model
+{
+    use HasFactory, SoftDeletes;
+
+    protected $fillable = [
+        'order_id',
+        'service_type',
+        'placement',
+        'setup_amount',
+        'amount',
+        'amount_price',
+    ];
+
+    public function order(): BelongsTo
+    {
+        return $this->belongsTo(Order::class);
+    }
+
+    public function serviceFile(): HasOne
+    {
+        return $this->hasOne(ServiceFile::class);
+    }
+}
diff --git a/app/Models/ProductSize.php b/app/Models/ProductSize.php
new file mode 100644
index 0000000..573dc09
--- /dev/null
+++ b/app/Models/ProductSize.php
@@ -0,0 +1,24 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Factories\HasFactory;
+use Illuminate\Database\Eloquent\Model;
+use Illuminate\Database\Eloquent\Relations\BelongsTo;
+use Illuminate\Database\Eloquent\SoftDeletes;
+
+class ProductSize extends Model
+{
+    use HasFactory, SoftDeletes;
+
+    protected $fillable = [
+        'order_product_id',
+        'size',
+        'amount',
+    ];
+
+    public function orderProduct(): BelongsTo
+    {
+        return $this->belongsTo(OrderProduct::class);
+    }
+}
diff --git a/app/Models/ServiceFile.php b/app/Models/ServiceFile.php
new file mode 100644
index 0000000..0f08cd1
--- /dev/null
+++ b/app/Models/ServiceFile.php
@@ -0,0 +1,28 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Factories\HasFactory;
+use Illuminate\Database\Eloquent\Model;
+use Illuminate\Database\Eloquent\Relations\BelongsTo;
+use Illuminate\Database\Eloquent\SoftDeletes;
+
+class ServiceFile extends Model
+{
+    use HasFactory, SoftDeletes;
+
+    protected $fillable = [
+        'code',
+        'product_service_id',
+        'name',
+        'width',
+        'height',
+        'unit',
+        'setup_number',
+    ];
+
+    public function productService(): BelongsTo
+    {
+        return $this->belongsTo(ProductService::class);
+    }
+}
diff --git a/app/Models/ShippingEntry.php b/app/Models/ShippingEntry.php
index cfaade5..b2b9a15 100644
--- a/app/Models/ShippingEntry.php
+++ b/app/Models/ShippingEntry.php
@@ -10,10 +10,10 @@
 
 class ShippingEntry extends Model
 {
-    use SoftDeletes, HasFactory;
+    use HasFactory, SoftDeletes;
 
     protected $casts = [
-        'shipping_type' => ShippingType::class
+        'shipping_type' => ShippingType::class,
     ];
 
     protected $fillable = [
diff --git a/composer.json b/composer.json
index 7f6cb1b..aa935b1 100644
--- a/composer.json
+++ b/composer.json
@@ -8,11 +8,12 @@
         "php": "^8.2",
         "davidhsianturi/blade-bootstrap-icons": "^1.5",
         "laravel/framework": "^11.9",
-        "laravel/tinker": "^2.9"
+        "laravel/tinker": "^2.9",
+        "livewire/livewire": "^3.5"
     },
     "require-dev": {
         "fakerphp/faker": "^1.23",
-        "laravel/pint": "^1.13",
+        "laravel/pint": "^1.17",
         "laravel/sail": "^1.26",
         "laravel/ui": "^4.5",
         "mockery/mockery": "^1.6",
diff --git a/composer.lock b/composer.lock
index da623a1..ac99d9e 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "ecf358f6808ee41e24a7136c4c0cd543",
+    "content-hash": "ffc721fe90178089f9fb639d3d24a0b4",
     "packages": [
         {
             "name": "blade-ui-kit/blade-icons",
@@ -1959,6 +1959,82 @@
             ],
             "time": "2024-01-28T23:22:08+00:00"
         },
+        {
+            "name": "livewire/livewire",
+            "version": "v3.5.6",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/livewire/livewire.git",
+                "reference": "597a2808d8d3001cc3ed5ce89a6ebab00f83b80f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/livewire/livewire/zipball/597a2808d8d3001cc3ed5ce89a6ebab00f83b80f",
+                "reference": "597a2808d8d3001cc3ed5ce89a6ebab00f83b80f",
+                "shasum": ""
+            },
+            "require": {
+                "illuminate/database": "^10.0|^11.0",
+                "illuminate/routing": "^10.0|^11.0",
+                "illuminate/support": "^10.0|^11.0",
+                "illuminate/validation": "^10.0|^11.0",
+                "laravel/prompts": "^0.1.24",
+                "league/mime-type-detection": "^1.9",
+                "php": "^8.1",
+                "symfony/console": "^6.0|^7.0",
+                "symfony/http-kernel": "^6.2|^7.0"
+            },
+            "require-dev": {
+                "calebporzio/sushi": "^2.1",
+                "laravel/framework": "^10.15.0|^11.0",
+                "mockery/mockery": "^1.3.1",
+                "orchestra/testbench": "^8.21.0|^9.0",
+                "orchestra/testbench-dusk": "^8.24|^9.1",
+                "phpunit/phpunit": "^10.4",
+                "psy/psysh": "^0.11.22|^0.12"
+            },
+            "type": "library",
+            "extra": {
+                "laravel": {
+                    "providers": [
+                        "Livewire\\LivewireServiceProvider"
+                    ],
+                    "aliases": {
+                        "Livewire": "Livewire\\Livewire"
+                    }
+                }
+            },
+            "autoload": {
+                "files": [
+                    "src/helpers.php"
+                ],
+                "psr-4": {
+                    "Livewire\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Caleb Porzio",
+                    "email": "calebporzio@gmail.com"
+                }
+            ],
+            "description": "A front-end framework for Laravel.",
+            "support": {
+                "issues": "https://github.com/livewire/livewire/issues",
+                "source": "https://github.com/livewire/livewire/tree/v3.5.6"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/livewire",
+                    "type": "github"
+                }
+            ],
+            "time": "2024-08-19T11:52:18+00:00"
+        },
         {
             "name": "monolog/monolog",
             "version": "3.7.0",
@@ -6009,16 +6085,16 @@
         },
         {
             "name": "laravel/pint",
-            "version": "v1.17.2",
+            "version": "v1.17.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/laravel/pint.git",
-                "reference": "e8a88130a25e3f9d4d5785e6a1afca98268ab110"
+                "reference": "9d77be916e145864f10788bb94531d03e1f7b482"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/laravel/pint/zipball/e8a88130a25e3f9d4d5785e6a1afca98268ab110",
-                "reference": "e8a88130a25e3f9d4d5785e6a1afca98268ab110",
+                "url": "https://api.github.com/repos/laravel/pint/zipball/9d77be916e145864f10788bb94531d03e1f7b482",
+                "reference": "9d77be916e145864f10788bb94531d03e1f7b482",
                 "shasum": ""
             },
             "require": {
@@ -6029,13 +6105,13 @@
                 "php": "^8.1.0"
             },
             "require-dev": {
-                "friendsofphp/php-cs-fixer": "^3.61.1",
-                "illuminate/view": "^10.48.18",
+                "friendsofphp/php-cs-fixer": "^3.64.0",
+                "illuminate/view": "^10.48.20",
                 "larastan/larastan": "^2.9.8",
                 "laravel-zero/framework": "^10.4.0",
                 "mockery/mockery": "^1.6.12",
                 "nunomaduro/termwind": "^1.15.1",
-                "pestphp/pest": "^2.35.0"
+                "pestphp/pest": "^2.35.1"
             },
             "bin": [
                 "builds/pint"
@@ -6071,7 +6147,7 @@
                 "issues": "https://github.com/laravel/pint/issues",
                 "source": "https://github.com/laravel/pint"
             },
-            "time": "2024-08-06T15:11:54+00:00"
+            "time": "2024-09-03T15:00:28+00:00"
         },
         {
             "name": "laravel/sail",
diff --git a/database/factories/ContactFactory.php b/database/factories/ContactFactory.php
index 280be1c..da6a06d 100644
--- a/database/factories/ContactFactory.php
+++ b/database/factories/ContactFactory.php
@@ -14,7 +14,7 @@ public function definition(): array
     {
         $first_name = $this->faker->firstName();
         $last_name = $this->faker->lastName();
-        $email = strtolower($first_name . '.' . $last_name) . '@example.com';
+        $email = strtolower($first_name.'.'.$last_name).'@example.com';
 
         return [
             'first_name' => $first_name,
diff --git a/database/factories/CustomerFactory.php b/database/factories/CustomerFactory.php
index ad2e083..4ef543a 100644
--- a/database/factories/CustomerFactory.php
+++ b/database/factories/CustomerFactory.php
@@ -13,7 +13,7 @@ class CustomerFactory extends Factory
     public function definition()
     {
         $company_name = $this->faker->company();
-        $internal_name = explode(",", $company_name);
+        $internal_name = explode(',', $company_name);
         $address = $this->faker->address();
 
         return [
diff --git a/database/factories/OrderFactory.php b/database/factories/OrderFactory.php
index 35d8502..1bd4b8b 100644
--- a/database/factories/OrderFactory.php
+++ b/database/factories/OrderFactory.php
@@ -3,7 +3,7 @@
 namespace Database\Factories;
 
 use App\Enums\OrderStatus;
-use App\Models\Customer;
+use App\Enums\OrderType;
 use App\Models\Order;
 use Illuminate\Database\Eloquent\Factories\Factory;
 use Illuminate\Support\Carbon;
@@ -14,17 +14,19 @@ class OrderFactory extends Factory
 
     public function definition(): array
     {
-        $order_date = Carbon::today()->subDays(rand(0, 30));
+        $order_date = Carbon::today()->subDays(rand(0, 10));
+        $due_date = $order_date->copy()->addDays(rand(9, 15));
 
         return [
             'created_at' => Carbon::now(),
             'updated_at' => Carbon::now(),
-            'internal_po' => 'TN' . $this->faker->randomNumber(4, true),
+            //            'internal_po' => $this->faker->randomNumber(4, true),
             'customer_po' => $this->faker->randomNumber(6, true),
+            'order_type' => $this->faker->randomElement(OrderType::cases())->value,
             'order_date' => $order_date,
-            'due_date' => $order_date->addDays(rand(8, 12)),
-            'status' => $this->faker->randomELement(OrderStatus::cases())->value, //todo: setup order status enum
-            'rush' => $this->faker->boolean(),
+            'due_date' => $due_date,
+            'status' => $this->faker->randomELement(OrderStatus::cases())->value,
+            'rush' => $this->faker->boolean(10),
             'new_art' => $this->faker->boolean(),
             'digitizing' => $this->faker->boolean(),
             'repeat' => $this->faker->boolean(),
diff --git a/database/factories/OrderProductFactory.php b/database/factories/OrderProductFactory.php
new file mode 100644
index 0000000..2093ead
--- /dev/null
+++ b/database/factories/OrderProductFactory.php
@@ -0,0 +1,23 @@
+<?php
+
+namespace Database\Factories;
+
+use App\Models\OrderProduct;
+use Illuminate\Database\Eloquent\Factories\Factory;
+use Illuminate\Support\Carbon;
+
+class OrderProductFactory extends Factory
+{
+    protected $model = OrderProduct::class;
+
+    public function definition(): array
+    {
+        return [
+            'created_at' => Carbon::now(),
+            'updated_at' => Carbon::now(),
+            'sku' => $this->faker->randomElement([$this->faker->randomNumber(4, true), null]),
+            'product_name' => $this->faker->randomElement(['shirts', 'hats', 'jackets', 'pants', 'tote bags', 'backpacks']),
+            'color' => $this->faker->randomElement(['black', 'white', 'navy', 'red', 'gold', 'charcoal']),
+        ];
+    }
+}
diff --git a/database/factories/PackingSlipFactory.php b/database/factories/PackingSlipFactory.php
index d06a8b1..aacfcc9 100644
--- a/database/factories/PackingSlipFactory.php
+++ b/database/factories/PackingSlipFactory.php
@@ -15,8 +15,8 @@ public function definition(): array
         return [
             'date_received' => $this->faker->dateTimeBetween('-1 month', 'now'),
             'order_id' => $this->faker->randomNumber(6),
-            'amount' => $this->faker->numberBetween(2, 5) . ' boxes',
-            'contents' => $this->faker->numberBetween(2, 60) . ' ' . $this->faker->randomElement(['t-shirts', 'caps', 'jackets', 'pants', 'sweaters']),
+            'amount' => $this->faker->numberBetween(2, 5).' boxes',
+            'contents' => $this->faker->numberBetween(2, 60).' '.$this->faker->randomElement(['t-shirts', 'caps', 'jackets', 'pants', 'sweaters']),
             'created_at' => Carbon::now(),
             'updated_at' => Carbon::now(),
         ];
diff --git a/database/factories/ProductServiceFactory.php b/database/factories/ProductServiceFactory.php
new file mode 100644
index 0000000..b09efeb
--- /dev/null
+++ b/database/factories/ProductServiceFactory.php
@@ -0,0 +1,25 @@
+<?php
+
+namespace Database\Factories;
+
+use App\Models\ProductService;
+use Illuminate\Database\Eloquent\Factories\Factory;
+use Illuminate\Support\Carbon;
+
+class ProductServiceFactory extends Factory
+{
+    protected $model = ProductService::class;
+
+    public function definition(): array
+    {
+        return [
+            'created_at' => Carbon::now(),
+            'updated_at' => Carbon::now(),
+            'service_type' => $this->faker->randomElement(['embroidery', 'screen printing', 'dtg', 'vinyl']),
+            'placement' => $this->faker->randomElement(['l/c', 'c/f', 'f/b', 'r/c']),
+            'setup_amount' => 0,
+            'amount' => $this->faker->randomNumber(1),
+            'amount_price' => 0,
+        ];
+    }
+}
diff --git a/database/factories/ProductSizeFactory.php b/database/factories/ProductSizeFactory.php
new file mode 100644
index 0000000..5ed26f2
--- /dev/null
+++ b/database/factories/ProductSizeFactory.php
@@ -0,0 +1,22 @@
+<?php
+
+namespace Database\Factories;
+
+use App\Models\ProductSize;
+use Illuminate\Database\Eloquent\Factories\Factory;
+use Illuminate\Support\Carbon;
+
+class ProductSizeFactory extends Factory
+{
+    protected $model = ProductSize::class;
+
+    public function definition(): array
+    {
+        return [
+            'created_at' => Carbon::now(),
+            'updated_at' => Carbon::now(),
+            'size' => $this->faker->randomElement(['xs', 's', 'm', 'l', 'xl', '2xl', '3xl']),
+            'amount' => $this->faker->randomNumber(2, false),
+        ];
+    }
+}
diff --git a/database/factories/ServiceFileFactory.php b/database/factories/ServiceFileFactory.php
new file mode 100644
index 0000000..8bfc381
--- /dev/null
+++ b/database/factories/ServiceFileFactory.php
@@ -0,0 +1,25 @@
+<?php
+
+namespace Database\Factories;
+
+use App\Models\ServiceFile;
+use Illuminate\Database\Eloquent\Factories\Factory;
+use Illuminate\Support\Carbon;
+
+class ServiceFileFactory extends Factory
+{
+    protected $model = ServiceFile::class;
+
+    public function definition(): array
+    {
+        return [
+            'created_at' => Carbon::now(),
+            'updated_at' => Carbon::now(),
+            'code' => $this->faker->randomElement(['A', 'B']).$this->faker->randomNumber(4, true),
+            'name' => $this->faker->word(),
+            'width' => round($this->faker->randomFloat(2, 0, 10), 1),
+            'height' => round($this->faker->randomFloat(2, 0, 10), 1),
+            'unit' => 'inch',
+        ];
+    }
+}
diff --git a/database/factories/ShippingEntryFactory.php b/database/factories/ShippingEntryFactory.php
index 256c22f..6305716 100644
--- a/database/factories/ShippingEntryFactory.php
+++ b/database/factories/ShippingEntryFactory.php
@@ -2,7 +2,6 @@
 
 namespace Database\Factories;
 
-use App\Models\Customer;
 use App\Models\ShippingEntry;
 use Illuminate\Database\Eloquent\Factories\Factory;
 use Illuminate\Support\Carbon;
@@ -21,7 +20,7 @@ public function definition(): array
             'account_title' => $this->faker->word,
             'account_username' => 'username',
             'account_password' => 'password',
-            'info_needed' => $this->faker->words(3,true),
+            'info_needed' => $this->faker->words(3, true),
             'notify' => 'someone@account.com',
             'notes' => $this->faker->randomElement(['', '', '', 'Some really long text to simulate a note being put here']),
         ];
diff --git a/database/migrations/2024_09_03_204957_create_customers_table.php b/database/migrations/2024_09_03_204957_create_customers_table.php
index 7c97a33..4e73e32 100644
--- a/database/migrations/2024_09_03_204957_create_customers_table.php
+++ b/database/migrations/2024_09_03_204957_create_customers_table.php
@@ -4,7 +4,8 @@
 use Illuminate\Database\Schema\Blueprint;
 use Illuminate\Support\Facades\Schema;
 
-return new class extends Migration {
+return new class extends Migration
+{
     public function up()
     {
         Schema::create('customers', function (Blueprint $table) {
diff --git a/database/migrations/2024_09_04_203012_create_contacts_table.php b/database/migrations/2024_09_04_203012_create_contacts_table.php
index aa67579..70a9840 100644
--- a/database/migrations/2024_09_04_203012_create_contacts_table.php
+++ b/database/migrations/2024_09_04_203012_create_contacts_table.php
@@ -4,7 +4,8 @@
 use Illuminate\Database\Schema\Blueprint;
 use Illuminate\Support\Facades\Schema;
 
-return new class extends Migration {
+return new class extends Migration
+{
     public function up(): void
     {
         Schema::create('contacts', function (Blueprint $table) {
diff --git a/database/migrations/2024_09_05_215151_create_packing_slips_table.php b/database/migrations/2024_09_05_215151_create_packing_slips_table.php
index 0c5bd11..16f5d04 100644
--- a/database/migrations/2024_09_05_215151_create_packing_slips_table.php
+++ b/database/migrations/2024_09_05_215151_create_packing_slips_table.php
@@ -4,13 +4,14 @@
 use Illuminate\Database\Schema\Blueprint;
 use Illuminate\Support\Facades\Schema;
 
-return new class extends Migration {
+return new class extends Migration
+{
     public function up(): void
     {
         Schema::create('packing_slips', function (Blueprint $table) {
             $table->id();
 
-//            $table->foreignId('order_id')->nullable()->constrained();
+            //            $table->foreignId('order_id')->nullable()->constrained();
             $table->string('order_id')->nullable(); //todo: replace this once orders are actually in da system
             $table->foreignId('customer_id')->nullable()->constrained();
             $table->date('date_received');
diff --git a/database/migrations/2024_09_06_213725_create_shipping_entries_table.php b/database/migrations/2024_09_06_213725_create_shipping_entries_table.php
index 502ee0e..81cb84f 100644
--- a/database/migrations/2024_09_06_213725_create_shipping_entries_table.php
+++ b/database/migrations/2024_09_06_213725_create_shipping_entries_table.php
@@ -4,7 +4,8 @@
 use Illuminate\Database\Schema\Blueprint;
 use Illuminate\Support\Facades\Schema;
 
-return new class extends Migration {
+return new class extends Migration
+{
     public function up(): void
     {
         Schema::create('shipping_entries', function (Blueprint $table) {
diff --git a/database/migrations/2024_09_09_194631_create_orders_table.php b/database/migrations/2024_09_09_194631_create_orders_table.php
index c36c202..5d1078a 100644
--- a/database/migrations/2024_09_09_194631_create_orders_table.php
+++ b/database/migrations/2024_09_09_194631_create_orders_table.php
@@ -1,30 +1,30 @@
 <?php
 
-use App\Enums\OrderStatus;
-use App\Enums\OrderType;
 use Illuminate\Database\Migrations\Migration;
 use Illuminate\Database\Schema\Blueprint;
 use Illuminate\Support\Facades\Schema;
 
-return new class extends Migration {
+return new class extends Migration
+{
     public function up(): void
     {
         Schema::create('orders', function (Blueprint $table) {
             $table->id();
-            $table->foreignId('customer_id');
-            $table->string('internal_po');
+            $table->foreignId('customer_id')->constrained();
+            $table->foreignId('contact_id')->nullable()->constrained();
+            $table->string('internal_po')->nullable();
             $table->string('customer_po');
-            $table->enum('order_type', OrderType::cases());
+            $table->string('order_type');
             $table->date('order_date');
             $table->date('due_date');
-            $table->enum('status', OrderStatus::cases());
+            $table->string('status');
             $table->boolean('rush')->default(0);
             $table->boolean('new_art')->default(0);
             $table->boolean('digitizing')->default(0);
             $table->boolean('repeat')->default(0);
             $table->boolean('purchased_garments')->default(0);
             $table->boolean('customer_supplied_file')->default(0);
-            $table->longText('notes');
+            $table->longText('notes')->nullable();
             $table->softDeletes();
             $table->timestamps();
         });
diff --git a/database/migrations/2024_09_10_224439_create_order_products_table.php b/database/migrations/2024_09_10_224439_create_order_products_table.php
new file mode 100644
index 0000000..4e1ccd6
--- /dev/null
+++ b/database/migrations/2024_09_10_224439_create_order_products_table.php
@@ -0,0 +1,26 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    public function up(): void
+    {
+        Schema::create('order_products', function (Blueprint $table) {
+            $table->id();
+            $table->foreignId('order_id')->constrained();
+            $table->string('sku')->nullable();
+            $table->string('product_name');
+            $table->string('color')->nullable();
+            $table->softDeletes();
+            $table->timestamps();
+        });
+    }
+
+    public function down(): void
+    {
+        Schema::dropIfExists('order_products');
+    }
+};
diff --git a/database/migrations/2024_09_10_224947_create_product_services_table.php b/database/migrations/2024_09_10_224947_create_product_services_table.php
new file mode 100644
index 0000000..b176300
--- /dev/null
+++ b/database/migrations/2024_09_10_224947_create_product_services_table.php
@@ -0,0 +1,28 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    public function up(): void
+    {
+        Schema::create('product_services', function (Blueprint $table) {
+            $table->id();
+            $table->foreignId('order_id');
+            $table->string('service_type');
+            $table->string('placement');
+            $table->string('setup_amount');
+            $table->string('amount')->nullable();
+            $table->string('amount_price')->nullable();
+            $table->softDeletes();
+            $table->timestamps();
+        });
+    }
+
+    public function down(): void
+    {
+        Schema::dropIfExists('product_services');
+    }
+};
diff --git a/database/migrations/2024_09_10_225029_create_service_files_table.php b/database/migrations/2024_09_10_225029_create_service_files_table.php
new file mode 100644
index 0000000..91c3bca
--- /dev/null
+++ b/database/migrations/2024_09_10_225029_create_service_files_table.php
@@ -0,0 +1,30 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    public function up(): void
+    {
+        Schema::create('service_files', function (Blueprint $table) {
+            $table->id();
+            $table->foreignId('product_service_id')->constrained();
+            $table->string('code');
+            $table->string('name');
+            $table->string('placement');
+            $table->decimal('width')->nullable();
+            $table->decimal('height')->nullable();
+            $table->string('unit')->default('inch');
+            $table->integer('setup_number')->nullable();
+            $table->softDeletes();
+            $table->timestamps();
+        });
+    }
+
+    public function down(): void
+    {
+        Schema::dropIfExists('service_files');
+    }
+};
diff --git a/database/migrations/2024_09_10_230904_create_product_sizes_table.php b/database/migrations/2024_09_10_230904_create_product_sizes_table.php
new file mode 100644
index 0000000..a665947
--- /dev/null
+++ b/database/migrations/2024_09_10_230904_create_product_sizes_table.php
@@ -0,0 +1,25 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    public function up(): void
+    {
+        Schema::create('product_sizes', function (Blueprint $table) {
+            $table->id();
+            $table->foreignId('order_product_id');
+            $table->string('size');
+            $table->string('amount');
+            $table->softDeletes();
+            $table->timestamps();
+        });
+    }
+
+    public function down(): void
+    {
+        Schema::dropIfExists('product_sizes');
+    }
+};
diff --git a/database/seeders/CustomerSeeder.php b/database/seeders/CustomerSeeder.php
new file mode 100644
index 0000000..2a5ad0b
--- /dev/null
+++ b/database/seeders/CustomerSeeder.php
@@ -0,0 +1,92 @@
+<?php
+
+namespace Database\Seeders;
+
+use App\Models\Contact;
+use App\Models\Customer;
+use App\Models\Order;
+use App\Models\OrderProduct;
+use App\Models\PackingSlip;
+use App\Models\ProductService;
+use App\Models\ProductSize;
+use App\Models\ShippingEntry;
+use Illuminate\Database\Seeder;
+
+class CustomerSeeder extends Seeder
+{
+    public function run(): void
+    {
+        Customer::factory(3)
+            ->has(Contact::factory(5))
+            ->has(PackingSlip::factory(30))
+            ->has(ShippingEntry::factory(2))
+            ->has(Order::factory(10)
+                ->has(OrderProduct::factory(2)
+                    ->has(ProductSize::factory(3)))
+                ->has(ProductService::factory(3)))
+//                    ->has(ServiceFile::factory(1))))
+            ->create();
+
+        Customer::factory([
+            'company_name' => 'Genumark',
+            'internal_name' => 'genumark',
+            'shipping_address' => '',
+            'billing_address' => '',
+        ])
+            ->has(Contact::factory([
+                'first_name' => 'Tammy',
+                'last_name' => 'Bookbinder',
+                'email' => 'tbookbinder@genumark.com',
+                'phone' => '+1 778 229 5668',
+            ]))
+            ->has(Contact::factory([
+                'first_name' => 'Kathlyn',
+                'last_name' => 'Wood',
+                'email' => 'kwood@genumark.com',
+                'phone' => '+1 604 294 2376',
+                'notes' => 'Always CC, unless SOF order',
+            ]))
+            ->has(Contact::factory([
+                'first_name' => 'Jane',
+                'last_name' => 'Wellman',
+                'email' => 'jwellman@genumark.com',
+                'phone' => '+1 604 742 5584',
+                'notes' => 'Deals with SOF orders',
+            ]))
+            ->has(Contact::factory([
+                'first_name' => 'Trisha',
+                'last_name' => 'Miller',
+                'email' => 'tmiller@genumark.com',
+                'phone' => '+1 604 802 8486',
+            ]))
+            ->has(Contact::factory([
+                'first_name' => 'Brenda',
+                'last_name' => 'Kuepfer',
+                'email' => 'bkuepfer@genumark.com',
+                'phone' => '+1 604 305 5002',
+            ]))
+            ->has(PackingSlip::factory(20))
+            ->has(ShippingEntry::factory([
+                'account_title' => 'Genumark',
+                'courier' => 'UPS CampusShip',
+                'contact' => 'https://www.ups.com/lasso/login',
+                'account_username' => 'GenumarkTopNotch',
+                'account_password' => 'TopNotch@13579',
+                'info_needed' => 'Put PO on box',
+                'notify' => 'Various reps, CC Kathlyn Wood',
+                'notes' => 'For Save On Foods orders, see Genumark SOF',
+            ]))
+            ->has(ShippingEntry::factory([
+                'account_title' => 'Genumark Save-On-Foods',
+                'courier' => 'UPS CampusShip',
+                'contact' => 'https://www.ups.com/lasso/login',
+                'account_username' => 'GenumarkTopNotch',
+                'account_password' => 'TopNotch@13579',
+                'info_needed' => 'Put PO on box',
+                'notify' => 'Jane Wellman',
+                'notes' => 'Don\'t CC Kathlyn for SOF orders',
+            ]))
+            ->has(Order::factory(10))
+            ->create();
+    }
+}
diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php
index 3293b57..efd1468 100644
--- a/database/seeders/DatabaseSeeder.php
+++ b/database/seeders/DatabaseSeeder.php
@@ -2,16 +2,8 @@
 
 namespace Database\Seeders;
 
-use App\Models\Contact;
-use App\Models\Customer;
-use App\Models\Order;
-use App\Models\PackingSlip;
-use App\Models\ShippingEntry;
 use App\Models\User;
-
 // use Illuminate\Database\Console\Seeds\WithoutModelEvents;
-use Database\Factories\ShippingEntryFactory;
-use http\Client;
 use Illuminate\Database\Seeder;
 
 class DatabaseSeeder extends Seeder
@@ -21,73 +13,9 @@ class DatabaseSeeder extends Seeder
      */
     public function run(): void
     {
-        Customer::factory(9)
-            ->has(Contact::factory(5))
-            ->has(PackingSlip::factory(30))
-            ->has(ShippingEntry::factory(2))
-            ->create();
-
-        Customer::factory([
-            'company_name' => 'Genumark',
-            'internal_name' => 'genumark',
-            'shipping_address' => '',
-            'billing_address' => '',
-        ])
-            ->has(Contact::factory([
-                'first_name' => 'Tammy',
-                'last_name' => 'Bookbinder',
-                'email' => 'tbookbinder@genumark.com',
-                'phone' => '+1 778 229 5668'
-            ]))
-            ->has(Contact::factory([
-                'first_name' => 'Kathlyn',
-                'last_name' => 'Wood',
-                'email' => 'kwood@genumark.com',
-                'phone' => '+1 604 294 2376',
-                'notes' => 'Always CC, unless SOF order'
-            ]))
-            ->has(Contact::factory([
-                'first_name' => 'Jane',
-                'last_name' => 'Wellman',
-                'email' => 'jwellman@genumark.com',
-                'phone' => '+1 604 742 5584',
-                'notes' => 'Deals with SOF orders'
-            ]))
-            ->has(Contact::factory([
-                'first_name' => 'Trisha',
-                'last_name' => 'Miller',
-                'email' => 'tmiller@genumark.com',
-                'phone' => '+1 604 802 8486'
-            ]))
-            ->has(Contact::factory([
-                'first_name' => 'Brenda',
-                'last_name' => 'Kuepfer',
-                'email' => 'bkuepfer@genumark.com',
-                'phone' => '+1 604 305 5002'
-            ]))
-            ->has(PackingSlip::factory(20))
-            ->has(ShippingEntry::factory([
-                'account_title' => 'Genumark',
-                'courier' => 'UPS CampusShip',
-                'contact' => 'https://www.ups.com/lasso/login',
-                'account_username' => 'GenumarkTopNotch',
-                'account_password' => 'TopNotch@13579',
-                'info_needed' => 'Put PO on box',
-                'notify' => 'Various reps, CC Kathlyn Wood',
-                'notes' => 'For Save On Foods orders, see Genumark SOF'
-            ]))
-            ->has(ShippingEntry::factory([
-                'account_title' => 'Genumark Save-On-Foods',
-                'courier' => 'UPS CampusShip',
-                'contact' => 'https://www.ups.com/lasso/login',
-                'account_username' => 'GenumarkTopNotch',
-                'account_password' => 'TopNotch@13579',
-                'info_needed' => 'Put PO on box',
-                'notify' => 'Jane Wellman',
-                'notes' => 'Don\'t CC Kathlyn for SOF orders'
-            ]))
-            ->has(Order::factory(10))
-            ->create();
+        $this->call([
+            CustomerSeeder::class,
+        ]);
 
         User::factory()->create([
             'name' => 'Test User',
diff --git a/pint.json b/pint.json
new file mode 100644
index 0000000..1ec298a
--- /dev/null
+++ b/pint.json
@@ -0,0 +1,11 @@
+{
+  "preset": "laravel",
+  "rules": {
+    "binary_operator_spaces": {
+      "default": "single_space",
+      "operators": {
+        "=>": "align_single_space_minimal"
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/resources/sass/app.scss b/resources/sass/app.scss
index 275c5d8..953440b 100644
--- a/resources/sass/app.scss
+++ b/resources/sass/app.scss
@@ -12,3 +12,14 @@ $table-striped-bg: #fafafa;
 
 @import 'bootstrap/scss/bootstrap';
 @import 'bootstrap-icons/font/bootstrap-icons.css';
+
+input::-webkit-outer-spin-button,
+input::-webkit-inner-spin-button {
+  display: none;
+  -webkit-appearance: none;
+  margin: 0; /* <-- Apparently some margin are still there even though it's hidden */
+}
+
+input[type=number] {
+  -moz-appearance: textfield; /* Firefox */
+}
diff --git a/resources/views/customers/index.blade.php b/resources/views/customers/index.blade.php
deleted file mode 100644
index a9f0430..0000000
--- a/resources/views/customers/index.blade.php
+++ /dev/null
@@ -1,144 +0,0 @@
-@extends('layouts.app')
-
-@section('header')
-    <div class="container-fluid bg-light pt-3">
-
-        <!-- Customer company name row -->
-        <div class="row justify-content-center pb-2">
-            <div class="col-3"></div>
-            <div class="col">
-                <h2></h2>
-            </div>
-        </div>
-
-        <!-- Tabs row -->
-        <div class="row justify-content-center mb-3">
-            <div class="col-3 border-bottom"></div>
-            <div class="col-6 p-0">
-
-                <ul class="nav nav-fill nav-tabs" id="customer-tabs" role="tablist">
-                    <li class="nav-item" role="presentation">
-                        <button class="nav-link link-dark {{$tab == null ? 'active' : ''}}" id="details-tab"
-                                data-bs-toggle="tab" data-bs-target="#details" type="button" role="tab"
-                                aria-controls="details" aria-selected="{{$tab == null ? 'true' : 'false'}}">
-                            <x-bi-list-ul/>
-                            Customers
-                        </button>
-                    </li>
-                    <li class="nav-item" role="presentation">
-                        <button class="nav-link link-dark {{$tab == 'shipping' ? 'active' : ''}}" id="shipping-tab"
-                                data-bs-toggle="tab" data-bs-target="#shipping" type="button" role="tab"
-                                aria-controls="shipping" aria-selected="{{$tab == 'shipping' ? 'true' : 'false'}}">
-                            <x-bi-box-fill/>
-                            Orders
-                        </button>
-                    </li>
-                    <li class="nav-item" role="presentation">
-                        <button class="nav-link link-dark {{$tab == 'packing' ? 'active' : ''}}" id="packing-tab"
-                                data-bs-toggle="tab" data-bs-target="#packing" type="button" role="tab"
-                                aria-controls="packing" aria-selected="{{$tab == 'packing' ? 'true' : 'false'}}">
-                            <x-bi-card-text/>
-                            Packing Slips
-                        </button>
-                    </li>
-                    {{--                    <li class="nav-item" role="presentation">--}}
-                    {{--                        <button class="nav-link link-dark {{$tab == 'contacts' ? 'active' : ''}}" id="contacts-tab"--}}
-                    {{--                                data-bs-toggle="tab" data-bs-target="#contacts" type="button" role="tab"--}}
-                    {{--                                aria-controls="contacts" aria-selected="{{$tab == 'contacts' ? 'true' : 'false'}}">--}}
-                    {{--                            <x-bi-people-fill/>--}}
-                    {{--                            Contacts--}}
-                    {{--                        </button>--}}
-                    {{--                    </li>--}}
-                </ul>
-
-            </div>
-            <div class="col border-bottom"></div>
-        </div>
-
-    </div>
-@endsection()
-
-@section('content')
-    <div class="container">
-        <div class="row justify-content-center mb-3">
-            <div class="col">
-                <div class="d-flex flex-row gap-2">
-                    <button class="btn btn-primary" title="Create new customer..."
-                            data-bs-toggle="modal"
-                            data-bs-target="#createCustomerModal">
-                        <x-bi-person-plus-fill/>
-                        Create entry
-                    </button>
-
-                    <div class="vr"></div>
-
-                    <div class="d-inline-flex gap-2">
-                        <input type="text" class="form-control" placeholder="Search..."
-                                name="" id="">
-                        <button class="btn btn-outline-primary">
-                            <x-bi-search/>
-                        </button>
-                    </div>
-
-                    <div class="mx-auto"></div>
-
-                    <button class="btn btn-danger" title="Delete customer..."
-                            data-bs-toggle="modal"
-                            data-bs-target="#deleteCustomerModal">
-                        <x-bi-trash-fill/>
-                        Delete entry
-                    </button>
-                </div>
-            </div>
-        </div>
-
-        <div class="row mb-3">
-            <div class="col">
-                @if(sizeof($customers) !== 0)
-                    <table class="table table-striped table-hover">
-                        <thead>
-                        <tr class="border-bottom border-black">
-                            <th scope="col">Company Name</th>
-                            <th scope="col">Internal Name</th>
-                            <th scope="col">Shipping Address</th>
-                            <th scope="col">Billing Address</th>
-                            <th scope="col">Phone</th>
-                            <th scope="col">View</th>
-                        </tr>
-                        </thead>
-
-                        <tbody>
-
-                        @foreach($customers as $customer)
-                            <tr>
-                                <td> {{$customer->company_name}} </td>
-                                <td><code>{{$customer->internal_name}}</code></td>
-                                <td> {{$customer->shipping_address}} </td>
-                                <td> {{$customer->billing_address}} </td>
-                                <td class="text-nowrap"> {{$customer->phone}} </td>
-                                <td class="align-top">
-                                    <a class="btn btn-sm btn-outline-secondary"
-                                            href="{{route('customers.show', [$customer->id, 'tab'=>'details'])}}">
-                                        <x-bi-arrow-right/>
-                                    </a>
-                                </td>
-                            </tr>
-                        @endforeach
-
-                        </tbody>
-                    </table>
-
-                @else()
-                    No customer data.
-                @endif
-            </div>
-        </div>
-    </div>
-
-    <!-- Create Customer Modal -->
-    @include('partials.customers.create-modal')
-
-    <!-- Delete Customer Modal -->
-    @include('partials.customers.delete-all-modal')
-
-@endsection
diff --git a/resources/views/customers/show.blade.php b/resources/views/customers/show.blade.php
index 2cc702b..6f3f989 100644
--- a/resources/views/customers/show.blade.php
+++ b/resources/views/customers/show.blade.php
@@ -65,28 +65,24 @@
 @section('content')
     <div class="container">
         <div class="row justify-content-center my-3">
-
             <div class="tab-content">
 
                 <!-- Overview tab -->
-                @include('partials.customers.show-overview')
+                @include('partials.customers.show.overview-tab')
 
                 <!-- Shipping Info tab -->
-                @include('partials.customers.show-shipping-info')
+                @include('partials.customers.show.shipping-info-tab')
 
                 <!-- Packing Slips tab -->
-                @include('partials.customers.show-packing-slips')
+                @include('partials.customers.show.packing-slips-tab')
 
                 <!-- Contacts tab -->
-                @include('partials.customers.show-contacts')
+                @include('partials.customers.show.contacts-tab')
 
             </div>
         </div>
     </div>
 
-    <!-- Edit Customer Modal -->
-    @include('partials.customers.edit-modal')
-
     <!-- Delete Customer Modal -->
     @include('partials.customers.delete-single-modal')
 
diff --git a/resources/views/dashboard.blade.php b/resources/views/dashboard.blade.php
new file mode 100644
index 0000000..7ce4fa8
--- /dev/null
+++ b/resources/views/dashboard.blade.php
@@ -0,0 +1,59 @@
+@extends('layouts.app')
+
+@section('header')
+    <div class="container-fluid bg-light pt-3">
+
+        <!-- Customer company name row -->
+        <div class="row justify-content-center pb-2">
+            <div class="col-3"></div>
+            <div class="col">
+                {{--                <h2>Overview</h2>--}}
+            </div>
+        </div>
+
+        <!-- Tabs row -->
+        <div class="row justify-content-center">
+            <div class="col-3 border-bottom"></div>
+            <div class="col-6 p-0">
+
+                <ul class="nav nav-fill nav-tabs" id="home-tabs" role="tablist">
+                    <li class="nav-item" role="presentation">
+                        <a class="nav-link link-dark {{$tab == 'active_orders' ? 'active' : ''}}" id="active_orders-tab"
+                                href="{{route('dashboard', ['tab' => 'active_orders'])}}" type="button" role="tab"
+                                aria-controls="active_orders"
+                                aria-selected="{{$tab == 'active_orders' ? 'true' : 'false'}}">
+                            <x-bi-arrow-clockwise/>
+                            Active Orders
+                        </a>
+                    </li>
+                    <li class="nav-item" role="presentation">
+                        <a class="nav-link link-dark {{$tab == 'packing_slips' ? 'active' : ''}}" id="packing-tab"
+                                href="{{route('dashboard', ['tab' => 'packing_slips'])}}" type="button" role="tab"
+                                aria-controls="packing_slips"
+                                aria-selected="{{$tab == 'packing_slips' ? 'true' : 'false'}}">
+                            <x-bi-list-ul/>
+                            Packing Slips
+                        </a>
+                    </li>
+                </ul>
+
+            </div>
+            <div class="col border-bottom"></div>
+        </div>
+
+    </div>
+@endsection
+
+@section('content')
+    <div class="container">
+        <div class="row justify-content-center my-3">
+            <div class="tab-content">
+                <div class="tab-pane {{$tab == 'active_orders' ? 'active' : ''}}" id="active_orders" role="tabpanel"
+                        aria-labelledby="active_orders-tab">
+
+                    <livewire:orders-table :order-type="'active'" :show-customer-column="true" title="Active Orders"/>
+                </div>
+            </div>
+        </div>
+    </div>
+@endsection
diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php
deleted file mode 100644
index 1f34466..0000000
--- a/resources/views/home.blade.php
+++ /dev/null
@@ -1,23 +0,0 @@
-@extends('layouts.app')
-
-@section('content')
-<div class="container">
-    <div class="row justify-content-center">
-        <div class="col-md-8">
-            <div class="card">
-                <div class="card-header">{{ __('Dashboard') }}</div>
-
-                <div class="card-body">
-                    @if (session('status'))
-                        <div class="alert alert-success" role="alert">
-                            {{ session('status') }}
-                        </div>
-                    @endif
-
-                    {{ __('You are logged in!') }}
-                </div>
-            </div>
-        </div>
-    </div>
-</div>
-@endsection
diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php
index 1593400..9ef0aae 100644
--- a/resources/views/layouts/app.blade.php
+++ b/resources/views/layouts/app.blade.php
@@ -15,65 +15,12 @@
 
     <!-- Scripts -->
     @vite(['resources/sass/app.scss', 'resources/js/app.js'])
+
+{{--    @livewireStyles--}}
 </head>
 <body>
 <div id="app">
-    <nav class="navbar navbar-expand-md navbar-light bg-white shadow-sm">
-        <div class="container">
-            <a class="navbar-brand" href="{{ url('/') }}">
-                {{ config('app.name', 'Laravel') }}
-            </a>
-            <button class="navbar-toggler" type="button" data-bs-toggle="collapse"
-                    data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent"
-                    aria-expanded="false" aria-label="{{ __('Toggle navigation') }}">
-                <span class="navbar-toggler-icon"></span>
-            </button>
-
-            <div class="collapse navbar-collapse" id="navbarSupportedContent">
-                <!-- Left Side Of Navbar -->
-                <ul class="navbar-nav me-auto">
-
-                </ul>
-
-                <!-- Right Side Of Navbar -->
-                <ul class="navbar-nav ms-auto">
-                    <!-- Authentication Links -->
-                    @guest
-                        @if (Route::has('login'))
-                            <li class="nav-item">
-                                <a class="nav-link" href="{{ route('login') }}">{{ __('Login') }}</a>
-                            </li>
-                        @endif
-
-                        @if (Route::has('register'))
-                            <li class="nav-item">
-                                <a class="nav-link" href="{{ route('register') }}">{{ __('Register') }}</a>
-                            </li>
-                        @endif
-                    @else
-                        <li class="nav-item dropdown">
-                            <a id="navbarDropdown" class="nav-link dropdown-toggle" href="#" role="button"
-                                    data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre>
-                                {{ Auth::user()->name }}
-                            </a>
-
-                            <div class="dropdown-menu dropdown-menu-end" aria-labelledby="navbarDropdown">
-                                <a class="dropdown-item" href="{{ route('logout') }}"
-                                        onclick="event.preventDefault();
-                                                     document.getElementById('logout-form').submit();">
-                                    {{ __('Logout') }}
-                                </a>
-
-                                <form id="logout-form" action="{{ route('logout') }}" method="POST" class="d-none">
-                                    @csrf
-                                </form>
-                            </div>
-                        </li>
-                    @endguest
-                </ul>
-            </div>
-        </div>
-    </nav>
+    @include('layouts.nav')
 
     <main>
         @yield('header')
@@ -81,5 +28,6 @@
     </main>
 </div>
 
+{{--@livewireScripts--}}
 </body>
 </html>
diff --git a/resources/views/layouts/nav.blade.php b/resources/views/layouts/nav.blade.php
new file mode 100644
index 0000000..8472126
--- /dev/null
+++ b/resources/views/layouts/nav.blade.php
@@ -0,0 +1,97 @@
+<nav class="navbar navbar-expand-md navbar-light bg-white border-bottom">
+    <div class="container">
+        <a class="navbar-brand" href="{{ url('/') }}">
+            {{ config('app.name', 'Laravel') }}
+        </a>
+        <button class="navbar-toggler" type="button" data-bs-toggle="collapse"
+                data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent"
+                aria-expanded="false" aria-label="{{ __('Toggle navigation') }}">
+            <span class="navbar-toggler-icon"></span>
+        </button>
+
+        <div class="collapse navbar-collapse" id="navbarSupportedContent">
+            <!-- Left Side Of Navbar -->
+            <ul class="navbar-nav me-auto">
+                <li class="nav-item px-2">
+                    <a class="nav-link @if(request()->routeIs('dashboard')) active @endif "
+                            href="{{route('dashboard')}}">
+                        <x-bi-activity/>
+                        Dashboard</a>
+                </li>
+                <li class="nav-item">
+                    <a class="nav-link @if(request()->routeIs('search')) active @endif disabled"
+                            href="">
+                        <x-bi-search/>
+                        Search</a>
+                </li>
+                <li class="nav-item px-2">
+                    <a class="nav-link @if(request()->routeIs('orders.*')) active @endif"
+                            href="{{route('orders.index')}}">
+                        <x-bi-box/>
+                        Orders</a>
+                </li>
+                <li class="nav-item px-2">
+                    <a class="nav-link @if(request()->routeIs('quotes')) active @endif disabled"
+                            href="">
+                        <x-bi-file-text/>
+                        Quotes</a>
+                </li>
+                <li class="nav-item px-2">
+                    <a class="nav-link @if(request()->routeIs('invoices')) active @endif disabled"
+                            href="">
+                        <x-bi-envelope/>
+                        Invoices</a>
+                </li>
+                <li class="nav-item dropdown px-2">
+                    <a class="nav-link dropdown-toggle @if(request()->routeIs('management.index') || request()->routeIs('customer.*')) active @endif" href="#"
+                            role="button" data-bs-toggle="dropdown" aria-expanded="false">
+                        <x-bi-pencil-square/>
+                        Management
+                    </a>
+                    <ul class="dropdown-menu">
+                        <li><a class="dropdown-item @if(request()->routeIs('customers.*')) fw-bold @endif" href="{{route('management.index')}}">Customers</a></li>
+                        <li><a class="dropdown-item @if(request()->routeIs('packing-slips.*')) fw bold @endif" href="{{route('management.index', 'packing')}}">Packing Slips</a></li>
+                        <li><a class="dropdown-item @if(request()->routeIs('service-files.*')) fw bold @endif" href="{{route('management.index', 'files')}}">Service Files</a></li>
+                    </ul>
+                </li>
+            </ul>
+
+            <!-- Right Side Of Navbar -->
+            <ul class="navbar-nav ms-auto">
+                <!-- Authentication Links -->
+                @guest
+                    @if (Route::has('login'))
+                        <li class="nav-item">
+                            <a class="nav-link" href="{{ route('login') }}">{{ __('Login') }}</a>
+                        </li>
+                    @endif
+
+                    @if (Route::has('register'))
+                        <li class="nav-item">
+                            <a class="nav-link" href="{{ route('register') }}">{{ __('Register') }}</a>
+                        </li>
+                    @endif
+                @else
+                    <li class="nav-item dropdown">
+                        <a id="navbarDropdown" class="nav-link dropdown-toggle" href="#" role="button"
+                                data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre>
+                            {{ Auth::user()->name }}
+                        </a>
+
+                        <div class="dropdown-menu dropdown-menu-end" aria-labelledby="navbarDropdown">
+                            <a class="dropdown-item" href="{{ route('logout') }}"
+                                    onclick="event.preventDefault();
+                                                     document.getElementById('logout-form').submit();">
+                                {{ __('Logout') }}
+                            </a>
+
+                            <form id="logout-form" action="{{ route('logout') }}" method="POST" class="d-none">
+                                @csrf
+                            </form>
+                        </div>
+                    </li>
+                @endguest
+            </ul>
+        </div>
+    </div>
+</nav>
\ No newline at end of file
diff --git a/resources/views/livewire/counter.blade.php b/resources/views/livewire/counter.blade.php
new file mode 100644
index 0000000..2107cc7
--- /dev/null
+++ b/resources/views/livewire/counter.blade.php
@@ -0,0 +1,7 @@
+<div>
+    <h1>{{ $count }}</h1>
+
+    <button wire:click="increment">+</button>
+
+    <button wire:click="decrement">-</button>
+</div>
diff --git a/resources/views/livewire/create-order.blade.php b/resources/views/livewire/create-order.blade.php
new file mode 100644
index 0000000..b80e6e0
--- /dev/null
+++ b/resources/views/livewire/create-order.blade.php
@@ -0,0 +1,3 @@
+<div>
+
+</div>
diff --git a/resources/views/livewire/customer-and-contact-select.blade.php b/resources/views/livewire/customer-and-contact-select.blade.php
new file mode 100644
index 0000000..5888c11
--- /dev/null
+++ b/resources/views/livewire/customer-and-contact-select.blade.php
@@ -0,0 +1,44 @@
+<div>
+    <div class="row mb-2">
+        <label for="customer_id" class="col-md-4 col-form-label text-md-end">Customer</label>
+        <div class="col-md-6">
+            <select wire:change="updateContactList" wire:model="selectedCustomer" name="customer_id"
+                    class="form-select form-select-sm" id="customer_id" autofocus required>
+                @foreach($customers as $customer)
+                    <option value="{{$customer->id}}" {{ old('customer_id') == $customer->id ? "selected" : "" }}>
+                        {{$customer->company_name}}
+                    </option>
+                @endforeach()
+            </select>
+
+            @error('customer_id')
+            <span class="invalid-feedback" role="alert">
+                <strong>{{ $message }}</strong>
+            </span>
+            @enderror
+        </div>
+    </div>
+
+    <div class="row mb-2">
+        <label for="contact_id" class="col-md-4 col-form-label text-md-end">Contact</label>
+        <div class="col-md-6">
+            @if(isset($contacts))
+                <select wire:model="contacts" wire:key="{{$customer}}" name="contact_id"
+                        class="form-select form-select-sm" id="contact_id">
+                    <option value=""></option>
+                    @foreach($contacts as $contact)
+                        <option value="{{$contact->id}}" {{ old('contact_id') == $contact->id ? "selected" : "" }}>
+                            {{$contact->full_name}}
+                        </option>
+                    @endforeach
+                </select>
+
+                @error('contact_id')
+                <span class="invalid-feedback" role="alert">
+                    <strong>{{ $message }}</strong>
+                </span>
+                @enderror
+            @endif
+        </div>
+    </div>
+</div>
diff --git a/resources/views/livewire/order-products-create.blade.php b/resources/views/livewire/order-products-create.blade.php
new file mode 100644
index 0000000..bcc1a9d
--- /dev/null
+++ b/resources/views/livewire/order-products-create.blade.php
@@ -0,0 +1,299 @@
+<div>
+
+    <div class="overflow-x-hidden overflow-y-visible" style="max-height: 730px">
+        <table class="table table-striped table-sm mb-1 ms-0">
+            <thead>
+            <tr>
+                <th scope="col">#</th>
+                <th scope="col">SKU</th>
+                <th scope="col">Product Name</th>
+                <th scope="col">Color</th>
+                <th scope="col">XS</th>
+                <th scope="col">S</th>
+                <th scope="col">M</th>
+                <th scope="col">L</th>
+                <th scope="col">XL</th>
+                <th scope="col">2XL</th>
+                <th scope="col">3XL</th>
+                <th scope="col">OSFA</th>
+                <th scope="col">Total</th>
+                <th scope="col"></th>
+            </tr>
+            </thead>
+            <tbody>
+
+            @foreach($productInputs as $key => $value)
+
+                <tr wire:key="productRow.{{$key}}">
+
+                    <input type="hidden" name="productInputCount[]" value="1">
+
+                    <th scope="row" class="align-middle">{{$loop->index+1}}</th>
+                    <td class="col-1">
+                        <!-- SKU -->
+
+                        <input id="sku_{{$key}}" type="text"
+                                class="form-control form-control-sm @error('sku') is-invalid @enderror"
+                                name="sku[]" value="{{@old('sku')}}" autofocus
+                                wire:change="determineAddProductRow({{$loop->index}})">
+                    </td>
+                    <td class="col-3">
+                        <!-- product_name -->
+
+                        <input id="product_name_{{$key}}" type="text"
+                                class="form-control form-control-sm @error('product_name') is-invalid @enderror"
+                                name="product_name[]" value="{{@old('product_name')}}"
+                                wire:change="determineAddProductRow({{$loop->index}})">
+                    </td>
+                    <td class="col-1">
+                        <!-- product_color -->
+
+                        <input id="product_color_{{$key}}" type="text" min="0"
+                                class="form-control form-control-sm @error('product_color') is-invalid @enderror"
+                                name="product_color[]" value="{{@old('product_color')}}"
+                                wire:change="determineAddProductRow({{$loop->index}})">
+                    </td>
+                    <td class="" style="width: 55px">
+                        <!-- size_xs -->
+
+                        <input id="size_xs_{{$key}}" type="number" min="0"
+                                class="form-control form-control-sm @error('size_xs') is-invalid @enderror"
+                                name="size_xs[]" value="{{@old('size_xs')}}"
+                                wire:model.live="sizes.{{$key}}.xs"
+                                wire:change="determineAddProductRow({{$loop->index}})">
+                    </td>
+                    <td class="" style="width: 55px">
+                        <!-- size_s -->
+
+                        <input id="size_s_{{$key}}" type="number" min="0"
+                                class="form-control form-control-sm @error('size_s') is-invalid @enderror"
+                                name="size_s[]" value="{{@old('size_s')}}"
+                                wire:model.live="sizes.{{$key}}.s"
+                                wire:change="determineAddProductRow({{$loop->index}})">
+                    </td>
+                    <td class="" style="width: 55px">
+                        <!-- size_m -->
+
+                        <input id="size_m_{{$key}}" type="number" min="0"
+                                class="form-control form-control-sm @error('size_m') is-invalid @enderror"
+                                name="size_m[]" value="{{@old('size_m')}}"
+                                wire:model.live="sizes.{{$key}}.m"
+                                wire:change="determineAddProductRow({{$loop->index}})">
+                    </td>
+                    <td class="" style="width: 55px">
+                        <!-- size_l -->
+
+                        <input id="size_l_{{$key}}" type="number" min="0"
+                                class="form-control form-control-sm @error('size_l') is-invalid @enderror"
+                                name="size_l[]" value="{{@old('size_l')}}"
+                                wire:model.live="sizes.{{$key}}.l"
+                                wire:change="determineAddProductRow({{$loop->index}})">
+                    </td>
+                    <td class="" style="width: 55px">
+                        <!-- size_xl -->
+
+                        <input id="size_xl_{{$key}}" type="number" min="0"
+                                class="form-control form-control-sm @error('size_xl') is-invalid @enderror"
+                                name="size_xl[]" value="{{@old('size_xl')}}"
+                                wire:model.live="sizes.{{$key}}.xl"
+                                wire:change="determineAddProductRow({{$loop->index}})">
+                    </td>
+                    <td class="" style="width: 55px">
+                        <!-- size_2xl -->
+
+                        <input id="size_2xl_{{$key}}" type="number" min="0"
+                                class="form-control form-control-sm @error('size_2xl') is-invalid @enderror"
+                                name="size_2xl[]" value="{{@old('size_2xl')}}"
+                                wire:model.live="sizes.{{$key}}.2xl"
+                                wire:change="determineAddProductRow({{$loop->index}})">
+
+                    </td>
+                    <td class="" style="width: 55px">
+                        <!-- size_3xl -->
+
+                        <input id="size_3xl_{{$key}}" type="number" min="0"
+                                class="form-control form-control-sm @error('size_3xl') is-invalid @enderror"
+                                name="size_3xl[]"
+                                wire:model.live="sizes.{{$key}}.3xl"
+                                wire:change="determineAddProductRow({{$loop->index}})">
+                    </td>
+                    <td style="width: 55px">
+                        <!-- size_osfa -->
+
+                        <input id="size_osfa_{{$key}}" type="number" min="0"
+                                class="form-control form-control-sm @error('size_osfa') is-invalid @enderror"
+                                name="size_osfa[]" value="{{@old('size_osfa')}}"
+                                wire:model.live="sizes.{{$key}}.osfa"
+                                wire:change="determineAddProductRow({{$loop->index}})"
+                        >
+                    </td>
+                    <td class="col" style="width: 55px">
+                        <input id="product_total_{{$key}}" type="number"
+                                class="form-control form-control-sm @error('product_total') is-invalid @enderror"
+                                name="product_total[]" readonly
+                                wire:model.live="totals.{{$key}}"
+                        >
+
+                    </td>
+                    <td class="col" style="width: 40px">
+                        @if($key > 0)
+                            <button class="btn btn-sm" type="button" wire:click="removeProductInput({{$key}})">
+                                <x-bi-trash3/>
+                            </button>
+                        @endif
+                    </td>
+                </tr>
+            @endforeach
+
+            </tbody>
+        </table>
+
+
+        <div class="d-flex gap-2">
+            <label for="total-quantity" class="text-nowrap col-form-label">Total Quantity:</label>
+
+            <input type="number" name="total-quantity" id="" class="form-control-plaintext" readonly
+                    wire:model.live="totalQuantity">
+        </div>
+    </div>
+
+    <!-- Title -->
+    <div class="row px-2 border-bottom mt-4">
+        <div class="row fw-bold">
+            <div class="col-1 px-1 text-end" style="width: 40px;">#</div>
+            <div class="col-1 px-1">Service</div>
+            <div class="col-2 px-1">Placement</div>
+            <div class="col-3 px-1">Logo Name</div>
+
+            <div class="col-5">
+                <div class="row">
+                    <div class="col px-1">Setup</div>
+                    <div class="col px-1">Width</div>
+                    <div class="col px-1">Height</div>
+                    <div class="col px-1">Unit</div>
+                    <div class="col px-1">Price</div>
+                    <div class="col px-1">Total</div>
+                    <div class="col px-1"></div>
+                </div>
+            </div>
+        </div>
+    </div>
+
+    <!-- Row -->
+
+    @foreach($serviceInputs as $key => $value)
+        <div class="row">
+
+            <input type="hidden" name="serviceInputCount[]" value="1">
+
+            <div class="@if($loop->index % 2 != 1) bg-body-tertiary @endif border-bottom py-2">
+                <div class="row mb-1">
+                    <div class="row mb-2">
+                        <div class="col-1 px-1 fw-bold  text-end" style="width: 40px;">{{$loop->index+1}}</div>
+                        <div class="col-1 px-1">
+                            <input id="service_name_{{$key}}" type="text"
+                                    class="form-control form-control-sm m-0 @error('service_name') is-invalid @enderror"
+                                    name="service_type[]" value="{{@old('service_name')}}" placeholder="Service"
+                                    wire:change="determineAddServiceProductRow({{$loop->index}})">
+                        </div>
+                        <div class="col-2 px-1">
+                            <input id="placement_{{$key}}" type="text"
+                                    class="form-control form-control-sm @error('placement') is-invalid @enderror"
+                                    name="placement[]" value="{{@old('placement')}}"
+                                    wire:change="determineAddServiceProductRow({{$loop->index}})">
+                        </div>
+                        <div class="col-3 px-1">
+                            <input id="logo_name_{{$key}}" type="text"
+                                    class="form-control form-control-sm @error('logo_name') is-invalid @enderror"
+                                    name="logo_name[]" value="{{@old('logo_name')}}"
+                                    wire:change="determineAddServiceProductRow({{$loop->index}})">
+                        </div>
+                        <div class="col-5">
+
+                            <div class="row">
+                                <div class="col px-1">
+                                    <input id="setup_number_{{$key}}" type="number" min="0"
+                                            class="form-control form-control-sm @error('setup_number') is-invalid @enderror"
+                                            name="setup_amount[]" value="{{@old('setup_number')}}"
+                                            wire:change="determineAddServiceProductRow({{$loop->index}})">
+                                </div>
+                                <div class="col px-1">
+                                    <input id="service_width_{{$key}}" type="number" min="0"
+                                            class="form-control form-control-sm @error('service_width') is-invalid @enderror"
+                                            name="service_width[]" value="{{@old('service_width')}}"
+                                            wire:change="determineAddServiceProductRow({{$loop->index}})">
+                                </div>
+                                <div class="col px-1">
+                                    <input id="service_height_{{$key}}" type="number" min="0"
+                                            class="form-control form-control-sm @error('service_height') is-invalid @enderror"
+                                            name="service_height[]" value="{{@old('service_height')}}"
+                                            wire:change="determineAddServiceProductRow({{$loop->index}})">
+                                </div>
+                                <div class="col px-1">
+                                    <input id="service_setup_unit_{{$key}}" type="number" min="0"
+                                            class="form-control form-control-sm @error('service_setup_unit') is-invalid @enderror"
+                                            name="amount[]"
+                                            value="{{@old('service_setup_unit')}}"
+                                            wire:change="determineAddServiceProductRow({{$loop->index}})"
+                                            wire:model.live="units.{{$key}}"
+                                    >
+                                </div>
+                                <div class="col px-1">
+                                    <input id="service_setup_price_{{$key}}" type="text"
+                                            class="form-control form-control-sm @error('service_setup_price') is-invalid @enderror"
+                                            name="amount_price[]"
+                                            value="{{@old('service_setup_price')}}"
+                                            wire:change="determineAddServiceProductRow({{$loop->index}})"
+                                            wire:model.live="prices.{{$key}}"
+                                    >
+                                </div>
+                                <div class="col px-1">
+                                    <input id="service_total_{{$key}}" type="number" precision="2"
+                                            class="form-control form-control-sm px-1 @error('service_total') is-invalid @enderror"
+                                            name="service_total" readonly
+                                            wire:model.live="priceTotals.{{$key}}">
+                                </div>
+                                <div class="col px-1 text-end" style="width: 40px;">
+                                    @if($key > 0)
+                                        <button class="btn btn-sm" type="button"
+                                                wire:click="removeServiceInput({{$key}})">
+                                            <x-bi-trash3/>
+                                        </button>
+                                    @endif
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="row mx-0 px-0">
+                        <div class="col-1" style="width: 40px;"></div>
+                        <div class="col-1 px-1">
+                            <input id="service_file_name_{{$key}}" type="text"
+                                    class="form-control form-control-sm @error('service_file_name') is-invalid @enderror"
+                                    name="service_file_name[]" value="{{@old('service_file_name')}}"
+                                    placeholder="File"
+                                    wire:change="determineAddServiceProductRow({{$loop->index}})">
+                        </div>
+
+                        <div class="col-9 px-1">
+                             <textarea name="contents[]" id="contents_{{$key}}" style="resize: none" rows="2"
+                                     class="form-control form-control-sm"
+                                     placeholder="Thread colors"
+                                     wire:change="determineAddServiceProductRow({{$loop->index}})"
+                             >{{ old('contents') }}</textarea>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    @endforeach
+
+    {{--        <div class="row">--}}
+    <div class="d-flex flex-row gap-2 ">
+        <label for="total-price" class="col-form-label text-nowrap">Total Price:</label>
+        <input type="text" name="total-price" id="" class="col-1 form-control-plaintext" readonly
+                wire:model.live="totalPrice">
+    </div>
+    {{--        </div>--}}
+</div>
+
+</div>
diff --git a/resources/views/livewire/orders-table.blade.php b/resources/views/livewire/orders-table.blade.php
new file mode 100644
index 0000000..93bb7c4
--- /dev/null
+++ b/resources/views/livewire/orders-table.blade.php
@@ -0,0 +1,111 @@
+<div>
+
+    <div class="row justify-content-center mb-3">
+        <div class="col-9">
+            <div class="d-flex flex-row gap-2">
+                <div class="d-inline-flex">
+                    <h4 class="my-auto">{{$this->title}}</h4>
+                </div>
+                <div class="mx-auto"></div>
+                <a href="{{route('orders.create')}}"
+                        class="btn btn-sm btn-primary" title="Create new order...">
+                    <x-bi-plus-circle-fill/>
+                    Create entry
+                </a>
+                <div class="vr"></div>
+
+                <div class="d-inline-flex">
+                    <select name="" id="" class="form-select form-select-sm">
+                        <option value="">Sort by...</option>
+                        <option value="">Customer</option>
+                        <option value="">Internal PO</option>
+                        <option value="">Customer PO</option>
+                        <option value="">Order Date</option>
+                        <option value="">Due Date</option>
+                        <option value="">Status</option>
+                        <option value="">Rush</option>
+                    </select>
+                </div>
+
+                <div class="d-inline-flex">
+                    <div class="btn-group" role="group">
+                        <button class="btn btn-sm btn-secondary">Asc</button>
+                        <button class="btn btn-sm btn-outline-secondary">Desc</button>
+                    </div>
+                </div>
+
+                <div class="vr"></div>
+
+                <div class="d-inline-flex gap-2">
+                    <input wire:model.live.debounce.50ms="search" type="text" class="form-control form-control-sm"
+                            placeholder="Search..."
+                            name="" id="searchText">
+                    <button class="btn btn-sm btn-outline-primary" id="searchButton">
+                        <x-bi-search/>
+                    </button>
+                </div>
+            </div>
+        </div>
+    </div>
+
+    <div class="row justify-content-center">
+        <div class="col-9">
+            <table class="table table-striped table-sm table-hover">
+                <thead>
+                <tr class="border-bottom border-black">
+                    {{--                    @if($this->showCustomerColumn)--}}
+                    <th scope="col">Customer</th>
+                    {{--                    @endif()--}}
+                    <th scope="col">Internal PO</th>
+                    <th scope="col">Customer PO</th>
+                    <th scope="col">Order Date</th>
+                    <th scope="col">Due Date</th>
+                    <th scope="col">Status</th>
+                    <th scope="col">Rush</th>
+                    <th scope="col">View</th>
+                </tr>
+                </thead>
+                <tbody>
+                @foreach($orders as $order)
+                    <tr class="@if($today > $order->due_date && $order->active()) table-danger @elseif($order->rush && $order->active()) table-warning @endif">
+                        <td><a class="text-reset text-decoration-none"
+                                    href="{{route('customers.show', [$order->customer, 'details'])}}">{{$order->customer->company_name}}</a>
+                        </td>
+                        <td class="fw-bold"><code>{{$order->internal_po}}</code></td>
+                        <td class=""><code>{{$order->customer_po}}</code></td>
+                        <td class="text-nowrap">{{$order->order_date}}</td>
+
+                        <td class="text-nowrap ">
+                            {{$order->due_date}}
+                            @if($order->due_date < $today && $order->active())
+                                <x-bi-exclamation-triangle/>
+                            @endif </td>
+
+                        <td>{{$order->status->value}}</td>
+                        <td>
+                            @if($order->rush)
+                                <x-bi-check-lg class="text-danger"></x-bi-check-lg>
+                            @endif
+                        </td>
+                        <td class="align-top">
+                            <a class="btn btn-sm btn-outline-secondary px-1 py-0 m-0"
+                                    href="">
+                                <x-bi-arrow-right/>
+                            </a>
+                        </td>
+                    </tr>
+                @endforeach
+                </tbody>
+            </table>
+        </div>
+    </div>
+
+    <div class="row">
+        <div class="col"></div>
+        <div class="col-9">
+            {{$orders->links()}}
+        </div>
+        <div class="col"></div>
+    </div>
+
+</div>
diff --git a/resources/views/management/index.blade.php b/resources/views/management/index.blade.php
new file mode 100644
index 0000000..7e0a606
--- /dev/null
+++ b/resources/views/management/index.blade.php
@@ -0,0 +1,27 @@
+@extends('layouts.app')
+
+@section('header')
+    @include('partials.management.index.management-tabs')
+
+@endsection()
+
+@section('content')
+    <div class="container">
+        <div class="tab-content">
+
+            @include('partials.management.index.customers')
+
+            @include('partials.management.index.packing-slips')
+
+            @include('partials.management.index.service-files')
+
+        </div>
+    </div>
+
+    <!-- Create Customer Modal -->
+    @include('partials.customers.index.create-modal')
+
+    <!-- Delete Customer Modal -->
+    @include('partials.customers.index.delete-all-modal')
+
+@endsection
diff --git a/resources/views/order-products/create.blade.php b/resources/views/order-products/create.blade.php
new file mode 100644
index 0000000..a76e9ad
--- /dev/null
+++ b/resources/views/order-products/create.blade.php
@@ -0,0 +1,39 @@
+@extends('layouts.app')
+
+
+@section('header')
+    <div class="container-fluid bg-light pt-3">
+
+        <!-- name row -->
+        <div class="row justify-content-center pb-2">
+        </div>
+
+        <!-- Tabs row -->
+        <div class="row justify-content-center mb-3">
+            <div class="col-3 border-bottom"></div>
+            <div class="col-6 p-0">
+                <ul class="nav nav-fill nav-tabs" id="management-tabs" role="tablist">
+                    <li class="nav-item" role="presentation">
+                        <a class="nav-link link-dark active" id="order-tab"
+                                href="#" type="button" role="tab" aria-controls="order" aria-selected="true">
+                            <x-bi-box/>
+                            Add Products To Order
+                        </a>
+                    </li>
+                </ul>
+            </div>
+            <div class="col border-bottom"></div>
+        </div>
+    </div>
+@endsection
+
+@section('content')
+    <div class="container">
+        <div class="row justify-content-center">
+            <div class="col-10 pt-3">
+                <livewire:order-products-create/>
+            </div>
+        </div>
+    </div>
+
+@endsection
diff --git a/resources/views/orders/create.blade.php b/resources/views/orders/create.blade.php
index 5c1db42..49ec647 100644
--- a/resources/views/orders/create.blade.php
+++ b/resources/views/orders/create.blade.php
@@ -1,130 +1,217 @@
 @extends('layouts.app')
 
-@section('content')
-    <div class="container">
-        <div class="row justify-content-center">
-            <div class="col-8 pt-4">
-                <h4>Create Order</h4>
 
-                <div class="row mb-3">
-                    <label for="customer_id" class="col-md-4 col-form-label text-md-end">Customer</label>
-                    <div class="col-md-6">
-                        <select name="customer_id" class="form-select" id="customer_id" autofocus>
-                            @foreach($customers as $customer)
-                                <option value="{{$customer->id}}">{{$customer->company_name}}</option>
-                            @endforeach()
-                        </select>
-                    </div>
-                </div>
+@section('header')
+    <div class="container-fluid bg-light pt-3">
 
-                <div class="row mb-3">
-                    <label for="order_type" class="col-md-4 col-form-label text-md-end">Order Type</label>
-                    <div class="col-md-6">
-                        <select name="order_type" class="form-select" id="order_type" autofocus>
-                            @foreach($order_types as $case)
-                                <option value="{{$case->name}}">{{$case->value}}</option>
-                            @endforeach()
-                        </select>
-                    </div>
-                </div>
-
-                <div class="row mb-3">
-                    <label for="order_status" class="col-md-4 col-form-label text-md-end">Order Status</label>
-                    <div class="col-md-6">
-                        <select name="order_status" class="form-select" id="order_status" autofocus>
-                            @foreach($order_status as $case)
-                                <option value="{{$case->name}}">{{$case->value}}</option>
-                            @endforeach()
-                        </select>
-                    </div>
-                </div>
-
-                <hr class="border-secondary-subtle mx-4 px-0">
-
-                <div class="row mb-3">
-                    <label class="col-md-4 col-form-label text-md-end">Attributes</label>
-                    <div class="col-md-3">
-                        <div class="form-check ">
-                            <input class="form-check-input" type="checkbox" value="" id="new_art">
-                            <label class="form-check-label" for="new_art">New art</label>
-                        </div>
-                        <div class="form-check ">
-                            <input class="form-check-input" type="checkbox" value="" id="rush">
-                            <label class="form-check-label" for="rush">Rush</label>
-                        </div>
-                        <div class="form-check ">
-                            <input class="form-check-input" type="checkbox" value="" id="digitizing">
-                            <label class="form-check-label" for="digitizing">Digitizing</label>
-                        </div>
-                        <div class="form-check ">
-                            <input class="form-check-input" type="checkbox" value="" id="supplied_file">
-                            <label class="form-check-label" for="supplied_file">Customer Supplied File</label>
-                        </div>
-                    </div>
-                    <div class="col-md-3">
-                        <div class="form-check ">
-                            <input class="form-check-input" type="checkbox" value="" id="repeat">
-                            <label class="form-check-label" for="repeat">Repeat</label>
-                        </div>
-                        <div class="form-check ">
-                            <input class="form-check-input" type="checkbox" value="" id="event">
-                            <label class="form-check-label" for="event">Event</label>
-                        </div>
-                        <div class="form-check ">
-                            <input class="form-check-input" type="checkbox" value="" id="purchased_garments">
-                            <label class="form-check-label" for="purchased_garments">Purchased garments</label>
-                        </div>
-                    </div>
-                </div>
-
-                <hr class="border-secondary-subtle mx-4 px-0">
-
-                <div class="row mb-3">
-                    <label for="order_date" class="col-md-4 col-form-label text-md-end">Order date</label>
-
-                    <div class="col-md-6">
-                        <input id="order_date" type="date"
-                                class="form-control @error('order_date') is-invalid @enderror"
-                                name="order_date" value="{{ old('order_date') ?? $today }}" required
-                                autocomplete="order_date">
-
-                        @error('order_date')
-                        <span class="invalid-feedback" role="alert">
-                                        <strong>{{ $message }}</strong>
-                                    </span>
-                        @enderror
-                    </div>
-                </div>
-
-                <div class="row mb-3">
-                    <label for="due_date" class="col-md-4 col-form-label text-md-end">Due date</label>
-
-                    <div class="col-md-6">
-                        <input id="due_date" type="date"
-                                class="form-control @error('due_date') is-invalid @enderror"
-                                name="due_date" value="{{ old('due_date') ?? $due_default }}" required
-                                autocomplete="due_date">
-
-                        @error('due_date')
-                        <span class="invalid-feedback" role="alert">
-                                        <strong>{{ $message }}</strong>
-                                    </span>
-                        @enderror
-                    </div>
-                </div>
-
-                <hr class="border-secondary-subtle mx-4 px-0">
-
-                <div class="row mb-3">
-                    <label for="contact_id" class="col-md-4 col-form-label text-md-end">Contact</label>
-                    <div class="col-md-6">
-                        <select name="contact_id" class="form-select" id="contact_id" autofocus>
-                            <option value=""></option>
-                        </select>
-                    </div>
-                </div>
+        <!-- name row -->
+        <div class="row justify-content-center pb-2">
+        </div>
 
+        <!-- Tabs row -->
+        <div class="row justify-content-center mb-2">
+            <div class="col-3 border-bottom"></div>
+            <div class="col-6 p-0">
+                <ul class="nav nav-fill nav-tabs" id="management-tabs" role="tablist">
+                    <li class="nav-item" role="presentation">
+                        <a class="nav-link link-dark active" id="order-tab"
+                                href="#" type="button" role="tab"
+                                aria-controls="order" aria-selected="true">
+                            <x-bi-box/>
+                            Create Order
+                        </a>
+                    </li>
+                </ul>
             </div>
+            <div class="col border-bottom"></div>
         </div>
     </div>
 @endsection
+
+@section('content')
+    <div class="container-fluid mt-3" style="max-width: 1800px">
+
+        <form action="{{route('orders.store') }}" method="post">
+            @csrf
+
+            <div class="row justify-content-center">
+                <div class="col-11 col-xl-4 border-end" style="height: 730px">
+
+                    <livewire:customer-and-contact-select :customers="$customers"/>
+
+                    <hr class="border-secondary-subtle px-0">
+
+                    <div class="row mb-2">
+                        <label for="order_type" class="col-md-4 col-form-label text-md-end">Order Type</label>
+                        <div class="col-md-6">
+                            <select name="order_type" class="form-select form-select-sm" id="order_type">
+                                @foreach($order_types as $case)
+                                    <option value="{{$case->name}}">{{$case->value}}</option>
+                                @endforeach()
+                            </select>
+
+                            @error('order_type')
+                            <span class="invalid-feedback" role="alert">
+                                        <strong>{{ $message }}</strong>
+                                    </span>
+                            @enderror
+                        </div>
+                    </div>
+
+                    <div class="row mb-2">
+                        <label for="order_status" class="col-md-4 col-form-label text-md-end">Order
+                                                                                              Status</label>
+                        <div class="col-md-6">
+                            <select name="status" class="form-select form-select-sm" id="order_status">
+                                @foreach($order_status as $case)
+                                    <option value="{{$case->value}}" {{ $case->name === 'APPROVED' ? 'selected' : '' }}>
+                                        {{$case->value}}
+                                    </option>
+                                @endforeach()
+                            </select>
+
+                            @error('status')
+                            <span class="invalid-feedback" role="alert">
+                                        <strong>{{ $message }}</strong>
+                                    </span>
+                            @enderror
+                        </div>
+                    </div>
+
+                    <hr class="border-secondary-subtle px-0">
+
+                    <div class="row mb-2">
+                        <label class="col-md-4 col-form-label text-md-end">Customer PO</label>
+                        <div class="col-md-6">
+                            <input id="customer_po" type="text"
+                                    class="form-control form-control-sm @error('customer_po') is-invalid @enderror"
+                                    name="customer_po" value="{{@old('customer_po')}}" required>
+
+                            @error('customer_po')
+                            <span class="invalid-feedback" role="alert">
+                                        <strong>{{ $message }}</strong>
+                                    </span>
+                            @enderror
+                        </div>
+                    </div>
+
+                    <hr class="border-secondary-subtle px-0">
+
+                    <div class="row mb-2">
+                        <label class="col-md-4 col-form-label text-md-end">Attributes</label>
+                        <div class="col-md-3">
+                            <div class="form-check ">
+                                <input class="form-check-input" type="checkbox" id="new_art" name="new_art"
+                                        value="1">
+                                <label class="form-check-label" for="new_art">New art</label>
+                            </div>
+                            <div class="form-check ">
+                                <input class="form-check-input" type="checkbox" id="rush" name="rush" value="1">
+                                <label class="form-check-label" for="rush">Rush</label>
+                            </div>
+                            <div class="form-check ">
+                                <input class="form-check-input" type="checkbox" id="digitizing"
+                                        name="digitizing" value="1">
+                                <label class="form-check-label" for="digitizing">Digitizing</label>
+                            </div>
+                            <div class="form-check ">
+                                <input class="form-check-input" type="checkbox" id="supplied_file"
+                                        name="customer_supplied_file" value="1">
+                                <label class="form-check-label" for="supplied_file">
+                                    Customer Supplied File
+                                </label>
+                            </div>
+                        </div>
+                        <div class="col-md-3">
+                            <div class="form-check ">
+                                <input class="form-check-input" type="checkbox" id="repeat" name="repeat"
+                                        value="1">
+                                <label class="form-check-label" for="repeat">Repeat</label>
+                            </div>
+                            <div class="form-check ">
+                                <input class="form-check-input" type="checkbox" id="event" name="event"
+                                        value="1">
+                                <label class="form-check-label" for="event">Event</label>
+                            </div>
+                            <div class="form-check ">
+                                <input class="form-check-input" type="checkbox" id="purchased_garments"
+                                        value="1"
+                                        name="purchased_garment">
+                                <label class="form-check-label" for="purchased_garments">
+                                    Purchased
+                                                                                         garments</label>
+                            </div>
+                        </div>
+                    </div>
+
+                    <hr class="border-secondary-subtle px-0">
+
+                    <div class="row mb-2">
+                        <label for="order_date" class="col-md-4 col-form-label text-md-end">Order date</label>
+
+                        <div class="col-md-6">
+                            <input id="order_date" type="date"
+                                    class="form-control form-control-sm @error('order_date') is-invalid @enderror"
+                                    name="order_date" value="{{ old('order_date') ?? $today }}" required
+                            >
+
+                            @error('order_date')
+                            <span class="invalid-feedback" role="alert">
+                                        <strong>{{ $message }}</strong>
+                                    </span>
+                            @enderror
+                        </div>
+                    </div>
+
+                    <div class="row mb-2">
+                        <label for="due_date" class="col-md-4 col-form-label text-md-end">Due date</label>
+
+                        <div class="col-md-6">
+                            <input id="due_date" type="date"
+                                    class="form-control form-control-sm @error('due_date') is-invalid @enderror"
+                                    name="due_date" value="{{ old('due_date') ?? $due_default }}" required
+                            >
+
+                            @error('due_date')
+                            <span class="invalid-feedback" role="alert">
+                                        <strong>{{ $message }}</strong>
+                                    </span>
+                            @enderror
+                        </div>
+                    </div>
+
+                    <hr class="border-secondary-subtle px-0">
+
+                    <div class="row mb-2">
+                        <label for="notes" class="col-md-4 col-form-label text-md-end">Notes</label>
+
+                        <div class="col-md-6">
+                        <textarea name="notes" id="notes" cols="30" rows="4" class="form-control form-control-sm"
+                        >{{ old('notes') }}</textarea>
+
+                            @error('notes')
+                            <span class="invalid-feedback" role="alert">
+                                        <strong>{{ $message }}</strong>
+                                    </span>
+                            @enderror
+                        </div>
+                    </div>
+                </div>
+
+                <div class="col-11 col-xl-7">
+                    <livewire:order-products-create/>
+                </div>
+
+                <hr class="border-secondary-subtle px-0">
+
+                <div class="row">
+                    <div class="col text-end">
+                        <button type="submit" class="btn btn-primary">
+                            Save Order
+                        </button>
+                    </div>
+                </div>
+            </div>
+        </form>
+    </div>
+@endsection
diff --git a/resources/views/orders/index.blade.php b/resources/views/orders/index.blade.php
new file mode 100644
index 0000000..625655d
--- /dev/null
+++ b/resources/views/orders/index.blade.php
@@ -0,0 +1,91 @@
+@extends('layouts.app')
+
+@section('header')
+    <div class="container-fluid bg-light pt-3">
+
+        <!-- Customer company name row -->
+        <div class="row justify-content-center pb-2">
+            <div class="col-3"></div>
+            <div class="col">
+                {{--                <h2>Overview</h2>--}}
+            </div>
+        </div>
+
+        <!-- Tabs row -->
+        <div class="row justify-content-center mb-3">
+            <div class="col-3 border-bottom"></div>
+            <div class="col-6 p-0">
+
+                <ul class="nav nav-fill nav-tabs" id="home-tabs" role="tablist">
+                    <li class="nav-item" role="presentation">
+                        <a class="nav-link link-dark {{$tab == 'all' ? 'active' : ''}}" id="all-tab"
+                                href="{{route('orders.index', ['tab' => 'all'])}}" type="button" role="tab"
+                                aria-controls="all" aria-selected="{{$tab == 'all' ? 'true' : 'false'}}">
+                            <x-bi-journals/>
+                            All Orders
+                        </a>
+                    </li>
+                    <li class="nav-item" role="presentation">
+                        <a class="nav-link link-dark {{$tab == 'active_orders' ? 'active' : ''}}" id="active-orders-tab"
+                                href="{{route('orders.index', ['tab' => 'active_orders'])}}" type="button" role="tab"
+                                aria-controls="active_orders"
+                                aria-selected="{{$tab == 'active_orders' ? 'true' : 'false'}}">
+                            <x-bi-arrow-clockwise/>
+                            Active Orders
+                        </a>
+                    </li>
+                    <li class="nav-item" role="presentation">
+                        <a class="nav-link link-dark {{$tab == 'finished_orders' ? 'active' : ''}}"
+                                id="finished-orders-tab"
+                                href="{{route('orders.index', ['tab' => 'finished_orders'])}}" type="button" role="tab"
+                                aria-controls="finished_orders"
+                                aria-selected="{{$tab == 'finished_orders' ? 'true' : 'false'}}">
+                            <x-bi-check-all/>
+                            Finished Orders
+                        </a>
+                    </li>
+
+                    <li class="nav-item" role="presentation">
+                        <a class="nav-link link-dark {{$tab == 'invoice' ? 'active' : ''}}" id="invoice-tab"
+                                href="{{route('orders.index', ['tab' => 'invoice'])}}" type="button" role="tab"
+                                aria-controls="invoice" aria-selected="{{$tab == 'invoice' ? 'true' : 'false'}}">
+                            <x-bi-envelope/>
+                            Invoiced Orders
+                        </a>
+                    </li>
+                </ul>
+            </div>
+            <div class="col border-bottom"></div>
+        </div>
+    </div>
+@endsection
+
+@section('content')
+    <div class="container">
+        <div class="row justify-content-center my-3">
+            <div class="tab-content">
+
+                <div class="tab-pane {{$tab == 'active_orders' ? 'active' : ''}}" id="active_orders" role="tabpanel"
+                        aria-labelledby="active-orders-tab">
+                    <livewire:orders-table order-type="active" :show-customer-column='true' :title="'Active Orders'"/>
+                </div>
+
+                <div class="tab-pane {{$tab == 'finished_orders' ? 'active' : ''}}" id="finished-orders" role="tabpanel"
+                        aria-labelledby="finished-orders-tab">
+                    <livewire:orders-table order-type="finished" :show-customer-column='true' title="Finished Orders"/>
+                </div>
+
+                <div class="tab-pane {{$tab == 'all' ? 'active' : ''}}" id="all-orders" role="tabpanel"
+                        aria-labelledby="all-orders-tab">
+                    <livewire:orders-table order-type="all" :show-customer-column='true' title="All Orders"/>
+                </div>
+
+                <div class="tab-pane {{$tab == 'invoice' ? 'active' : ''}}" id="invoice-orders" role="tabpanel"
+                        aria-labelledby="invoice-orders-tab">
+                    <livewire:orders-table order-type="invoiced" :show-customer-column='true' title="Invoiced Orders"/>
+                </div>
+
+            </div>
+        </div>
+    </div>
+@endsection
diff --git a/resources/views/orders/show.blade.php b/resources/views/orders/show.blade.php
new file mode 100644
index 0000000..964d174
--- /dev/null
+++ b/resources/views/orders/show.blade.php
@@ -0,0 +1,71 @@
+@extends('layouts.app')
+
+@section('header')
+    <div class="container-fluid bg-light pt-3">
+
+        <!-- Customer company name row -->
+        <div class="row justify-content-center pb-2">
+            <div class="col-3"></div>
+            <div class="col">
+                {{--                <h2>Overview</h2>--}}
+            </div>
+        </div>
+
+        <!-- Tabs row -->
+        <div class="row justify-content-center mb-3">
+            <div class="col-3 border-bottom"></div>
+            <div class="col-6 p-0">
+
+                <ul class="nav nav-fill nav-tabs" id="home-tabs" role="tablist">
+                    <li class="nav-item" role="presentation">
+                        <a class="nav-link link-dark {{$tab == 'details' ? 'active' : ''}}" id="details-tab"
+                                href="{{route('orders.index', ['tab' => 'details'])}}" type="button" role="tab"
+                                aria-controls="details" aria-selected="{{$tab == 'details' ? 'true' : 'false'}}">
+                            <x-bi-list-ul/>
+                            Order Details
+                        </a>
+                    </li>
+                    <li class="nav-item" role="presentation">
+                        <a class="nav-link link-dark {{$tab == 'timeline' ? 'active' : ''}}" id="timeline-tab"
+                                href="{{route('orders.index', ['tab' => 'timeline'])}}" type="button" role="tab"
+                                aria-controls="timeline" aria-selected="{{$tab == 'timeline' ? 'true' : 'false'}}">
+                            <x-bi-calendar-range/>
+                            Timeline
+                        </a>
+                    </li>
+                </ul>
+            </div>
+            <div class="col border-bottom"></div>
+        </div>
+    </div>
+@endsection
+
+@section('content')
+    <div class="container">
+        <div class="row justify-content-center my-3">
+            <div class="tab-content">
+
+                <div class="tab-pane {{$tab == 'active_orders' ? 'active' : ''}}" id="active_orders" role="tabpanel"
+                        aria-labelledby="active-orders-tab">
+                    <livewire:orders-table order-type="active" :show-customer-column='true' :title="'Active Orders'"/>
+                </div>
+
+                <div class="tab-pane {{$tab == 'finished_orders' ? 'active' : ''}}" id="finished-orders" role="tabpanel"
+                        aria-labelledby="finished-orders-tab">
+                    <livewire:orders-table order-type="finished" :show-customer-column='true' title="Finished Orders"/>
+                </div>
+
+                <div class="tab-pane {{$tab == 'all' ? 'active' : ''}}" id="all-orders" role="tabpanel"
+                        aria-labelledby="all-orders-tab">
+                    <livewire:orders-table order-type="all" :show-customer-column='true' title="All Orders"/>
+                </div>
+
+                <div class="tab-pane {{$tab == 'invoice' ? 'active' : ''}}" id="invoice-orders" role="tabpanel"
+                        aria-labelledby="invoice-orders-tab">
+                    <livewire:orders-table order-type="invoiced" :show-customer-column='true' title="Invoiced Orders"/>
+                </div>
+
+            </div>
+        </div>
+    </div>
+@endsection
diff --git a/resources/views/partials/customers/edit-modal.blade.php b/resources/views/partials/customers/edit-modal.blade.php
deleted file mode 100644
index 60a9a00..0000000
--- a/resources/views/partials/customers/edit-modal.blade.php
+++ /dev/null
@@ -1,110 +0,0 @@
-<div class="modal modal-lg fade" id="editCustomerModal" tabindex="-1" aria-labelledby="editCustomerModalLabel"
-        aria-hidden="true">
-    <div class="modal-dialog">
-        <div class="modal-content">
-            <div class="modal-header">
-                <h1 class="modal-title fs-5" id="editCustomerModalLabel">Edit Customer</h1>
-                <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
-            </div>
-
-            <form action="{{route('customers.update', $customer)}}" method="post">
-                @csrf
-                @method('PATCH')
-
-                <div class="modal-body">
-
-                    <div class="row mb-3">
-                        <label for="company_name" class="col-md-4 col-form-label text-md-end">Company Name</label>
-
-                        <div class="col-md-6">
-                            <input id="company_name" type="text"
-                                    class="form-control @error('company_name') is-invalid @enderror"
-                                    name="company_name" value="{{$customer->company_name}}" required
-                                    autocomplete="company_name" autofocus>
-
-                            @error('company_name')
-                            <span class="invalid-feedback" role="alert">
-                                        <strong>{{ $message }}</strong>
-                                    </span>
-                            @enderror
-                        </div>
-                    </div>
-
-                    <div class="row mb-3">
-                        <label for="internal_name" class="col-md-4 col-form-label text-md-end">Internal Name</label>
-
-                        <div class="col-md-6">
-                            <input id="internal_name" type="text"
-                                    class="form-control @error('internal_name') is-invalid @enderror"
-                                    name="internal_name" value="{{ $customer->internal_name }}" required
-                                    autocomplete="internal_name"
-                            >
-
-                            @error('internal_name')
-                            <span class="invalid-feedback" role="alert">
-                                        <strong>{{ $message }}</strong>
-                                    </span>
-                            @enderror
-                        </div>
-                    </div>
-
-                    <div class="row mb-3">
-                        <label for="shipping_address" class="col-md-4 col-form-label text-md-end">
-                            Shipping Address
-                        </label>
-
-                        <div class="col-md-6">
-                            <input id="shipping_address" type="text"
-                                    class="form-control @error('shipping_address') is-invalid @enderror"
-                                    name="shipping_address" value="{{ $customer->shipping_address }}" required
-                                    autocomplete="shipping_address">
-
-                            @error('shipping_address')
-                            <span class="invalid-feedback" role="alert">
-                                        <strong>{{ $message }}</strong>
-                                    </span>
-                            @enderror
-                        </div>
-                    </div>
-
-                    <div class="row mb-3">
-                        <label for="billing_address" class="col-md-4 col-form-label text-md-end">Billing Address</label>
-
-                        <div class="col-md-6">
-                            <input id="billing_address" type="text"
-                                    class="form-control @error('billing_address') is-invalid @enderror"
-                                    name="billing_address" value="{{ $customer->billing_address }}" required
-                                    autocomplete="billing_address" >
-
-                            @error('billing_address')
-                            <span class="invalid-feedback" role="alert">
-                                        <strong>{{ $message }}</strong>
-                                    </span>
-                            @enderror
-                        </div>
-                    </div>
-
-                    <div class="row mb-3">
-                        <label for="phone" class="col-md-4 col-form-label text-md-end">Phone number</label>
-
-                        <div class="col-md-6">
-                            <input id="phone" type="text" class="form-control @error('phone') is-invalid @enderror"
-                                    name="phone" value="{{ $customer->phone }}" required autocomplete="phone">
-
-                            @error('phone')
-                            <span class="invalid-feedback" role="alert">
-                                        <strong>{{ $message }}</strong>
-                                    </span>
-                            @enderror
-                        </div>
-                    </div>
-                </div>
-
-                <div class="modal-footer">
-                    <button type="button" class="btn btn-outline-secondary" data-bs-dismiss="modal">Cancel</button>
-                    <button type="submit" class="btn btn-primary">Edit customer</button>
-                </div>
-            </form>
-        </div>
-    </div>
-</div>
diff --git a/resources/views/partials/customers/create-modal.blade.php b/resources/views/partials/customers/index/create-modal.blade.php
similarity index 100%
rename from resources/views/partials/customers/create-modal.blade.php
rename to resources/views/partials/customers/index/create-modal.blade.php
diff --git a/resources/views/partials/customers/delete-all-modal.blade.php b/resources/views/partials/customers/index/delete-all-modal.blade.php
similarity index 100%
rename from resources/views/partials/customers/delete-all-modal.blade.php
rename to resources/views/partials/customers/index/delete-all-modal.blade.php
diff --git a/resources/views/partials/customers/show-overview.blade.php b/resources/views/partials/customers/show-overview.blade.php
deleted file mode 100644
index ab9d2aa..0000000
--- a/resources/views/partials/customers/show-overview.blade.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<div class="tab-pane {{$tab == 'details' ? 'active' : ''}}" id="details" role="tabpanel"
-        aria-labelledby="details-tab">
-
-    <div class="row justify-content-center mb-3">
-        <div class="col-9">
-            <div class="d-flex flex-row gap-2">
-                <div class="d-inline-flex">
-                    <h4 class="my-auto">Active orders</h4>
-                </div>
-                <div class="mx-auto"></div>
-                <button class="btn btn-sm btn-primary" title="Create new shipping entry..."
-                        data-bs-toggle="modal" data-bs-target="#createShippingEntryModal">
-                    <x-bi-plus-circle-fill/>
-                    Create entry
-                </button>
-                <div class="vr"></div>
-
-                <div class="d-inline-flex gap-2">
-                    <input type="text" class="form-control form-control-sm" placeholder="Search..."
-                            name="" id="searchText">
-                    <button class="btn btn-sm btn-outline-primary" id="searchButton">
-                        <x-bi-search/>
-                    </button>
-                </div>
-            </div>
-        </div>
-    </div>
-    <div class="row justify-content-center">
-        <div class="col-9">
-            <table class="table table-striped table-sm table-hover">
-                <thead>
-                <tr class="border-bottom border-black">
-                    <th scope="col">Internal PO</th>
-                    <th scope="col">Customer PO</th>
-                    <th scope="col">Order Date</th>
-                    <th scope="col">Due Date</th>
-                    <th scope="col">Status</th>
-                    <th scope="col">Rush</th>
-                    <th scope="col">View</th>
-                </tr>
-                </thead>
-                <tbody>
-                @foreach($active_orders as $order)
-                    <tr>
-                        <td class="fw-bold"><code>{{$order->internal_po}}</code></td>
-                        <td class=""><code>{{$order->customer_po}}</code></td>
-                        <td class="text-nowrap">{{$order->order_date}}</td>
-                        <td class="text-nowrap">{{$order->due_date}}</td>
-                        <td>{{$order->status->value}}</td>
-                        <td>
-                            @if($order->rush)
-                                <x-bi-check-lg class="text-danger"></x-bi-check-lg>
-                            @endif
-                        </td>
-                        <td class="align-top">
-                            <a class="btn btn-sm btn-outline-secondary"
-                                    href="">
-                                <x-bi-arrow-right/>
-                            </a>
-                        </td>
-                    </tr>
-                @endforeach
-                </tbody>
-            </table>
-        </div>
-    </div>
-
-    <div class="row">
-        <div class="col"></div>
-        <div class="col-4">
-            {{$active_orders->links()}}
-        </div>
-        <div class="col"></div>
-    </div>
-
-</div>
diff --git a/resources/views/partials/customers/show-contacts.blade.php b/resources/views/partials/customers/show/contacts-tab.blade.php
similarity index 83%
rename from resources/views/partials/customers/show-contacts.blade.php
rename to resources/views/partials/customers/show/contacts-tab.blade.php
index 60e0ea9..14ab6bb 100644
--- a/resources/views/partials/customers/show-contacts.blade.php
+++ b/resources/views/partials/customers/show/contacts-tab.blade.php
@@ -36,10 +36,10 @@
 
                     @foreach ($contacts as $contact)
                         <tr>
-                            <td>{{ $contact->first_name . ' ' . $contact->last_name }}</td>
-                            <td><a href="mailto:{{$contact->email}}">{{ $contact->email }}</a></td>
-                            <td>{{ $contact->phone }}</td>
-                            <td>{{ $contact->notes }}</td>
+                            <td class="text-nowrap">{{ $contact->first_name . ' ' . $contact->last_name }}</td>
+                            <td class="text-nowrap"><a href="mailto:{{$contact->email}}">{{ $contact->email }}</a></td>
+                            <td class="text-nowrap">{{ $contact->phone }}</td>
+                            <td class="w-100">{{ $contact->notes }}</td>
                         </tr>
                     @endforeach
                     </tbody>
diff --git a/resources/views/partials/customers/show/overview-tab.blade.php b/resources/views/partials/customers/show/overview-tab.blade.php
new file mode 100644
index 0000000..43f14bd
--- /dev/null
+++ b/resources/views/partials/customers/show/overview-tab.blade.php
@@ -0,0 +1,6 @@
+<div class="tab-pane {{$tab == 'details' ? 'active' : ''}}" id="details" role="tabpanel"
+        aria-labelledby="details-tab">
+
+    <livewire:orders-table :show-customer-column="false" order-type="active" title="Active orders"
+            :customer_id="$customer->id"/>
+</div>
diff --git a/resources/views/partials/customers/show-packing-slips.blade.php b/resources/views/partials/customers/show/packing-slips-tab.blade.php
similarity index 86%
rename from resources/views/partials/customers/show-packing-slips.blade.php
rename to resources/views/partials/customers/show/packing-slips-tab.blade.php
index 396876c..4ea63a4 100644
--- a/resources/views/partials/customers/show-packing-slips.blade.php
+++ b/resources/views/partials/customers/show/packing-slips-tab.blade.php
@@ -31,7 +31,7 @@
     </div>
 
     <div class="row justify-content-center mb-3">
-        <div class="col-9">
+        <div class="col-7">
             <table class="table table-striped table-sm table-hover">
                 <thead>
                 <tr class="border-bottom border-black">
@@ -44,10 +44,10 @@
                 <tbody>
                 @foreach($packingSlips as $packingSlip)
                     <tr>
-                        <td>{{$packingSlip->date_received}}</td>
-                        <td><a href="">{{$packingSlip->order_id}}</a></td>
-                        <td>{{$packingSlip->amount}}</td>
-                        <td>{{$packingSlip->contents}}</td>
+                        <td class="text-nowrap">{{$packingSlip->date_received}}</td>
+                        <td class="text-nowrap"><a href="">{{$packingSlip->order_id}}</a></td>
+                        <td class="text-nowrap">{{$packingSlip->amount}}</td>
+                        <td class="w-50">{{$packingSlip->contents}}</td>
                     </tr>
                 @endforeach
                 </tbody>
diff --git a/resources/views/partials/customers/show-shipping-info.blade.php b/resources/views/partials/customers/show/shipping-info-tab.blade.php
similarity index 100%
rename from resources/views/partials/customers/show-shipping-info.blade.php
rename to resources/views/partials/customers/show/shipping-info-tab.blade.php
diff --git a/resources/views/partials/management/index/customers.blade.php b/resources/views/partials/management/index/customers.blade.php
new file mode 100644
index 0000000..bfb7b13
--- /dev/null
+++ b/resources/views/partials/management/index/customers.blade.php
@@ -0,0 +1,76 @@
+<div class="tab-pane {{$tab == 'customers' ? 'active' : ''}}" id="customers" role="tabpanel"
+        aria-labelledby="customers-tab">
+    <div class="row justify-content-center mb-3">
+        <div class="col">
+            <div class="d-flex flex-row gap-2">
+                <button class="btn btn-primary" title="Create new customer..."
+                        data-bs-toggle="modal"
+                        data-bs-target="#createCustomerModal">
+                    <x-bi-person-plus-fill/>
+                    Create entry
+                </button>
+
+                <div class="vr"></div>
+
+                <div class="d-inline-flex gap-2">
+                    <input type="text" class="form-control" placeholder="Search..."
+                            name="" id="">
+                    <button class="btn btn-outline-primary">
+                        <x-bi-search/>
+                    </button>
+                </div>
+
+                <div class="mx-auto"></div>
+
+                <button class="btn btn-danger" title="Delete customer..."
+                        data-bs-toggle="modal"
+                        data-bs-target="#deleteCustomerModal">
+                    <x-bi-trash-fill/>
+                    Delete entry
+                </button>
+            </div>
+        </div>
+    </div>
+
+    <div class="row mb-3">
+        <div class="col">
+            @if(sizeof($customers) !== 0)
+                <table class="table table-striped table-hover">
+                    <thead>
+                    <tr class="border-bottom border-black">
+                        <th scope="col">Company Name</th>
+                        <th scope="col">Internal Name</th>
+                        <th scope="col">Shipping Address</th>
+                        <th scope="col">Billing Address</th>
+                        <th scope="col">Phone</th>
+                        <th scope="col">View</th>
+                    </tr>
+                    </thead>
+
+                    <tbody>
+
+                    @foreach($customers as $customer)
+                        <tr>
+                            <td> {{$customer->company_name}} </td>
+                            <td><code>{{$customer->internal_name}}</code></td>
+                            <td> {{$customer->shipping_address}} </td>
+                            <td> {{$customer->billing_address}} </td>
+                            <td class="text-nowrap"> {{$customer->phone}} </td>
+                            <td class="align-top">
+                                <a class="btn btn-sm btn-outline-secondary"
+                                        href="{{route('customers.show', [$customer->id, 'tab'=>'details'])}}">
+                                    <x-bi-arrow-right/>
+                                </a>
+                            </td>
+                        </tr>
+                    @endforeach
+
+                    </tbody>
+                </table>
+
+            @else()
+                No customer data.
+            @endif
+        </div>
+    </div>
+</div>
\ No newline at end of file
diff --git a/resources/views/partials/management/index/management-tabs.blade.php b/resources/views/partials/management/index/management-tabs.blade.php
new file mode 100644
index 0000000..82d87a7
--- /dev/null
+++ b/resources/views/partials/management/index/management-tabs.blade.php
@@ -0,0 +1,43 @@
+<div class="container-fluid bg-light pt-3">
+
+    <!-- Customer company name row -->
+    <div class="row justify-content-center pb-2">
+        <div class="col-3"></div>
+        <div class="col">
+        </div>
+    </div>
+
+    <!-- Tabs row -->
+    <div class="row justify-content-center mb-3">
+        <div class="col-3 border-bottom"></div>
+        <div class="col-6 p-0">
+            <ul class="nav nav-fill nav-tabs" id="management-tabs" role="tablist">
+                <li class="nav-item" role="presentation">
+                    <a class="nav-link link-dark {{$tab == 'customers' ? 'active' : ''}}" id="customers-tab"
+                            href="{{route('management.index', 'customers')}}" type="button" role="tab"
+                            aria-controls="customers" aria-selected="{{$tab == 'customers' ? 'true' : 'false'}}">
+                        <x-bi-list-ul/>
+                        Customers
+                    </a>
+                </li>
+                <li class="nav-item" role="presentation">
+                    <a class="nav-link link-dark {{$tab == 'packing' ? 'active' : ''}}" id="packing-tab"
+                            href="{{route('management.index', 'packing')}}" type="button" role="tab"
+                            aria-controls="packing" aria-selected="{{$tab == 'packing' ? 'true' : 'false'}}">
+                        <x-bi-card-text/>
+                        Packing Slips
+                    </a>
+                </li>
+                <li class="nav-item" role="presentation">
+                    <a class="nav-link link-dark {{$tab == 'files' ? 'active' : ''}}" id="files-tab"
+                            href="{{route('management.index', 'files')}}" type="button" role="tab"
+                            aria-controls="files" aria-selected="{{$tab == 'files' ? 'true' : 'false'}}">
+                        <x-bi-file-earmark/>
+                        Service Files
+                    </a>
+                </li>
+            </ul>
+        </div>
+        <div class="col border-bottom"></div>
+    </div>
+</div>
diff --git a/resources/views/partials/management/index/packing-slips.blade.php b/resources/views/partials/management/index/packing-slips.blade.php
new file mode 100644
index 0000000..a249f32
--- /dev/null
+++ b/resources/views/partials/management/index/packing-slips.blade.php
@@ -0,0 +1,5 @@
+<div class="tab-pane {{$tab == 'packing' ? 'active' : ''}}" id="packing" role="tabpanel"
+        aria-labelledby="packing-tab">
+
+    packing slips
+</div>
\ No newline at end of file
diff --git a/resources/views/partials/management/index/service-files.blade.php b/resources/views/partials/management/index/service-files.blade.php
new file mode 100644
index 0000000..c5da197
--- /dev/null
+++ b/resources/views/partials/management/index/service-files.blade.php
@@ -0,0 +1,5 @@
+<div class="tab-pane {{$tab == 'files' ? 'active' : ''}}" id="files" role="tabpanel"
+        aria-labelledby="files-tab">
+
+    Files
+</div>
diff --git a/resources/views/vendor/pagination/bootstrap-4.blade.php b/resources/views/vendor/pagination/bootstrap-4.blade.php
deleted file mode 100644
index 63c6f56..0000000
--- a/resources/views/vendor/pagination/bootstrap-4.blade.php
+++ /dev/null
@@ -1,46 +0,0 @@
-@if ($paginator->hasPages())
-    <nav>
-        <ul class="pagination">
-            {{-- Previous Page Link --}}
-            @if ($paginator->onFirstPage())
-                <li class="page-item disabled" aria-disabled="true" aria-label="@lang('pagination.previous')">
-                    <span class="page-link" aria-hidden="true">&lsaquo;</span>
-                </li>
-            @else
-                <li class="page-item">
-                    <a class="page-link" href="{{ $paginator->previousPageUrl() }}" rel="prev" aria-label="@lang('pagination.previous')">&lsaquo;</a>
-                </li>
-            @endif
-
-            {{-- Pagination Elements --}}
-            @foreach ($elements as $element)
-                {{-- "Three Dots" Separator --}}
-                @if (is_string($element))
-                    <li class="page-item disabled" aria-disabled="true"><span class="page-link">{{ $element }}</span></li>
-                @endif
-
-                {{-- Array Of Links --}}
-                @if (is_array($element))
-                    @foreach ($element as $page => $url)
-                        @if ($page == $paginator->currentPage())
-                            <li class="page-item active" aria-current="page"><span class="page-link">{{ $page }}</span></li>
-                        @else
-                            <li class="page-item"><a class="page-link" href="{{ $url }}">{{ $page }}</a></li>
-                        @endif
-                    @endforeach
-                @endif
-            @endforeach
-
-            {{-- Next Page Link --}}
-            @if ($paginator->hasMorePages())
-                <li class="page-item">
-                    <a class="page-link" href="{{ $paginator->nextPageUrl() }}" rel="next" aria-label="@lang('pagination.next')">&rsaquo;</a>
-                </li>
-            @else
-                <li class="page-item disabled" aria-disabled="true" aria-label="@lang('pagination.next')">
-                    <span class="page-link" aria-hidden="true">&rsaquo;</span>
-                </li>
-            @endif
-        </ul>
-    </nav>
-@endif
diff --git a/resources/views/vendor/pagination/bootstrap-5.blade.php b/resources/views/vendor/pagination/bootstrap-5.blade.php
deleted file mode 100644
index a1795a4..0000000
--- a/resources/views/vendor/pagination/bootstrap-5.blade.php
+++ /dev/null
@@ -1,88 +0,0 @@
-@if ($paginator->hasPages())
-    <nav class="d-flex justify-items-center justify-content-between">
-        <div class="d-flex justify-content-between flex-fill d-sm-none">
-            <ul class="pagination">
-                {{-- Previous Page Link --}}
-                @if ($paginator->onFirstPage())
-                    <li class="page-item disabled" aria-disabled="true">
-                        <span class="page-link">@lang('pagination.previous')</span>
-                    </li>
-                @else
-                    <li class="page-item">
-                        <a class="page-link" href="{{ $paginator->previousPageUrl() }}" rel="prev">@lang('pagination.previous')</a>
-                    </li>
-                @endif
-
-                {{-- Next Page Link --}}
-                @if ($paginator->hasMorePages())
-                    <li class="page-item">
-                        <a class="page-link" href="{{ $paginator->nextPageUrl() }}" rel="next">@lang('pagination.next')</a>
-                    </li>
-                @else
-                    <li class="page-item disabled" aria-disabled="true">
-                        <span class="page-link">@lang('pagination.next')</span>
-                    </li>
-                @endif
-            </ul>
-        </div>
-
-        <div class="d-none flex-sm-fill d-sm-flex align-items-sm-center justify-content-sm-between">
-            <div>
-                <p class="small text-muted">
-                    {!! __('Showing') !!}
-                    <span class="fw-semibold">{{ $paginator->firstItem() }}</span>
-                    {!! __('to') !!}
-                    <span class="fw-semibold">{{ $paginator->lastItem() }}</span>
-                    {!! __('of') !!}
-                    <span class="fw-semibold">{{ $paginator->total() }}</span>
-                    {!! __('results') !!}
-                </p>
-            </div>
-
-            <div>
-                <ul class="pagination">
-                    {{-- Previous Page Link --}}
-                    @if ($paginator->onFirstPage())
-                        <li class="page-item disabled" aria-disabled="true" aria-label="@lang('pagination.previous')">
-                            <span class="page-link" aria-hidden="true">&lsaquo;</span>
-                        </li>
-                    @else
-                        <li class="page-item">
-                            <a class="page-link" href="{{ $paginator->previousPageUrl() }}" rel="prev" aria-label="@lang('pagination.previous')">&lsaquo;</a>
-                        </li>
-                    @endif
-
-                    {{-- Pagination Elements --}}
-                    @foreach ($elements as $element)
-                        {{-- "Three Dots" Separator --}}
-                        @if (is_string($element))
-                            <li class="page-item disabled" aria-disabled="true"><span class="page-link">{{ $element }}</span></li>
-                        @endif
-
-                        {{-- Array Of Links --}}
-                        @if (is_array($element))
-                            @foreach ($element as $page => $url)
-                                @if ($page == $paginator->currentPage())
-                                    <li class="page-item active" aria-current="page"><span class="page-link">{{ $page }}</span></li>
-                                @else
-                                    <li class="page-item"><a class="page-link" href="{{ $url }}">{{ $page }}</a></li>
-                                @endif
-                            @endforeach
-                        @endif
-                    @endforeach
-
-                    {{-- Next Page Link --}}
-                    @if ($paginator->hasMorePages())
-                        <li class="page-item">
-                            <a class="page-link" href="{{ $paginator->nextPageUrl() }}" rel="next" aria-label="@lang('pagination.next')">&rsaquo;</a>
-                        </li>
-                    @else
-                        <li class="page-item disabled" aria-disabled="true" aria-label="@lang('pagination.next')">
-                            <span class="page-link" aria-hidden="true">&rsaquo;</span>
-                        </li>
-                    @endif
-                </ul>
-            </div>
-        </div>
-    </nav>
-@endif
diff --git a/resources/views/vendor/pagination/default.blade.php b/resources/views/vendor/pagination/default.blade.php
deleted file mode 100644
index 0db70b5..0000000
--- a/resources/views/vendor/pagination/default.blade.php
+++ /dev/null
@@ -1,46 +0,0 @@
-@if ($paginator->hasPages())
-    <nav>
-        <ul class="pagination">
-            {{-- Previous Page Link --}}
-            @if ($paginator->onFirstPage())
-                <li class="disabled" aria-disabled="true" aria-label="@lang('pagination.previous')">
-                    <span aria-hidden="true">&lsaquo;</span>
-                </li>
-            @else
-                <li>
-                    <a href="{{ $paginator->previousPageUrl() }}" rel="prev" aria-label="@lang('pagination.previous')">&lsaquo;</a>
-                </li>
-            @endif
-
-            {{-- Pagination Elements --}}
-            @foreach ($elements as $element)
-                {{-- "Three Dots" Separator --}}
-                @if (is_string($element))
-                    <li class="disabled" aria-disabled="true"><span>{{ $element }}</span></li>
-                @endif
-
-                {{-- Array Of Links --}}
-                @if (is_array($element))
-                    @foreach ($element as $page => $url)
-                        @if ($page == $paginator->currentPage())
-                            <li class="active" aria-current="page"><span>{{ $page }}</span></li>
-                        @else
-                            <li><a href="{{ $url }}">{{ $page }}</a></li>
-                        @endif
-                    @endforeach
-                @endif
-            @endforeach
-
-            {{-- Next Page Link --}}
-            @if ($paginator->hasMorePages())
-                <li>
-                    <a href="{{ $paginator->nextPageUrl() }}" rel="next" aria-label="@lang('pagination.next')">&rsaquo;</a>
-                </li>
-            @else
-                <li class="disabled" aria-disabled="true" aria-label="@lang('pagination.next')">
-                    <span aria-hidden="true">&rsaquo;</span>
-                </li>
-            @endif
-        </ul>
-    </nav>
-@endif
diff --git a/resources/views/vendor/pagination/semantic-ui.blade.php b/resources/views/vendor/pagination/semantic-ui.blade.php
deleted file mode 100644
index ef0dbb1..0000000
--- a/resources/views/vendor/pagination/semantic-ui.blade.php
+++ /dev/null
@@ -1,36 +0,0 @@
-@if ($paginator->hasPages())
-    <div class="ui pagination menu" role="navigation">
-        {{-- Previous Page Link --}}
-        @if ($paginator->onFirstPage())
-            <a class="icon item disabled" aria-disabled="true" aria-label="@lang('pagination.previous')"> <i class="left chevron icon"></i> </a>
-        @else
-            <a class="icon item" href="{{ $paginator->previousPageUrl() }}" rel="prev" aria-label="@lang('pagination.previous')"> <i class="left chevron icon"></i> </a>
-        @endif
-
-        {{-- Pagination Elements --}}
-        @foreach ($elements as $element)
-            {{-- "Three Dots" Separator --}}
-            @if (is_string($element))
-                <a class="icon item disabled" aria-disabled="true">{{ $element }}</a>
-            @endif
-
-            {{-- Array Of Links --}}
-            @if (is_array($element))
-                @foreach ($element as $page => $url)
-                    @if ($page == $paginator->currentPage())
-                        <a class="item active" href="{{ $url }}" aria-current="page">{{ $page }}</a>
-                    @else
-                        <a class="item" href="{{ $url }}">{{ $page }}</a>
-                    @endif
-                @endforeach
-            @endif
-        @endforeach
-
-        {{-- Next Page Link --}}
-        @if ($paginator->hasMorePages())
-            <a class="icon item" href="{{ $paginator->nextPageUrl() }}" rel="next" aria-label="@lang('pagination.next')"> <i class="right chevron icon"></i> </a>
-        @else
-            <a class="icon item disabled" aria-disabled="true" aria-label="@lang('pagination.next')"> <i class="right chevron icon"></i> </a>
-        @endif
-    </div>
-@endif
diff --git a/resources/views/vendor/pagination/simple-bootstrap-4.blade.php b/resources/views/vendor/pagination/simple-bootstrap-4.blade.php
deleted file mode 100644
index 4bb4917..0000000
--- a/resources/views/vendor/pagination/simple-bootstrap-4.blade.php
+++ /dev/null
@@ -1,27 +0,0 @@
-@if ($paginator->hasPages())
-    <nav>
-        <ul class="pagination">
-            {{-- Previous Page Link --}}
-            @if ($paginator->onFirstPage())
-                <li class="page-item disabled" aria-disabled="true">
-                    <span class="page-link">@lang('pagination.previous')</span>
-                </li>
-            @else
-                <li class="page-item">
-                    <a class="page-link" href="{{ $paginator->previousPageUrl() }}" rel="prev">@lang('pagination.previous')</a>
-                </li>
-            @endif
-
-            {{-- Next Page Link --}}
-            @if ($paginator->hasMorePages())
-                <li class="page-item">
-                    <a class="page-link" href="{{ $paginator->nextPageUrl() }}" rel="next">@lang('pagination.next')</a>
-                </li>
-            @else
-                <li class="page-item disabled" aria-disabled="true">
-                    <span class="page-link">@lang('pagination.next')</span>
-                </li>
-            @endif
-        </ul>
-    </nav>
-@endif
diff --git a/resources/views/vendor/pagination/simple-bootstrap-5.blade.php b/resources/views/vendor/pagination/simple-bootstrap-5.blade.php
deleted file mode 100644
index a89005e..0000000
--- a/resources/views/vendor/pagination/simple-bootstrap-5.blade.php
+++ /dev/null
@@ -1,29 +0,0 @@
-@if ($paginator->hasPages())
-    <nav role="navigation" aria-label="Pagination Navigation">
-        <ul class="pagination">
-            {{-- Previous Page Link --}}
-            @if ($paginator->onFirstPage())
-                <li class="page-item disabled" aria-disabled="true">
-                    <span class="page-link">{!! __('pagination.previous') !!}</span>
-                </li>
-            @else
-                <li class="page-item">
-                    <a class="page-link" href="{{ $paginator->previousPageUrl() }}" rel="prev">
-                        {!! __('pagination.previous') !!}
-                    </a>
-                </li>
-            @endif
-
-            {{-- Next Page Link --}}
-            @if ($paginator->hasMorePages())
-                <li class="page-item">
-                    <a class="page-link" href="{{ $paginator->nextPageUrl() }}" rel="next">{!! __('pagination.next') !!}</a>
-                </li>
-            @else
-                <li class="page-item disabled" aria-disabled="true">
-                    <span class="page-link">{!! __('pagination.next') !!}</span>
-                </li>
-            @endif
-        </ul>
-    </nav>
-@endif
diff --git a/resources/views/vendor/pagination/simple-default.blade.php b/resources/views/vendor/pagination/simple-default.blade.php
deleted file mode 100644
index 36bdbc1..0000000
--- a/resources/views/vendor/pagination/simple-default.blade.php
+++ /dev/null
@@ -1,19 +0,0 @@
-@if ($paginator->hasPages())
-    <nav>
-        <ul class="pagination">
-            {{-- Previous Page Link --}}
-            @if ($paginator->onFirstPage())
-                <li class="disabled" aria-disabled="true"><span>@lang('pagination.previous')</span></li>
-            @else
-                <li><a href="{{ $paginator->previousPageUrl() }}" rel="prev">@lang('pagination.previous')</a></li>
-            @endif
-
-            {{-- Next Page Link --}}
-            @if ($paginator->hasMorePages())
-                <li><a href="{{ $paginator->nextPageUrl() }}" rel="next">@lang('pagination.next')</a></li>
-            @else
-                <li class="disabled" aria-disabled="true"><span>@lang('pagination.next')</span></li>
-            @endif
-        </ul>
-    </nav>
-@endif
diff --git a/resources/views/vendor/pagination/simple-tailwind.blade.php b/resources/views/vendor/pagination/simple-tailwind.blade.php
deleted file mode 100644
index ea02400..0000000
--- a/resources/views/vendor/pagination/simple-tailwind.blade.php
+++ /dev/null
@@ -1,25 +0,0 @@
-@if ($paginator->hasPages())
-    <nav role="navigation" aria-label="Pagination Navigation" class="flex justify-between">
-        {{-- Previous Page Link --}}
-        @if ($paginator->onFirstPage())
-            <span class="relative inline-flex items-center px-4 py-2 text-sm font-medium text-gray-500 bg-white border border-gray-300 cursor-default leading-5 rounded-md dark:text-gray-600 dark:bg-gray-800 dark:border-gray-600">
-                {!! __('pagination.previous') !!}
-            </span>
-        @else
-            <a href="{{ $paginator->previousPageUrl() }}" rel="prev" class="relative inline-flex items-center px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 leading-5 rounded-md hover:text-gray-500 focus:outline-none focus:ring ring-gray-300 focus:border-blue-300 active:bg-gray-100 active:text-gray-700 transition ease-in-out duration-150 dark:bg-gray-800 dark:border-gray-600 dark:text-gray-300 dark:focus:border-blue-700 dark:active:bg-gray-700 dark:active:text-gray-300">
-                {!! __('pagination.previous') !!}
-            </a>
-        @endif
-
-        {{-- Next Page Link --}}
-        @if ($paginator->hasMorePages())
-            <a href="{{ $paginator->nextPageUrl() }}" rel="next" class="relative inline-flex items-center px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 leading-5 rounded-md hover:text-gray-500 focus:outline-none focus:ring ring-gray-300 focus:border-blue-300 active:bg-gray-100 active:text-gray-700 transition ease-in-out duration-150 dark:bg-gray-800 dark:border-gray-600 dark:text-gray-300 dark:focus:border-blue-700 dark:active:bg-gray-700 dark:active:text-gray-300">
-                {!! __('pagination.next') !!}
-            </a>
-        @else
-            <span class="relative inline-flex items-center px-4 py-2 text-sm font-medium text-gray-500 bg-white border border-gray-300 cursor-default leading-5 rounded-md dark:text-gray-600 dark:bg-gray-800 dark:border-gray-600">
-                {!! __('pagination.next') !!}
-            </span>
-        @endif
-    </nav>
-@endif
diff --git a/resources/views/vendor/pagination/tailwind.blade.php b/resources/views/vendor/pagination/tailwind.blade.php
deleted file mode 100644
index aee2ad2..0000000
--- a/resources/views/vendor/pagination/tailwind.blade.php
+++ /dev/null
@@ -1,106 +0,0 @@
-@if ($paginator->hasPages())
-    <nav role="navigation" aria-label="{{ __('Pagination Navigation') }}" class="flex items-center justify-between">
-        <div class="flex justify-between flex-1 sm:hidden">
-            @if ($paginator->onFirstPage())
-                <span class="relative inline-flex items-center px-4 py-2 text-sm font-medium text-gray-500 bg-white border border-gray-300 cursor-default leading-5 rounded-md dark:text-gray-600 dark:bg-gray-800 dark:border-gray-600">
-                    {!! __('pagination.previous') !!}
-                </span>
-            @else
-                <a href="{{ $paginator->previousPageUrl() }}" class="relative inline-flex items-center px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 leading-5 rounded-md hover:text-gray-500 focus:outline-none focus:ring ring-gray-300 focus:border-blue-300 active:bg-gray-100 active:text-gray-700 transition ease-in-out duration-150 dark:bg-gray-800 dark:border-gray-600 dark:text-gray-300 dark:focus:border-blue-700 dark:active:bg-gray-700 dark:active:text-gray-300">
-                    {!! __('pagination.previous') !!}
-                </a>
-            @endif
-
-            @if ($paginator->hasMorePages())
-                <a href="{{ $paginator->nextPageUrl() }}" class="relative inline-flex items-center px-4 py-2 ml-3 text-sm font-medium text-gray-700 bg-white border border-gray-300 leading-5 rounded-md hover:text-gray-500 focus:outline-none focus:ring ring-gray-300 focus:border-blue-300 active:bg-gray-100 active:text-gray-700 transition ease-in-out duration-150 dark:bg-gray-800 dark:border-gray-600 dark:text-gray-300 dark:focus:border-blue-700 dark:active:bg-gray-700 dark:active:text-gray-300">
-                    {!! __('pagination.next') !!}
-                </a>
-            @else
-                <span class="relative inline-flex items-center px-4 py-2 ml-3 text-sm font-medium text-gray-500 bg-white border border-gray-300 cursor-default leading-5 rounded-md dark:text-gray-600 dark:bg-gray-800 dark:border-gray-600">
-                    {!! __('pagination.next') !!}
-                </span>
-            @endif
-        </div>
-
-        <div class="hidden sm:flex-1 sm:flex sm:items-center sm:justify-between">
-            <div>
-                <p class="text-sm text-gray-700 leading-5 dark:text-gray-400">
-                    {!! __('Showing') !!}
-                    @if ($paginator->firstItem())
-                        <span class="font-medium">{{ $paginator->firstItem() }}</span>
-                        {!! __('to') !!}
-                        <span class="font-medium">{{ $paginator->lastItem() }}</span>
-                    @else
-                        {{ $paginator->count() }}
-                    @endif
-                    {!! __('of') !!}
-                    <span class="font-medium">{{ $paginator->total() }}</span>
-                    {!! __('results') !!}
-                </p>
-            </div>
-
-            <div>
-                <span class="relative z-0 inline-flex rtl:flex-row-reverse shadow-sm rounded-md">
-                    {{-- Previous Page Link --}}
-                    @if ($paginator->onFirstPage())
-                        <span aria-disabled="true" aria-label="{{ __('pagination.previous') }}">
-                            <span class="relative inline-flex items-center px-2 py-2 text-sm font-medium text-gray-500 bg-white border border-gray-300 cursor-default rounded-l-md leading-5 dark:bg-gray-800 dark:border-gray-600" aria-hidden="true">
-                                <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20">
-                                    <path fill-rule="evenodd" d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z" clip-rule="evenodd" />
-                                </svg>
-                            </span>
-                        </span>
-                    @else
-                        <a href="{{ $paginator->previousPageUrl() }}" rel="prev" class="relative inline-flex items-center px-2 py-2 text-sm font-medium text-gray-500 bg-white border border-gray-300 rounded-l-md leading-5 hover:text-gray-400 focus:z-10 focus:outline-none focus:ring ring-gray-300 focus:border-blue-300 active:bg-gray-100 active:text-gray-500 transition ease-in-out duration-150 dark:bg-gray-800 dark:border-gray-600 dark:active:bg-gray-700 dark:focus:border-blue-800" aria-label="{{ __('pagination.previous') }}">
-                            <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20">
-                                <path fill-rule="evenodd" d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z" clip-rule="evenodd" />
-                            </svg>
-                        </a>
-                    @endif
-
-                    {{-- Pagination Elements --}}
-                    @foreach ($elements as $element)
-                        {{-- "Three Dots" Separator --}}
-                        @if (is_string($element))
-                            <span aria-disabled="true">
-                                <span class="relative inline-flex items-center px-4 py-2 -ml-px text-sm font-medium text-gray-700 bg-white border border-gray-300 cursor-default leading-5 dark:bg-gray-800 dark:border-gray-600">{{ $element }}</span>
-                            </span>
-                        @endif
-
-                        {{-- Array Of Links --}}
-                        @if (is_array($element))
-                            @foreach ($element as $page => $url)
-                                @if ($page == $paginator->currentPage())
-                                    <span aria-current="page">
-                                        <span class="relative inline-flex items-center px-4 py-2 -ml-px text-sm font-medium text-gray-500 bg-white border border-gray-300 cursor-default leading-5 dark:bg-gray-800 dark:border-gray-600">{{ $page }}</span>
-                                    </span>
-                                @else
-                                    <a href="{{ $url }}" class="relative inline-flex items-center px-4 py-2 -ml-px text-sm font-medium text-gray-700 bg-white border border-gray-300 leading-5 hover:text-gray-500 focus:z-10 focus:outline-none focus:ring ring-gray-300 focus:border-blue-300 active:bg-gray-100 active:text-gray-700 transition ease-in-out duration-150 dark:bg-gray-800 dark:border-gray-600 dark:text-gray-400 dark:hover:text-gray-300 dark:active:bg-gray-700 dark:focus:border-blue-800" aria-label="{{ __('Go to page :page', ['page' => $page]) }}">
-                                        {{ $page }}
-                                    </a>
-                                @endif
-                            @endforeach
-                        @endif
-                    @endforeach
-
-                    {{-- Next Page Link --}}
-                    @if ($paginator->hasMorePages())
-                        <a href="{{ $paginator->nextPageUrl() }}" rel="next" class="relative inline-flex items-center px-2 py-2 -ml-px text-sm font-medium text-gray-500 bg-white border border-gray-300 rounded-r-md leading-5 hover:text-gray-400 focus:z-10 focus:outline-none focus:ring ring-gray-300 focus:border-blue-300 active:bg-gray-100 active:text-gray-500 transition ease-in-out duration-150 dark:bg-gray-800 dark:border-gray-600 dark:active:bg-gray-700 dark:focus:border-blue-800" aria-label="{{ __('pagination.next') }}">
-                            <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20">
-                                <path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd" />
-                            </svg>
-                        </a>
-                    @else
-                        <span aria-disabled="true" aria-label="{{ __('pagination.next') }}">
-                            <span class="relative inline-flex items-center px-2 py-2 -ml-px text-sm font-medium text-gray-500 bg-white border border-gray-300 cursor-default rounded-r-md leading-5 dark:bg-gray-800 dark:border-gray-600" aria-hidden="true">
-                                <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20">
-                                    <path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd" />
-                                </svg>
-                            </span>
-                        </span>
-                    @endif
-                </span>
-            </div>
-        </div>
-    </nav>
-@endif
diff --git a/routes/web.php b/routes/web.php
index c3f8633..08cdcb7 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -2,26 +2,33 @@
 
 use App\Http\Controllers\ContactController;
 use App\Http\Controllers\CustomerController;
+use App\Http\Controllers\DashboardController;
+use App\Http\Controllers\ManagementController;
 use App\Http\Controllers\OrderController;
+use App\Http\Controllers\OrderProductController;
 use App\Http\Controllers\PackingSlipController;
 use App\Http\Controllers\ShippingEntryController;
-use App\Models\ShippingEntry;
 use Illuminate\Support\Facades\Route;
 
 Route::get('/', function () {
-    return view('welcome');
+    return redirect()->route('dashboard');
 });
 
 Auth::routes();
 
-Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');
+Route::get('/dashboard', [DashboardController::class, 'index'])->name('dashboard');
 
+Route::get('/management/{tab?}', [ManagementController::class, 'index'])->name('management.index');
+
+// Customers
 Route::resource('customers', CustomerController::class);
-
 Route::get('/customers/{customer}/{tab}', [CustomerController::class, 'show'])->name('customers.show');
-Route::get('/customers/', [CustomerController::class, 'index'])->name('customers.index');
 Route::post('/customers/request-destroy', [CustomerController::class, 'requestDestroy'])->name('customers.requestDestroy');
 
+// OrderProducts
+Route::resource('order-products', OrderProductController::class);
+
+// Contacts
 Route::resource('contacts', ContactController::class);
 Route::post('/contacts/request-destroy', [ContactController::class, 'requestDestroy'])->name('contacts.requestDestroy');
 
@@ -29,4 +36,4 @@
 
 Route::resource('shipping-entries', ShippingEntryController::class);
 
-Route::resource('orders', OrderController::class);
\ No newline at end of file
+Route::resource('orders', OrderController::class);