Skip to content

Common Workflows

Step-by-step guides for common tasks in Lager Guru.

Create a New Tenant

Prerequisites

  • Super admin access
  • Tenant information (name, company details)

Steps

  1. Navigate to Tenant Management

    • Go to AdminTenants
    • Click Create Tenant
  2. Enter Tenant Information

    • Tenant name
    • Company details (address, contact info)
    • Initial settings
  3. Configure Tenant

    • Set active status
    • Configure feature flags
    • Set up billing (if applicable)
  4. Create Initial Admin

    • Create first tenant admin user
    • Assign tenant admin role
    • Send invitation email
  5. Verify Setup

    • Log in as tenant admin
    • Verify tenant isolation
    • Test basic operations

Example

typescript
// Via API
const { data, error } = await supabase
  .from('tenants')
  .insert({
    name: 'Acme Corporation',
    company: {
      address: '123 Main St',
      city: 'Berlin'
    },
    active: true
  });

See Multi-Tenant Overview for details.


Add First Admin

Prerequisites

  • Super admin access or service role
  • User account created

Steps

  1. Create User Account

    • Navigate to AdminUser Management
    • Click Add User
    • Enter user details (email, name)
  2. Assign Admin Role

    • Select user
    • Assign role: Super Admin or Tenant Admin
    • For tenant admin: Associate with tenant
  3. Configure Permissions

    • Set appropriate permissions
    • Configure access levels
    • Set up SSO (if applicable)
  4. Send Invitation

    • Send password reset email
    • Or provide SSO login instructions

Example

typescript
// Create user
const { data: user } = await supabase.auth.admin.createUser({
  email: 'admin@example.com',
  email_confirm: true
});

// Assign admin role
await supabase
  .from('user_roles')
  .insert({
    user_id: user.user.id,
    role: 'admin'
  });

See Admin Guide for details.


Configure SSO

Prerequisites

  • Tenant admin access
  • SSO provider configured (OIDC or SAML)
  • Provider credentials

Steps

  1. Get Provider Information

    • OIDC: Issuer URL, Client ID, Client Secret
    • SAML: Entity ID, ACS endpoint, Certificate
  2. Navigate to SSO Configuration

    • Go to SettingsSSO Configuration
    • Select provider type (OIDC or SAML)
  3. Enter Provider Details

    • Issuer/Entity ID
    • Client ID
    • Client Secret (encrypted)
    • Metadata URL (if available)
  4. Configure User Provisioning

    • Set up user mapping
    • Configure role assignment
    • Set default tenant
  5. Test SSO

    • Use test login button
    • Verify authentication flow
    • Check user provisioning
  6. Activate SSO

    • Enable SSO provider
    • Set as default (optional)
    • Notify users

Example

typescript
// Create SSO provider
const { data, error } = await supabase
  .from('tenant_sso_providers')
  .insert({
    tenant_id: tenantId,
    type: 'oidc',
    issuer: 'https://auth.example.com',
    client_id: 'client-id',
    client_secret: 'encrypted-secret',
    active: true
  });

See SSO Setup for detailed instructions.


Create First Zone

Prerequisites

  • Admin access
  • Zone information (code, name, category)

Steps

  1. Navigate to Zone Management

    • Go to AdminZone Management
    • Click Create Zone
  2. Enter Zone Information

    • Zone code (unique identifier)
    • Zone name
    • Zone category/type
    • Optional coordinates (x, y, z)
  3. Configure Zone Settings

    • Set routing weight
    • Configure zone permissions
    • Set capacity limits (optional)
  4. Save Zone

    • Click Save
    • Verify zone appears in list
    • Test zone access

Example

typescript
// Create zone
const { data, error } = await supabase
  .from('zones')
  .insert({
    code: 'A-01',
    name: 'Zone A-01',
    category: 'storage',
    x: 10,
    y: 20,
    z: 0,
    routing_weight: 1
  });

See Zone Management for details.


Add Inventory Item

Prerequisites

  • Admin or inventory worker access
  • Item information (SKU, name, description)

Steps

  1. Navigate to Inventory

    • Go to InventoryItems
    • Click Add Item
  2. Enter Item Information

    • SKU (unique identifier)
    • Item name
    • Description
    • Unit of measure
  3. Set Initial Stock

    • Initial quantity
    • Minimum quantity (for alerts)
    • Zone location (optional)
  4. Save Item

    • Click Save
    • Verify item appears in inventory
    • Check stock levels

Example

typescript
// Create inventory item
const { data, error } = await supabase
  .from('inventory_items')
  .insert({
    sku: 'SKU-001',
    name: 'Product Name',
    description: 'Product description',
    quantity: 100,
    min_quantity: 10,
    unit: 'pcs',
    zone_id: zoneId
  });

See Inventory Management for details.


Create Pick List

Prerequisites

  • Admin or worker access
  • Orders with items to pick
  • Zones configured

Steps

  1. Navigate to Pick Lists

    • Go to Pick & PackPick Lists
    • Click Create Pick List
  2. Select Orders

    • Choose orders to include
    • Review items to pick
    • Verify quantities
  3. Generate Pick List

    • System calculates optimal route
    • Assigns items to zones
    • Sets pick sequence
  4. Assign Worker (optional)

    • Select worker for assignment
    • Or enable auto-assignment
    • Set priority
  5. Start Picking

    • Worker opens pick list
    • Follows route sequence
    • Scans items as picked

Example

typescript
// Create pick list
const { data, error } = await supabase
  .from('pick_lists')
  .insert({
    created_by: userId,
    assigned_to: workerId,
    status: 'pending'
  });

// Add items to pick list
await supabase
  .from('pick_list_items')
  .insert(items.map(item => ({
    pick_list_id: pickListId,
    item_id: item.id,
    qty_required: item.quantity,
    zone_id: item.zone_id,
    sequence: item.sequence
  })));

See Pick & Pack for details.


Complete Pack Session

Prerequisites

  • Pick list completed
  • Items picked and ready to pack
  • Packing station access

Steps

  1. Navigate to Packing

    • Go to Pick & PackPacking
    • Select completed pick list
  2. Start Pack Session

    • Click Start Packing
    • Select delivery units to create
    • Scan or enter items
  3. Pack Items

    • Add items to delivery units
    • Verify quantities
    • Mark items as packed
  4. Complete Session

    • Review packed items
    • Confirm quantities
    • Complete pack session
  5. Create Shipment (optional)

    • Link delivery units to shipment
    • Assign to driver
    • Generate shipping labels

Example

typescript
// Create pack session
const { data, error } = await supabase
  .from('pack_sessions')
  .insert({
    pick_list_id: pickListId,
    packed_by: userId,
    packed_at: new Date().toISOString()
  });

See Pick & Pack for details.


Assign Shipment to Driver

Prerequisites

  • Shipment created
  • Driver available
  • Driver has zone permissions

Steps

  1. Navigate to Shipments

    • Go to ShipmentsActive Shipments
    • Select shipment to assign
  2. Select Driver

    • View available drivers
    • Check driver status (must be online)
    • Verify zone permissions
  3. Assign Shipment

    • Click Assign Driver
    • Select driver
    • Confirm assignment
  4. Notify Driver

    • Driver receives notification
    • Shipment appears in driver dashboard
    • Driver can start delivery

Example

typescript
// Assign shipment to driver
const { data, error } = await supabase
  .from('shipments')
  .update({
    driver_id: driverId,
    status: 'assigned',
    assigned_at: new Date().toISOString()
  })
  .eq('id', shipmentId);

See Shipment Management for details.


Track Equipment

Prerequisites

  • Equipment registered
  • Scanner or RFID reader
  • Zone access

Steps

  1. Scan Equipment

    • Use scanner or RFID reader
    • Scan equipment QR/RFID code
    • System identifies equipment
  2. Record Position

    • Select current zone
    • Confirm position
    • System records timestamp
  3. View Equipment Status

    • Check equipment location
    • View last seen time
    • Check maintenance status

Example

typescript
// Record equipment position
const { data, error } = await supabase
  .from('equipment_positions')
  .insert({
    equipment_id: equipmentId,
    zone_id: zoneId,
    via: 'qr',
    created_by: userId,
    last_seen_at: new Date().toISOString()
  });

See Equipment Tracking for details.


Run Slotting Optimization

Prerequisites

  • Admin access
  • Inventory items in system
  • Zones configured
  • AI optimization enabled

Steps

  1. Navigate to Slotting

    • Go to OptimizationSlotting AI
    • Click Run Optimization
  2. Configure Parameters

    • Select items to optimize
    • Set optimization criteria
    • Choose zones to consider
  3. Run Analysis

    • System analyzes:
      • Item velocity (pick frequency)
      • Zone utilization
      • Distance optimization
      • Space constraints
  4. Review Recommendations

    • View suggested slot assignments
    • Review optimization score
    • Check impact analysis
  5. Apply Recommendations

    • Select recommendations to apply
    • Confirm changes
    • System updates item locations

Example

typescript
// Run slotting optimization
const { data, error } = await supabase.rpc('run_slotting_optimization', {
  tenant_id: tenantId,
  zone_ids: zoneIds,
  optimization_criteria: {
    prioritize_velocity: true,
    minimize_distance: true
  }
});

See Slotting AI for details.


Released under Commercial License