changes
This commit is contained in:
@@ -49,6 +49,24 @@ export interface SetupStep {
|
||||
href: string;
|
||||
/** A real count, when there is one worth showing. */
|
||||
detail?: string;
|
||||
|
||||
/**
|
||||
* Why this step is worth doing — the consequence of not doing it.
|
||||
*
|
||||
* Every one of these is a failure somebody has actually had on this platform,
|
||||
* not a generalisation. A merchant who understands that an unpriced product
|
||||
* cannot be rung up does the work; one told to "complete step 5" does not.
|
||||
*/
|
||||
why: string;
|
||||
/** The actual actions, in order. Short enough to follow without re-reading. */
|
||||
how: readonly string[];
|
||||
/**
|
||||
* The trap.
|
||||
*
|
||||
* Optional, and only present where there IS one — a gotcha invented to fill a
|
||||
* field teaches people to stop reading them.
|
||||
*/
|
||||
gotcha?: string;
|
||||
}
|
||||
|
||||
export interface SetupInput {
|
||||
@@ -72,6 +90,16 @@ export function setupSteps(input: SetupInput): SetupStep[] {
|
||||
return [
|
||||
{
|
||||
id: 'profile',
|
||||
why:
|
||||
"Shoppers see your photo, name and licence before they see a single product. An FSSAI or trade licence is a display requirement for a food business — and across every shop on the platform not one had entered it, because until now nothing could save it.",
|
||||
how: [
|
||||
"Add a shop photo — the picture shoppers see beside your shop",
|
||||
"Enter your FSSAI or trade licence number",
|
||||
"Write a line about what you sell",
|
||||
"Check the phone and address below are still right",
|
||||
],
|
||||
gotcha:
|
||||
"A field left blank is not changed. Saving will never erase something you did not fill in.",
|
||||
title: 'Complete your shop profile',
|
||||
todo: 'Add your shop photo and licence — this is what shoppers see.',
|
||||
cta: 'Add your shop details',
|
||||
@@ -80,6 +108,15 @@ export function setupSteps(input: SetupInput): SetupStep[] {
|
||||
},
|
||||
{
|
||||
id: 'people',
|
||||
why:
|
||||
"Every branch needs somebody who can sign in and run it. Adding people first is what lets you choose who runs a shop, rather than accepting a login named after the building.",
|
||||
how: [
|
||||
"Users & access, then Add person",
|
||||
"Their email is how they sign in",
|
||||
"Leave the shop as “Not at a shop yet” if their branch does not exist",
|
||||
],
|
||||
gotcha:
|
||||
"You never issue a password. They set their own the first time they sign in.",
|
||||
title: 'Add your people',
|
||||
todo: 'Add whoever will run your shops. You can add them before a branch exists.',
|
||||
cta: 'Add a person',
|
||||
@@ -91,6 +128,15 @@ export function setupSteps(input: SetupInput): SetupStep[] {
|
||||
},
|
||||
{
|
||||
id: 'branch',
|
||||
why:
|
||||
"Stock, prices and the sales ledger all hang off an outlet. Nothing can be sold until there is one to sell it from.",
|
||||
how: [
|
||||
"Choose who runs it from the people you have added",
|
||||
"Set the address and opening hours",
|
||||
"Set the delivery radius — it decides which addresses the app will serve",
|
||||
],
|
||||
gotcha:
|
||||
"Pick a person. Leave it blank and a login is created named after the shop, on the shop email — and everyone at that counter shares it.",
|
||||
title: 'Open your first branch',
|
||||
todo: 'Commission an outlet and say who runs it.',
|
||||
cta: 'Open a branch',
|
||||
@@ -100,6 +146,15 @@ export function setupSteps(input: SetupInput): SetupStep[] {
|
||||
},
|
||||
{
|
||||
id: 'products',
|
||||
why:
|
||||
"An empty catalogue is an empty shop. Nothing else in this list can be done until there are products to price and stock.",
|
||||
how: [
|
||||
"Inventory ▸ Catalogue to pick from the shared catalogue",
|
||||
"Or Inventory ▸ Upload sheet for your own list",
|
||||
"A sheet needs a product name; price and opening stock are read if present",
|
||||
],
|
||||
gotcha:
|
||||
"An uploaded sheet goes to the catalogue service for review first — usually a few hours. It is queued, not stuck. When it finishes you still press “Put on the shelf” to price and stock it.",
|
||||
title: 'Get your products in',
|
||||
todo: 'Import from the catalogue, or upload your own spreadsheet.',
|
||||
cta: 'Add products',
|
||||
@@ -117,6 +172,15 @@ export function setupSteps(input: SetupInput): SetupStep[] {
|
||||
},
|
||||
{
|
||||
id: 'priced',
|
||||
why:
|
||||
"A product with no price cannot be rung up at a till, and one that has not been released reaches no shop at all. Both look identical on the shelf.",
|
||||
how: [
|
||||
"Inventory ▸ Products, starting with the rows marked “Not ready”",
|
||||
"Each row says what is blocking it",
|
||||
"Set a price, then release",
|
||||
],
|
||||
gotcha:
|
||||
"Releasing sends a product to EVERY branch you run. Each keeps its own price — releasing several together will not overwrite them.",
|
||||
title: 'Price and release them',
|
||||
todo: 'A product with no price cannot be rung up, and one not released reaches no shop.',
|
||||
cta: 'Price and release',
|
||||
@@ -128,6 +192,15 @@ export function setupSteps(input: SetupInput): SetupStep[] {
|
||||
},
|
||||
{
|
||||
id: 'stocked',
|
||||
why:
|
||||
"The app shows only what you actually hold. A priced, released product with a balance of zero is invisible to shoppers.",
|
||||
how: [
|
||||
"Inventory ▸ Stock",
|
||||
"Record what is on the shelf now",
|
||||
"A branch asks head office for more through a stock request",
|
||||
],
|
||||
gotcha:
|
||||
"Stock is counted per outlet. Ten cases at one branch does not make the product sellable at another.",
|
||||
title: 'Put stock on the shelf',
|
||||
todo: 'Record what you actually hold — nothing sells at a balance of zero.',
|
||||
cta: 'Add stock',
|
||||
@@ -139,6 +212,15 @@ export function setupSteps(input: SetupInput): SetupStep[] {
|
||||
},
|
||||
{
|
||||
id: 'onsale',
|
||||
why:
|
||||
"This is the finish line: a shopper can find the product and buy it. Three things have to be true at once, and a product can look perfect while failing one.",
|
||||
how: [
|
||||
"It has a category — without one the app cannot list it at all",
|
||||
"It is on this branch’s shelf",
|
||||
"Its stock balance is above zero",
|
||||
],
|
||||
gotcha:
|
||||
"Category is the one that catches people. A product priced, released and stocked but filed under no category is invisible to every shopper.",
|
||||
title: 'See it in the app',
|
||||
todo: 'Once a product is priced, released, stocked and in a category, shoppers can buy it.',
|
||||
cta: 'Check the app view',
|
||||
|
||||
Reference in New Issue
Block a user