¡Perfecto\! Tus respuestas aclaran muchísimo el panorama. Al ser un sistema **Intranet (Local)** con un **Admin** y **Empleados** (visores/operadores), y con procesos manuales en el taller, podemos simplificar la arquitectura para lanzar un MVP (Producto Mínimo Viable) rápido y robusto, pero preparado para crecer.

Aquí tienes la **Guía Maestra de Desarrollo para Lauck Systems**.

-----

### 1\. Arquitectura de Base de Datos (El Cimiento)

Antes de escribir código, definamos las tablas. Laravel hace esto fácil con migraciones.

#### Tablas Principales:

1.  **`users`** (Ya viene en Laravel)

      * Agregamos campo: `role` (enum: 'admin', 'employee').
      * *Lógica:* El Admin crea, edita y borra. El Empleado solo ve y registra ventas/turnos (según definas).

2.  **`clients`** (Clientes)

      * `name`, `phone` (clave para WhatsApp), `email`, `address`.
      * *Nota:* Fundamental para agendar turnos y registrar garantías.

3.  **`products`** (Inventario Mixto)

      * `name`, `sku` (código único), `description`.
      * `price` (precio venta), `cost` (costo, solo visible para admin).
      * `stock_quantity` (entero).
      * `min_stock_alert` (entero, para la alerta que pediste).
      * `type` (enum: 'bike', 'accessory', 'service').
      * `serial_number` (nullable, solo para bicicletas).

4.  **`appointments`** (Turnos / Taller)

      * `client_id` (relación).
      * `scheduled_at` (datetime - fecha y hora del turno).
      * `bike_model` (texto libre, ej: "Venzo Loki 29").
      * `problem_description` (motivo de la consulta).
      * `status` (enum: 'pending', 'confirmed', 'in\_progress', 'ready', 'delivered').
      * `notes` (uso interno del mecánico).

5.  **`sales`** (Ventas Internas / Historial)

      * `user_id` (quién vendió).
      * `client_id` (opcional, si es consumidor final anónimo).
      * `total_amount`.
      * `payment_method` (efectivo, tarjeta, transferencia).
      * `created_at` (fecha de venta).

6.  **`sale_items`** (Detalle de venta)

      * `sale_id`, `product_id`, `quantity`, `unit_price`.

-----

### 2\. Estructura de Rutas y Controladores (Backend)

En Laravel, organizaremos esto por "Dominios".

  * **Autenticación:** (Ya lo tienes con Breeze/Jetstream).
  * **DashboardController:**
      * `index()`: Muestra las tarjetas, alertas de stock bajo (query simple `Product::whereColumn('stock', '<=', 'min_stock')->get()`) y turnos de hoy.
  * **ProductController:**
      * CRUD completo (Crear, Leer, Actualizar, Borrar).
      * Función extra `search()`: Para el buscador de precios de los empleados.
  * **ClientController:**
      * CRUD simple.
  * **AppointmentController (Gestión de Taller):**
      * `calendar()`: Vista de calendario o lista cronológica.
      * `statusUpdate()`: Para mover el turno de "Pendiente" a "Listo".
  * **SaleController:**
      * `create()`: Formulario para registrar una salida de mercadería.
      * `store()`: Resta el stock y guarda la venta.

-----

### 3\. Componentes de UI (Frontend - Blade + Tailwind)

Para mantener el estilo "Lauck" que ya definimos, necesitaremos crear estos componentes reutilizables (además de los que ya tienes):

1.  **`x-ui.status-badge`**:
      * Una etiqueta pequeña redondeada que cambia de color según el estado (Verde para 'Stock Alto', Rojo para 'Sin Stock' o 'Turno Atrasado', Amarillo para 'En Reparación').
2.  **`x-ui.table`**:
      * Una tabla estilizada con el modo oscuro, filas alternadas y cabeceras fijas. Vital para listas de precios y clientes.
3.  **`x-forms.input` / `x-forms.select`**:
      * Inputs con el estilo oscuro y borde neón al hacer foco, para no repetir las clases de Tailwind en cada formulario.
4.  **`x-ui.alert`**:
      * Para mostrar mensajes de éxito ("Producto guardado") o alertas ("¡Quedan solo 2 cámaras rodado 29\!").

-----

### 4\. Funcionalidades Específicas a Implementar

Aquí está la lógica para los requerimientos que mencionaste:

#### A. Alertas de Stock ⚠️

  * **Lógica:** No necesitas un sistema complejo de notificaciones en tiempo real todavía.
  * **Implementación:** En el `DashboardController`, pasas una variable `$lowStockProducts` a la vista.
  * **Vista:** En el Dashboard, si esa lista no está vacía, muestras una tarjeta roja o amarilla avisando "X productos con stock crítico".

#### B. Consulta de Precios (Modo Solo Lectura) 🔍

  * **Requerimiento:** Empleados consultan, no editan.
  * **Implementación:**
      * Crear una vista `products.checker`.
      * Un input de búsqueda grande en el centro.
      * Al escribir (AJAX o Livewire sería ideal aquí, pero un form simple con botón "Buscar" funciona), muestra una tarjeta gigante con el Nombre y el Precio.
      * *Seguridad:* Usar **Laravel Gates** o **Policies**.
        ```php
        // En AuthServiceProvider
        Gate::define('edit-products', function ($user) {
            return $user->role === 'admin';
        });
        ```
        En Blade: `@can('edit-products') <button>Editar</button> @endcan`. Así el empleado ve el producto pero no el botón de editar.

#### C. Agenda de Turnos 📅

  * **Lógica:** "Consulta -\> Cita".
  * **Implementación:**
      * No te compliques con un calendario visual complejo (tipo Google Calendar) al principio.
      * Usa una **Lista Agrupada por Días**.
      * *Ejemplo visual:*
          * **HOY:**
              * 09:00 - Jose (Pincharura) [Ver]
              * 10:30 - Maria (Service General) [Ver]
          * **MAÑANA:**
              * ...

-----

### 5\. Roadmap Sugerido (Paso a Paso)

Este es el orden lógico para programar sin perderse:

1.  **Semana 1: Cimientos y Stock (Lo más urgente)**

      * Configurar Migraciones (`products`, `clients`).
      * Crear Modelos y Seeders (datos falsos para probar).
      * Hacer el CRUD de Productos (Alta, Baja y Modificación).
      * *Hito:* Poder cargar una bicicleta y verla en la lista.

2.  **Semana 2: Seguridad y Consultas**

      * Agregar campo `role` a Users.
      * Crear la vista "Consulta de Precios" (solo lectura).
      * Proteger las rutas de edición para que solo el Admin entre.
      * *Hito:* El empleado puede loguearse y buscar un precio, pero no borrar nada.

3.  **Semana 3: El Taller (Turnos)**

      * Crear migración `appointments`.
      * Crear formulario para "Nuevo Turno" (Seleccionar Cliente + Fecha + Motivo).
      * Crear vista de "Lista de Turnos" en el Dashboard.
      * *Hito:* Dejar de usar el cuaderno de papel para los turnos.

4.  **Semana 4: Refinamiento**

      * Alertas de stock visuales.
      * Mejoras estéticas (Dark Mode en tablas).
      * Pruebas finales en el servidor local.

### ¿Cómo seguimos?

¿Te gustaría que generemos el código para la **Migración de Productos** y el **Modelo**, o prefieres que diseñemos primero el componente visual de la **Tabla de Stock**?