# Installation

## Step 1 - File Ordering&#x20;

In the downloaded files, you will receive two folders: **s-JobSuite** and **s-JobSuite-props.**

Ensure the following order in your `server.cfg` file for proper functionality:

```
ensure s-JobSuite-props
ensure s-JobSuite
```

## Step 2 - Adding Items

### Below, the required item information for [**qb-inventory**](#for-qb-inventory-items-are-located-in-qbcore-shared-items.lua), [**ox-inventory**](#for-ox-inventory-items-are-located-in-ox_inventory-data-items.lua), and [**codem-inventory**](#for-codem-inventory-items-are-located-in-config-itemlist.lua) is provided in tables.

### For **qb-inventory**, items are located in `qbcore/shared/items.lua`

```lua
QBShared.Items = {
    orange                       = { name = 'orange', label = 'Orange', weight = 400, type = 'item', image = 'orange.png', unique = false, useable = false, shouldClose = true, description = 'A fresh and juicy orange, perfect for a healthy snack.' },
    packed_orange                = { name = 'packed_orange', label = 'Packed Orange', weight = 600, type = 'item', image = 'packed_orange.png', unique = false, useable = true, shouldClose = true, description = 'A neatly packed orange, ready to eat or sell.' },
    orange_juice                 = { name = 'orange_juice', label = 'Orange Juice', weight = 400, type = 'item', image = 'orange_juice.png', unique = false, useable = true, shouldClose = true, description = 'A refreshing glass of freshly squeezed orange juice.'},
    tomato                       = { name = 'tomato', label = 'Tomato', weight = 300, type = 'item', image = 'tomato.png', unique = false, useable = false, shouldClose = true, description = 'A fresh and ripe tomato, great for cooking or salads.' },
    packed_tomato                = { name = 'packed_tomato', label = 'Packed Tomato', weight = 300, type = 'item', image = 'packed_tomato.png', unique = false, useable = false, shouldClose = true, description = 'A neatly packed ripe tomato, ideal for storage or transport.' },
    ketchup                      = { name = 'ketchup', label = 'Ketchup', weight = 500, type = 'item', image = 'ketchup.png', unique = false, useable = true, shouldClose = true, description = 'A delicious bottle of ketchup made from fresh tomatoes.' }, 
    apple                        = { name = 'apple', label = 'Apple', weight = 350, type = 'item', image = 'apple.png', unique = false, useable = false, shouldClose = true, description = 'A crisp and sweet apple, perfect for a snack.' },
    packed_apple                 = { name = 'packed_apple', label = 'Packed Apple', weight = 350, type = 'item', image = 'packed_apple.png', unique = false, useable = false, shouldClose = true, description = 'A neatly packed apple, ideal for transport or storage.' },
    apple_juice                  = { name = 'apple_juice', label = 'Apple Juice', weight = 550, type = 'item', image = 'apple_juice.png', unique = false, useable = true, shouldClose = true, description = 'A refreshing bottle of apple juice made from real apples.' },    
    lemon                        = { name = 'lemon', label = 'Lemon', weight = 250, type = 'item', image = 'lemon.png', unique = false, useable = false, shouldClose = true, description = 'A sour and tangy lemon, perfect for drinks or cooking.' },
    packed_lemon                 = { name = 'packed_lemon', label = 'Packed Lemon', weight = 250, type = 'item', image = 'packed_lemon.png', unique = false, useable = false, shouldClose = true, description = 'A neatly packed lemon, ideal for transport or storage.' },
    lemonade                     = { name = 'lemonade', label = 'Lemonade', weight = 500, type = 'item', image = 'lemonade.png', unique = false, useable = true, shouldClose = true, description = 'A freshly squeezed glass of lemonade, perfect for a hot day.' },
    grape                        = { name = 'grape', label = 'Grape', weight = 300, type = 'item', image = 'grape.png', unique = false, useable = false, shouldClose = true, description = 'Fresh and sweet grapes, perfect for snacking.' },
    packed_grape                 = { name = 'packed_grape', label = 'Packed Grape', weight = 350, type = 'item', image = 'packed_grape.png', unique = false, useable = false, shouldClose = true, description = 'A neatly packed bunch of grapes, ideal for transport or storage.' },
    grape_juice                  = { name = 'grape_juice', label = 'Grape Juice', weight = 450, type = 'item', image = 'grape_juice.png', unique = false, useable = true, shouldClose = true, description = 'A refreshing bottle of grape juice made from fresh grapes.' },
}
```

### For **ox-inventory**, items are located in `ox_inventory/data/items.lua`

```lua
   ['orange'] = { label = 'Orange', weight = 400, stack = true, close = true, description = 'A fresh and juicy orange, perfect for a healthy snack.', image = 'orange.png' },
   ['packed_orange'] = { label = 'Packed Orange', weight = 600, stack = true, close = true, description = 'A neatly packed orange, ready to eat or sell.', image = 'packed_orange.png' },
   ['orange_juice'] = { label = 'Orange Juice', weight = 400, stack = true, close = true, description = 'A refreshing glass of freshly squeezed orange juice.', image = 'orange_juice.png' },
   ['tomato'] = { label = 'Tomato', weight = 300, stack = true, close = true, description = 'A fresh and ripe tomato, great for cooking or salads.', image = 'tomato.png' },
   ['packed_tomato'] = { label = 'Packed Tomato', weight = 300, stack = true, close = true, description = 'A neatly packed ripe tomato, ideal for storage or transport.', image = 'packed_tomato.png' },
   ['ketchup'] = { label = 'Ketchup', weight = 500, stack = true, close = true, description = 'A delicious bottle of ketchup made from fresh tomatoes.', image = 'ketchup.png' },
   ['apple'] = { label = 'Apple', weight = 350, stack = true, close = true, description = 'A crisp and sweet apple, perfect for a snack.', image = 'apple.png' },
   ['packed_apple'] = { label = 'Packed Apple', weight = 350, stack = true, close = true, description = 'A neatly packed apple, ideal for transport or storage.', image = 'packed_apple.png' },
   ['apple_juice'] = { label = 'Apple Juice', weight = 550, stack = true, close = true, description = 'A refreshing bottle of apple juice made from real apples.', image = 'apple_juice.png' },
   ['lemon'] = { label = 'Lemon', weight = 250, stack = true, close = true, description = 'A sour and tangy lemon, perfect for drinks or cooking.', image = 'lemon.png' },
   ['packed_lemon'] = { label = 'Packed Lemon', weight = 250, stack = true, close = true, description = 'A neatly packed lemon, ideal for transport or storage.', image = 'packed_lemon.png' },
   ['lemonade'] = { label = 'Lemonade', weight = 500, stack = true, close = true, description = 'A freshly squeezed glass of lemonade, perfect for a hot day.', image = 'lemonade.png' },
   ['grape'] = { label = 'Grape', weight = 300, stack = true, close = true, description = 'Fresh and sweet grapes, perfect for snacking.', image = 'grape.png' },
   ['packed_grape'] = { label = 'Packed Grape', weight = 350, stack = true, close = true, description = 'A neatly packed bunch of grapes, ideal for transport or storage.', image = 'packed_grape.png' },
   ['grape_juice'] = { label = 'Grape Juice', weight = 450, stack = true, close = true, description = 'A refreshing bottle of grape juice made from fresh grapes.', image = 'grape_juice.png' },
```

### For **codem-inventory**, items are located in `config/itemlist.lua`

```lua
Config.Itemlist = {
       orange = { name = 'orange', label = 'Orange', weight = 400, type = 'item', image = 'orange.png', unique = false, useable = false, shouldClose = true, combinable = nil, description = 'A fresh and juicy orange, perfect for a healthy snack.' },
       packed_orange = { name = 'packed_orange', label = 'Packed Orange', weight = 600, type = 'item', image = 'packed_orange.png', unique = false, useable = true, shouldClose = true, combinable = nil, description = 'A neatly packed orange, ready to eat or sell.' },
       orange_juice = { name = 'orange_juice', label = 'Orange Juice', weight = 400, type = 'item', image = 'orange_juice.png', unique = false, useable = true, shouldClose = true, combinable = nil, description = 'A refreshing glass of freshly squeezed orange juice.' },
       tomato = { name = 'tomato', label = 'Tomato', weight = 300, type = 'item', image = 'tomato.png', unique = false, useable = false, shouldClose = true, combinable = nil, description = 'A fresh and ripe tomato, great for cooking or salads.' },
       packed_tomato = { name = 'packed_tomato', label = 'Packed Tomato', weight = 300, type = 'item', image = 'packed_tomato.png', unique = false, useable = false, shouldClose = true, combinable = nil, description = 'A neatly packed ripe tomato, ideal for storage or transport.' },
       ketchup = { name = 'ketchup', label = 'Ketchup', weight = 500, type = 'item', image = 'ketchup.png', unique = false, useable = true, shouldClose = true, combinable = nil, description = 'A delicious bottle of ketchup made from fresh tomatoes.' },
       apple = { name = 'apple', label = 'Apple', weight = 350, type = 'item', image = 'apple.png', unique = false, useable = false, shouldClose = true, combinable = nil, description = 'A crisp and sweet apple, perfect for a snack.' },
       packed_apple = { name = 'packed_apple', label = 'Packed Apple', weight = 350, type = 'item', image = 'packed_apple.png', unique = false, useable = false, shouldClose = true, combinable = nil, description = 'A neatly packed apple, ideal for transport or storage.' },
       apple_juice = { name = 'apple_juice', label = 'Apple Juice', weight = 550, type = 'item', image = 'apple_juice.png', unique = false, useable = true, shouldClose = true, combinable = nil, description = 'A refreshing bottle of apple juice made from real apples.' },
       lemon = { name = 'lemon', label = 'Lemon', weight = 250, type = 'item', image = 'lemon.png', unique = false, useable = false, shouldClose = true, combinable = nil, description = 'A sour and tangy lemon, perfect for drinks or cooking.' },
       packed_lemon = { name = 'packed_lemon', label = 'Packed Lemon', weight = 250, type = 'item', image = 'packed_lemon.png', unique = false, useable = false, shouldClose = true, combinable = nil, description = 'A neatly packed lemon, ideal for transport or storage.' },
       lemonade = { name = 'lemonade', label = 'Lemonade', weight = 500, type = 'item', image = 'lemonade.png', unique = false, useable = true, shouldClose = true, combinable = nil, description = 'A freshly squeezed glass of lemonade, perfect for a hot day.' },
       grape = { name = 'grape', label = 'Grape', weight = 300, type = 'item', image = 'grape.png', unique = false, useable = false, shouldClose = true, combinable = nil, description = 'Fresh and sweet grapes, perfect for snacking.' },
       packed_grape = { name = 'packed_grape', label = 'Packed Grape', weight = 350, type = 'item', image = 'packed_grape.png', unique = false, useable = false, shouldClose = true, combinable = nil, description = 'A neatly packed bunch of grapes, ideal for transport or storage.' },
       grape_juice = { name = 'grape_juice', label = 'Grape Juice', weight = 450, type = 'item', image = 'grape_juice.png', unique = false, useable = true, shouldClose = true, combinable = nil, description = 'A refreshing bottle of grape juice made from fresh grapes.' },
}
```

## **Step 3 - Adding Item Images**

Ensure item images are correctly added to the appropriate directory for your inventory system:

* **qb-inventory**: Place images in `qb-inventory/html/images`
* **ox-inventory**: Place images in `ox_inventory/web/images`
* **codem-inventory**: Place images in `html/itemimages`

Properly adding item images ensures accurate representation and functionality within the inventory system.

## **Installation Complete**

The installation process is now complete. For further configuration details, please proceed to the [**Configure**](/synthstore/s-series/s-jobsuite/configure.md) page.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://synthstore.gitbook.io/synthstore/s-series/s-jobsuite/installation.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
