Grocy
Stock, due soon and missing products
Three coordinated inventory views with concise product, amount, expiry and value cards.
A practical Grocy dashboard for current stock, products due soon and products below their required amount. The mappings were checked against Grocy's API response structure; nested product fields are flattened by Cifru.
Prepare Grocy:
1. In Grocy, open the top-right settings menu and Manage API keys.
2. Create a dedicated API key for Cifru and copy it. Keep the instance behind HTTPS and expose it to the iPhone through your secure remote-access method.
3. Grocy documents its interactive API at /api on each installation.
Project: https://github.com/grocy/grocy
Configure Cifru on iPhone/iPad:
1. Sources → Add source → REST JSON; Base URL: your Grocy origin.
2. Authentication: API key in header; header name GROCY-API-KEY; value: the generated key.
3. Test, import, map “Grocy REST”, then test all three datasets.
4. Cifru calls GET /api/stock and GET /api/stock/volatile only. The package contains no key or household data.
Ce creează pachetul
- Home: Grocy stock
- Home: Due soon
- Home: Missing products
Sursele se mapează local și se verifică înainte de aplicare.
Vezi JSON-ul care se importărestrâns implicit
{
"components": {
"sourceSlots": [
{
"displayName": "Grocy REST",
"id": "EE77F3E7-FD70-586B-A078-93A032A693A5",
"kind": "rest",
"requiredObjects": [
"/api/stock",
"/api/stock/volatile"
],
"requiresCustomSQL": false
}
],
"workspaceSelection": {
"commonFields": [],
"datasets": [
{
"cacheMode": "cached",
"calculatedFields": [],
"customQueryIntegrationName": "",
"endpointPath": "/api/stock",
"fetchSortRules": [],
"id": "D5495DFE-25EA-5E9A-8226-3BD9B9076604",
"mappings": [
{
"commonFieldKey": "",
"key": "product_id",
"label": "Product ID",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic",
"sourceColumn": "product.id",
"type": "number",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "product_name",
"key": "product_name",
"label": "Product",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic",
"sourceColumn": "product.name",
"type": "text",
"visibleInDetail": true,
"visibleInList": true
},
{
"commonFieldKey": "quantity",
"key": "amount",
"label": "Amount",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic",
"sourceColumn": "amount",
"type": "number",
"visibleInDetail": true,
"visibleInList": true
},
{
"commonFieldKey": "",
"key": "amount_opened",
"label": "Opened amount",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic",
"sourceColumn": "amount_opened",
"type": "number",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "best_before_date",
"label": "Best before",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic",
"sourceColumn": "best_before_date",
"type": "date",
"visibleInDetail": true,
"visibleInList": true
},
{
"commonFieldKey": "",
"key": "due_type",
"label": "Due type",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic",
"sourceColumn": "due_type",
"type": "text",
"visibleInDetail": true,
"visibleInList": true
},
{
"commonFieldKey": "",
"key": "value",
"label": "Value",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic",
"sourceColumn": "value",
"type": "number",
"visibleInDetail": true,
"visibleInList": true
}
],
"maxRows": 1000,
"name": "Stock",
"primaryKey": "product_id",
"refreshPolicy": {
"enabled": true,
"intervalMinutes": 15
},
"rootArrayPath": "",
"rowLimitEnabled": true,
"searchKeys": [
"product_id",
"product_name",
"amount",
"amount_opened",
"best_before_date"
],
"sourceID": "EE77F3E7-FD70-586B-A078-93A032A693A5",
"sqlQuery": "",
"tableName": ""
},
{
"cacheMode": "cached",
"calculatedFields": [],
"customQueryIntegrationName": "",
"endpointPath": "/api/stock/volatile",
"fetchSortRules": [],
"id": "E9EFEF8F-22F0-5FAC-BF7E-653239A8BD44",
"mappings": [
{
"commonFieldKey": "",
"key": "product_id",
"label": "Product ID",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic",
"sourceColumn": "product.id",
"type": "number",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "product_name",
"key": "product_name",
"label": "Product",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic",
"sourceColumn": "product.name",
"type": "text",
"visibleInDetail": true,
"visibleInList": true
},
{
"commonFieldKey": "quantity",
"key": "amount",
"label": "Amount",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic",
"sourceColumn": "amount",
"type": "number",
"visibleInDetail": true,
"visibleInList": true
},
{
"commonFieldKey": "",
"key": "amount_opened",
"label": "Opened amount",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic",
"sourceColumn": "amount_opened",
"type": "number",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "best_before_date",
"label": "Best before",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic",
"sourceColumn": "best_before_date",
"type": "date",
"visibleInDetail": true,
"visibleInList": true
},
{
"commonFieldKey": "",
"key": "due_type",
"label": "Due type",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic",
"sourceColumn": "due_type",
"type": "text",
"visibleInDetail": true,
"visibleInList": true
},
{
"commonFieldKey": "",
"key": "value",
"label": "Value",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic",
"sourceColumn": "value",
"type": "number",
"visibleInDetail": true,
"visibleInList": true
}
],
"maxRows": 500,
"name": "Due soon",
"primaryKey": "product_id",
"refreshPolicy": {
"enabled": true,
"intervalMinutes": 15
},
"rootArrayPath": "due_products",
"rowLimitEnabled": true,
"searchKeys": [
"product_id",
"product_name",
"amount",
"amount_opened",
"best_before_date"
],
"sourceID": "EE77F3E7-FD70-586B-A078-93A032A693A5",
"sqlQuery": "",
"tableName": ""
},
{
"cacheMode": "cached",
"calculatedFields": [],
"customQueryIntegrationName": "",
"endpointPath": "/api/stock/volatile",
"fetchSortRules": [],
"id": "E759DE1D-8A5C-5535-8CB6-0BFB64A079F8",
"mappings": [
{
"commonFieldKey": "",
"key": "id",
"label": "Product ID",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic",
"sourceColumn": "id",
"type": "number",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "product_name",
"key": "name",
"label": "Product",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic",
"sourceColumn": "name",
"type": "text",
"visibleInDetail": true,
"visibleInList": true
},
{
"commonFieldKey": "",
"key": "amount_missing",
"label": "Amount missing",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic",
"sourceColumn": "amount_missing",
"type": "number",
"visibleInDetail": true,
"visibleInList": true
}
],
"maxRows": 500,
"name": "Missing products",
"primaryKey": "id",
"refreshPolicy": {
"enabled": true,
"intervalMinutes": 15
},
"rootArrayPath": "missing_products",
"rowLimitEnabled": true,
"searchKeys": [
"id",
"name",
"amount_missing"
],
"sourceID": "EE77F3E7-FD70-586B-A078-93A032A693A5",
"sqlQuery": "",
"tableName": ""
}
],
"pages": [
{
"actions": [],
"badgeKey": "amount",
"cardEnrichments": [],
"cardFieldLayout": [
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "product_name",
"label": "Product",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic"
},
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "amount",
"label": "Amount",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic"
},
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "best_before_date",
"label": "Best before",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic"
},
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "value",
"label": "Value",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic"
}
],
"datasetID": "D5495DFE-25EA-5E9A-8226-3BD9B9076604",
"dateFilterKey": "",
"dateFilterLastDays": 7,
"dateFilterPreset": "none",
"detailFieldLayout": [
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "product_id",
"label": "Product ID",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic"
},
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "product_name",
"label": "Product",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic"
},
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "amount",
"label": "Amount",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic"
},
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "amount_opened",
"label": "Opened amount",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic"
},
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "best_before_date",
"label": "Best before",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic"
},
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "due_type",
"label": "Due type",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic"
},
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "value",
"label": "Value",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic"
}
],
"fixedFilters": [],
"id": "AED229D6-81C2-5676-97A2-174315B140AE",
"openFilters": [],
"pageSize": 100,
"requiresOpeningFilterSelection": false,
"showOnHome": true,
"sortRules": [],
"subtitle": "",
"subtitleKey": "best_before_date",
"systemImage": "cabinet",
"title": "Grocy stock",
"titleKey": "product_name"
},
{
"actions": [],
"badgeKey": "amount",
"cardEnrichments": [],
"cardFieldLayout": [
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "product_name",
"label": "Product",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic"
},
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "best_before_date",
"label": "Best before",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic"
},
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "amount",
"label": "Amount",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic"
},
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "due_type",
"label": "Due type",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic"
}
],
"datasetID": "E9EFEF8F-22F0-5FAC-BF7E-653239A8BD44",
"dateFilterKey": "",
"dateFilterLastDays": 7,
"dateFilterPreset": "none",
"detailFieldLayout": [
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "product_id",
"label": "Product ID",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic"
},
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "product_name",
"label": "Product",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic"
},
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "amount",
"label": "Amount",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic"
},
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "amount_opened",
"label": "Opened amount",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic"
},
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "best_before_date",
"label": "Best before",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic"
},
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "due_type",
"label": "Due type",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic"
},
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "value",
"label": "Value",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic"
}
],
"fixedFilters": [],
"id": "6D35F29B-5173-555D-BF9B-848039935A37",
"openFilters": [],
"pageSize": 100,
"requiresOpeningFilterSelection": false,
"showOnHome": true,
"sortRules": [
{
"direction": "ascending",
"id": "73A5ADFE-9F14-50D6-A513-535C46330428",
"key": "best_before_date",
"type": "date"
}
],
"subtitle": "",
"subtitleKey": "best_before_date",
"systemImage": "calendar.badge.exclamationmark",
"title": "Due soon",
"titleKey": "product_name"
},
{
"actions": [],
"badgeKey": "amount_missing",
"cardEnrichments": [],
"cardFieldLayout": [
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "name",
"label": "Product",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic"
},
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "amount_missing",
"label": "Amount missing",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic"
}
],
"datasetID": "E759DE1D-8A5C-5535-8CB6-0BFB64A079F8",
"dateFilterKey": "",
"dateFilterLastDays": 7,
"dateFilterPreset": "none",
"detailFieldLayout": [
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "id",
"label": "Product ID",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic"
},
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "name",
"label": "Product",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic"
},
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "amount_missing",
"label": "Amount missing",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "automatic"
}
],
"fixedFilters": [],
"id": "48823C1D-7704-54BE-8C40-10880138CEBB",
"openFilters": [],
"pageSize": 100,
"requiresOpeningFilterSelection": false,
"showOnHome": true,
"sortRules": [],
"subtitle": "",
"subtitleKey": "id",
"systemImage": "cart.badge.minus",
"title": "Missing products",
"titleKey": "name"
}
],
"relations": [],
"widgets": []
}
},
"format": "cifru-configuration-package",
"formatVersion": 1,
"manifest": {
"applicationName": "Grocy",
"configurationLanguages": [
"en"
],
"countries": [
"ALL"
],
"createdAt": "2026-07-24T16:26:43Z",
"description": "A practical Grocy dashboard for current stock, products due soon and products below their required amount. The mappings were checked against Grocy's API response structure; nested product fields are flattened by Cifru.\n\nPrepare Grocy:\n1. In Grocy, open the top-right settings menu and Manage API keys.\n2. Create a dedicated API key for Cifru and copy it. Keep the instance behind HTTPS and expose it to the iPhone through your secure remote-access method.\n3. Grocy documents its interactive API at /api on each installation.\nProject: https://github.com/grocy/grocy\n\nConfigure Cifru on iPhone/iPad:\n1. Sources → Add source → REST JSON; Base URL: your Grocy origin.\n2. Authentication: API key in header; header name GROCY-API-KEY; value: the generated key.\n3. Test, import, map “Grocy REST”, then test all three datasets.\n4. Cifru calls GET /api/stock and GET /api/stock/volatile only. The package contains no key or household data.",
"licenseCode": "Cifru-Community-1.0",
"minimumCifruVersion": "1.0",
"minimumPlan": "starter",
"packageID": "DE542261-0DEE-5949-B2E8-445D6C5F37EF",
"rootButtonCount": 3,
"summary": "Three coordinated inventory views with concise product, amount, expiry and value cards.",
"tags": [
"Grocy",
"inventory",
"expiry",
"household"
],
"title": "Stock, due soon and missing products"
}
}