{
  "name": "Intake",
  "slug": "intake",
  "blocks": ["Pages", "Lists", "Sign-in: users"],
  "persona": "local-services",
  "keywords": [
    "requests",
    "job status",
    "customers",
    "app",
    "login",
    "member sign-in",
    "repair requests",
    "photos",
    "quotes",
    "workshop",
    "upholstery",
    "alterations",
    "members area"
  ],
  "description": "An app template: a small workshop's customers sign in, send a repair or reupholstery request with up to two photos, and see the stage, quote and notes the owner posts for each piece. A public page, the member pages under /app and a privacy notice with blanks.",
  "audience": [
    "upholsterers and furniture restorers",
    "small repair workshops"
  ],
  "category": "Customer requests",
  "job": "member-app",
  "categoryId": "requests",
  "alsoFits": [
    "bike repair requests",
    "tailoring and alterations",
    "picture framing orders",
    "watch and clock repairs"
  ],
  "direction": "Walnut swatch book: pinked fabric swatches on linen, with a stitched seam for each stage",
  "mood": [
    "light",
    "calm",
    "classic"
  ],
  "fonts": [
    "Rozha One",
    "Mulish"
  ],
  "memberApp": {
    "path": "/app",
    "lists": [
      {
        "list": "requests",
        "label": "Requests",
        "by": "member",
        "fields": [
          {
            "name": "item",
            "type": "text",
            "label": "What is it?",
            "required": true
          },
          {
            "name": "service",
            "type": "choice",
            "label": "What would you like?",
            "required": true,
            "options": [
              "Reupholstery",
              "Repair",
              "New foam and cushions",
              "Re-caning",
              "Not sure yet"
            ]
          },
          {
            "name": "details",
            "type": "long_text",
            "label": "Tell us more",
            "required": true
          },
          {
            "name": "photo",
            "type": "photo",
            "label": "Photo",
            "required": true
          },
          {
            "name": "photo_2",
            "type": "photo",
            "label": "Another photo"
          },
          {
            "name": "wanted_by",
            "type": "date",
            "label": "Needed by"
          }
        ],
        "status_options": [
          "Received",
          "Quote ready",
          "Booked in",
          "In the workshop",
          "Ready to collect",
          "Collected"
        ],
        "reply": true
      },
      {
        "list": "updates",
        "label": "Workshop updates",
        "by": "owner",
        "fields": [
          {
            "name": "date",
            "type": "date",
            "label": "Date",
            "required": true
          },
          {
            "name": "item",
            "type": "text",
            "label": "Item",
            "required": true
          },
          {
            "name": "stage",
            "type": "choice",
            "label": "Stage",
            "required": true,
            "options": [
              "Received",
              "Quote ready",
              "Booked in",
              "In the workshop",
              "Ready to collect",
              "Collected"
            ]
          },
          {
            "name": "quote",
            "type": "number",
            "label": "Quote (£)"
          },
          {
            "name": "memo",
            "type": "long_text",
            "label": "Note"
          }
        ]
      },
      {
        "list": "answers",
        "label": "Quote answers",
        "by": "member",
        "status_options": [
          "Received",
          "Booked in"
        ],
        "reply": true,
        "fields": [
          {
            "name": "item",
            "type": "text",
            "label": "Which piece",
            "required": true
          },
          {
            "name": "answer",
            "type": "choice",
            "label": "Your answer",
            "required": true,
            "options": [
              "Yes, book it in",
              "I have a question",
              "No, thanks"
            ]
          },
          {
            "name": "dropoff",
            "type": "date",
            "label": "When you can bring it in"
          },
          {
            "name": "message",
            "type": "long_text",
            "label": "Anything to tell us"
          }
        ]
      },
      {
        "list": "collections",
        "label": "Collections",
        "by": "member",
        "status_options": [
          "Requested",
          "Confirmed",
          "Collected"
        ],
        "reply": true,
        "fields": [
          {
            "name": "item",
            "type": "text",
            "label": "Which piece",
            "required": true
          },
          {
            "name": "day",
            "type": "date",
            "label": "Day",
            "required": true
          },
          {
            "name": "slot",
            "type": "choice",
            "label": "Time",
            "required": true,
            "options": [
              "10:00",
              "10:30",
              "11:00",
              "11:30",
              "12:00",
              "12:30",
              "14:00",
              "14:30",
              "15:00",
              "15:30",
              "16:00",
              "16:30"
            ]
          },
          {
            "name": "message",
            "type": "long_text",
            "label": "Anything to tell us"
          }
        ]
      }
    ],
    "demo": {
      "member": {
        "name": "Rhian Pugh",
        "email": "rhian.pugh@example.com",
        "profile": {
          "name": "Rhian"
        }
      },
      "plans": [],
      "rows": {
        "requests": [
          {
            "item": "Cane-back bedroom chair",
            "service": "Re-caning",
            "details": "The cane seat has gone through on one side. The frame is sound. About 40 cm square.",
            "photo": "art/sample-cane-chair.svg",
            "_added": "-3d",
            "_status": "Received",
            "_reply": "Thanks Rhian. Sol will look at your photos and post a quote here by Friday."
          },
          {
            "item": "Wingback armchair, green velvet",
            "service": "Reupholstery",
            "details": "My grandmother's chair. The seat has sunk and the arms are worn through. I have six metres of green velvet ready.",
            "photo": "art/sample-chair.svg",
            "wanted_by": "+50d",
            "_added": "-9d",
            "_status": "Quote ready",
            "_reply": "£420: new webbing and springs in the seat, and a full recover in your velvet. About 3 weeks once booked in."
          },
          {
            "item": "Four oak dining chairs, drop-in seats",
            "service": "New foam and cushions",
            "details": "The seats are flat and the hessian has split on two of them. Grey linen, please: a sample is in the bag.",
            "photo": "art/sample-dining-chairs.svg",
            "_added": "-26d",
            "_status": "Ready to collect",
            "_reply": "All four done. Book a collection time on Collect: Tuesday to Friday afternoons or Saturday morning."
          },
          {
            "item": "Footstool, brown wool",
            "service": "Reupholstery",
            "details": "Small footstool, brown wool worn through on top.",
            "photo": "art/sample-footstool.svg",
            "_added": "-75d",
            "_status": "Collected",
            "_reply": "Collected. The old cover is in the bag if you want it."
          }
        ],
        "updates": [
          {
            "date": "-1d",
            "item": "Four oak dining chairs, drop-in seats",
            "stage": "Ready to collect",
            "memo": "All four seats are done in your grey linen, and the two loose joints are solid again. £240 to pay when you collect, by card or bank transfer.",
            "_added": "-1d",
            "quote": 240
          },
          {
            "date": "-6d",
            "item": "Four oak dining chairs, drop-in seats",
            "stage": "In the workshop",
            "memo": "Seats stripped back to the frames. Two loose back joints glued and clamped overnight. Your grey linen goes on this week.",
            "_added": "-6d"
          },
          {
            "date": "-7d",
            "item": "Wingback armchair, green velvet",
            "stage": "Quote ready",
            "quote": 420,
            "memo": "New webbing and springs in the seat, and a full recover in your velvet. About 3 weeks once booked in.",
            "_added": "-7d"
          },
          {
            "date": "-12d",
            "item": "Four oak dining chairs, drop-in seats",
            "stage": "Booked in",
            "quote": 240,
            "memo": "Dropped off and tagged. £240 for all four seats: new foam, webbing and your grey linen.",
            "_added": "-12d"
          },
          {
            "date": "-24d",
            "item": "Four oak dining chairs, drop-in seats",
            "stage": "Received",
            "memo": "Thank you for the photos. Bea will be in touch with a quote.",
            "_added": "-24d"
          },
          {
            "date": "-61d",
            "item": "Footstool, brown wool",
            "stage": "Collected",
            "memo": "Collected. The old cover is in the bag by the door if you want to keep it.",
            "_added": "-61d"
          }
        ],
        "answers": [
          {
            "item": "Four oak dining chairs, drop-in seats",
            "answer": "Yes, book it in",
            "dropoff": "-12d",
            "message": "I'll bring them on Wednesday morning with the grey linen.",
            "_added": "-17d",
            "_status": "Booked in",
            "_reply": "Booked in for Wednesday. See you then."
          }
        ],
        "collections": [
          {
            "item": "Four oak dining chairs, drop-in seats",
            "day": "+1w:sat",
            "slot": "10:30",
            "message": "My partner Gareth will collect; he has the car.",
            "_added": "today",
            "_status": "Confirmed",
            "_reply": "See you Saturday at 10:30, Rhian. Gareth (your partner) is welcome to collect; £240 to pay on collection."
          },
          {
            "item": "Footstool, brown wool",
            "day": "-61d",
            "slot": "11:00",
            "_added": "-64d",
            "_status": "Collected",
            "_reply": "See you at 11. Paid £85 on collection, thank you. Send us another piece any time."
          }
        ]
      }
    },
    "setup": {
      "signup": "open",
      "profile_fields": [
        {
          "name": "name",
          "type": "text",
          "label": "First name"
        }
      ],
      "display_field": "name"
    }
  },
  "files": [
    "index.html",
    "app/index.html",
    "app/request.html",
    "app/pieces.html",
    "app/quotes.html",
    "app/collect.html",
    "app/account.html",
    "privacy.html",
    "styles.css",
    "app.js",
    "kit.css",
    "kit.js",
    "kit-icons.svg",
    "site.webmanifest",
    "favicon.svg",
    "art/workshop-chair.webp",
    "art/tools.webp",
    "art/velvet.webp",
    "art/wool.webp",
    "art/linen.webp",
    "art/grey-linen.webp",
    "art/brown-tweed.webp",
    "art/icons.svg",
    "art/sample-chair.svg",
    "art/sample-dining-chairs.svg",
    "art/sample-cane-chair.svg",
    "art/sample-footstool.svg",
    "og.png",
    "apple-touch-icon.png",
    "icon-192.png",
    "icon-512.png",
    "icon-512-maskable.png"
  ],
  "pages": [
    {
      "path": "index.html",
      "label": "Home",
      "purpose": "The public page: the workshop, what the customer app does (three phone screens), how it works in four steps, services with from prices, the workshop details and a link to sign in"
    },
    {
      "path": "app/index.html",
      "label": "Home",
      "purpose": "Signed out: a welcome and sign-in. Signed in: the latest workshop update with its six-step stage line, a quote waiting for an answer, pieces ready to collect, quick actions and the customer's pieces"
    },
    {
      "path": "app/request.html",
      "label": "New request",
      "purpose": "Photo tips, then the request form (what it is, the service, details, two photos, needed by) and what happens next"
    },
    {
      "path": "app/pieces.html",
      "label": "Pieces",
      "purpose": "Every piece the customer sent, newest first, with its photos, stage line and the workshop reply, and the workshop diary"
    },
    {
      "path": "app/quotes.html",
      "label": "Quotes",
      "purpose": "Quotes waiting for an answer, the answer form (yes, a question, no; drop-off date) and past answers with status and reply"
    },
    {
      "path": "app/collect.html",
      "label": "Collect",
      "purpose": "Pieces ready to collect, the collection booking form (piece, day, time), the collection hours and address, and past collections"
    },
    {
      "path": "app/account.html",
      "label": "Account",
      "purpose": "The account block (sign-in, devices, profile, leaving) and how to reach the workshop"
    },
    {
      "path": "privacy.html",
      "label": "Privacy",
      "purpose": "The privacy notice, with blanks the Site Owner fills in"
    }
  ],
  "facts": [
    "business name",
    "contact email",
    "services offered",
    "typical turnaround",
    "the people in the workshop"
  ],
  "interview": [
    "What is the workshop called, and who works there?",
    "What do customers bring you, and which services should they choose from?",
    "How long does a job usually take from booking in?",
    "Which stages does a job go through, from first photo to collection?",
    "Which email address should customers write to with questions?"
  ],
  "customise": {
    "strings": [
      "Corran & Moor Upholstery in the header, footer and titles; replace every data-pl-fill fact with the owner's own",
      "Fill in every highlighted blank on privacy.html with the Site Owner before members use the site (not legal advice: https://pagelemon.com/agents/member-app-legal)",
      "Make the requests list with save_app_list exactly as memberApp.lists says; its service options and the form's select on app/request.html change together",
      "Make the updates list with save_app_list exactly as memberApp.lists says; its stage options are the workshop's steps, and the owner adds each update in the Page Lemon Dashboard and assigns it to the customer",
      "Requests are about the furniture only: never add fields for card, bank or ID numbers (customers pay the workshop directly)"
    ],
    "colours": "Edit the :root tokens at the top of styles.css: Walnut (--cm-field), Velvet Green (--cm-btn, the main buttons), Mustard Wool (--cm-gold) and Linen (--cm-bg); the dark scheme below them follows the device",
    "fonts": "Google Fonts: Rozha One (titles, piece names and quote figures) and Mulish (text), one <link> in every page head and --cm-display / --cm-text in styles.css. If the owner prefers no font service, download both (OFL) into a fonts/ folder and switch to @font-face.",
    "sections": "Member pages live under /app and use the data-pl-view markup. setup_app with memberApp.setup, then save_app_list for each list in memberApp.lists. Each piece's status (the requests list's status: Received, Quote ready, Booked in, In the workshop, Ready to collect, Collected) drives the app: Quote ready shows the quote card with Answer, Ready to collect shows Book a collection. Write the quote in the reply (the price first, for example “£420: …”). The updates list is the workshop diary: optional news rows the owner assigns to the customer, shown on Home and Pieces; posting one does not change the piece's status, so set the request status too. Owner path in the Dashboard (Apps, Entries): open a new request, write the quote as the reply and set Quote ready; when an answer arrives, set Booked in; set In the workshop and Ready to collect as the work moves; confirm each collection (status Confirmed, a reply) and set Collected. app/index.html: the latest diary note, quotes to answer, pieces to collect. app/request.html: the request form. app/pieces.html: every piece with its six-step line. app/quotes.html: the answer form. app/collect.html: the booking form (Tuesday to Friday 14:00–17:00, Saturday 10:00–13:00, in data-k-hours). app/account.html: the account block. app.js shows the action cards from each status and names the piece on the forms.",
    "images": "art/workshop-chair.webp (the poster and the signed-out welcome) and art/tools.webp (the workshop section) are licensed stock photos (PHOTOS.md): replace them with the owner's own photos at the same shape. art/velvet.webp, art/wool.webp, art/linen.webp, art/grey-linen.webp and art/brown-tweed.webp are the fabric faces of the swatch cards (styles.css); swap in photos of the workshop's own fabric books. art/sample-*.svg are drawn sample photos in the demo rows (members' own photos replace them). favicon.svg is the swatch mark; the PNG icons and manifest are made from it."
  },
  "schemaVersion": 2
}
