{
  "name": "Snag",
  "slug": "snag",
  "blocks": ["Pages", "Lists", "Sign-in: users"],
  "persona": "local-services",
  "keywords": [
    "repair requests",
    "maintenance requests",
    "tenants",
    "lettings",
    "property management",
    "report a repair",
    "landlord",
    "photos",
    "job status",
    "tenant portal",
    "repairs with photos",
    "tenant repair app"
  ],
  "description": "An app template for a letting agency: tenants report a repair in two minutes with a photo, follow it from Reported to Fixed with the team's replies, see the contractor's visit date and time, and find emergency numbers and self-help fixes. A public page, six member screens under /app and a privacy notice with blanks.",
  "audience": [
    "letting agencies",
    "property managers",
    "landlords with a few flats"
  ],
  "category": "Customer requests",
  "job": "member-app",
  "categoryId": "requests",
  "alsoFits": [
    "housing repairs desk",
    "block management",
    "landlord maintenance requests",
    "shared house repairs",
    "student lettings"
  ],
  "direction": "Hi-vis site board: condensed signage, a terrace photo, road-sign status and a red emergency sign",
  "mood": [
    "light",
    "bold",
    "modern"
  ],
  "fonts": [
    "Oswald",
    "Atkinson Hyperlegible"
  ],
  "memberApp": {
    "path": "/app",
    "setup": {
      "signup": "invite",
      "profile_fields": [
        {
          "name": "name",
          "type": "text",
          "label": "Your name",
          "required": true
        },
        {
          "name": "home",
          "type": "choice",
          "label": "Your home",
          "required": true,
          "options": [
            "Mill House flat 1",
            "Mill House flat 2",
            "Mill House flat 3",
            "Mill House flat 4",
            "Mill House flat 5",
            "Mill House flat 6",
            "The Ropery flat 1",
            "The Ropery flat 2",
            "The Ropery flat 3",
            "The Ropery flat 4",
            "12 Chandler Street",
            "14 Chandler Street"
          ]
        },
        {
          "name": "phone",
          "type": "phone",
          "label": "Phone for contractor calls"
        }
      ],
      "display_field": "name"
    },
    "lists": [
      {
        "list": "repairs",
        "label": "Repair reports",
        "by": "member",
        "status_options": [
          "Reported",
          "Approved",
          "Visit booked",
          "Fixed"
        ],
        "reply": true,
        "fields": [
          {
            "name": "issue",
            "type": "text",
            "label": "What's wrong?",
            "required": true
          },
          {
            "name": "urgency",
            "type": "choice",
            "label": "How urgent?",
            "required": true,
            "options": [
              "Within a week",
              "When convenient",
              "Emergency: I've rung the line"
            ]
          },
          {
            "name": "room",
            "type": "choice",
            "label": "Room",
            "required": true,
            "options": [
              "Kitchen",
              "Bathroom",
              "Bedroom",
              "Living room",
              "Hallway",
              "Outside",
              "Whole home"
            ]
          },
          {
            "name": "access",
            "type": "choice",
            "label": "Access for this repair",
            "required": true,
            "options": [
              "Call me first",
              "Use the agency's key",
              "Only when I'm home"
            ]
          },
          {
            "name": "category",
            "type": "choice",
            "label": "Kind of repair",
            "required": true,
            "options": [
              "Leaks and plumbing",
              "Heating and hot water",
              "Electrics",
              "Doors, windows and locks",
              "Damp and mould",
              "Appliances",
              "Something else"
            ]
          },
          {
            "name": "home",
            "type": "choice",
            "label": "Home",
            "required": true,
            "options": [
              "Mill House flat 1",
              "Mill House flat 2",
              "Mill House flat 3",
              "Mill House flat 4",
              "Mill House flat 5",
              "Mill House flat 6",
              "The Ropery flat 1",
              "The Ropery flat 2",
              "The Ropery flat 3",
              "The Ropery flat 4",
              "12 Chandler Street",
              "14 Chandler Street"
            ]
          },
          {
            "name": "details",
            "type": "long_text",
            "label": "Details",
            "required": true
          },
          {
            "name": "best_time",
            "type": "choice",
            "label": "Best time for a visit",
            "options": [
              "Any weekday",
              "Weekday mornings",
              "Weekday afternoons"
            ]
          },
          {
            "name": "photo",
            "type": "photo",
            "label": "Photo of the problem"
          }
        ]
      },
      {
        "list": "visits",
        "label": "Contractor visits",
        "by": "owner",
        "fields": [
          {
            "name": "repair",
            "type": "text",
            "label": "Repair",
            "required": true
          },
          {
            "name": "date",
            "type": "date",
            "label": "Visit date",
            "required": true
          },
          {
            "name": "window",
            "type": "choice",
            "label": "Arrival window",
            "required": true,
            "options": [
              "8am to 12pm",
              "12pm to 5pm",
              "All day"
            ]
          },
          {
            "name": "contractor",
            "type": "text",
            "label": "Contractor",
            "required": true
          },
          {
            "name": "notes",
            "type": "long_text",
            "label": "Before the visit"
          }
        ],
        "status_options": [
          "Booked",
          "Moved",
          "Cancelled",
          "Done"
        ]
      }
    ],
    "demo": {
      "member": {
        "name": "Kwame Asante",
        "email": "kwame.asante@example.com",
        "profile": {
          "name": "Kwame Asante",
          "home": "Mill House flat 3",
          "phone": "07700 900 418"
        }
      },
      "plans": [],
      "rows": {
        "repairs": [
          {
            "category": "Leaks and plumbing",
            "room": "Bathroom",
            "issue": "Shower screen seal leaking onto the floor",
            "details": "Water gets past the bottom seal of the shower screen and pools by the bath panel. Started last week. I put a towel down after each shower.",
            "urgency": "Within a week",
            "access": "Use the agency's key",
            "best_time": "Any weekday",
            "_added": "-7d",
            "_status": "Reported",
            "home": "Mill House flat 3"
          },
          {
            "category": "Electrics",
            "room": "Bathroom",
            "issue": "Extractor fan rattles and doesn't clear steam",
            "details": "The fan runs but grinds, and the mirror stays misted for an hour after a shower. Started last weekend.",
            "urgency": "When convenient",
            "access": "Call me first",
            "best_time": "Weekday mornings",
            "_added": "-6d",
            "_status": "Approved",
            "_reply": "Approved. Brightwire Electrical will ring you this week to book a time. Priya, Keystone repairs",
            "home": "Mill House flat 3"
          },
          {
            "category": "Damp and mould",
            "room": "Kitchen",
            "issue": "Damp patch spreading above the sink",
            "details": "Paint bubbling and peeling on the wall above the tiles, about the size of a dinner plate. It was half that two weeks ago. The cupboard below is dry.",
            "urgency": "Within a week",
            "access": "Use the agency's key",
            "best_time": "Weekday mornings",
            "photo": "art/damp-patch.webp",
            "_added": "-4d",
            "_status": "Visit booked",
            "_reply": "Harcourt Plumbing are booked to trace the leak behind the tiles. The date and time are under Visits. Please clear the cupboard under the sink. Priya",
            "home": "Mill House flat 3"
          },
          {
            "category": "Doors, windows and locks",
            "room": "Bedroom",
            "issue": "Window handle snapped off",
            "details": "The handle came away in my hand. The window is shut and locked, so it is safe, but I can't open it for air.",
            "urgency": "Within a week",
            "access": "Use the agency's key",
            "best_time": "Any weekday",
            "_added": "-16d",
            "_status": "Fixed",
            "_reply": "Calder Glazing fitted a new locking handle. Thanks for your patience. Priya",
            "home": "Mill House flat 3"
          },
          {
            "category": "Heating and hot water",
            "room": "Whole home",
            "issue": "No hot water from any tap",
            "details": "Cold from every tap since this morning and the boiler shows F28. I rang the emergency line at 7am and they asked me to log it here with a photo of the display.",
            "urgency": "Emergency: I've rung the line",
            "access": "Call me first",
            "best_time": "Any weekday",
            "_added": "-6w:tue",
            "_status": "Fixed",
            "_reply": "Harcourt Plumbing replaced the gas valve the same afternoon. Hot water is back on.",
            "home": "Mill House flat 3"
          }
        ],
        "visits": [
          {
            "repair": "Damp patch spreading above the sink",
            "date": "+1w:tue",
            "window": "8am to 12pm",
            "contractor": "Harcourt Plumbing",
            "notes": "Clear the cupboard under the sink. They will lift two wall tiles to find the leak and put them back the same day.",
            "_added": "-3d",
            "_status": "Booked"
          },
          {
            "repair": "Window handle snapped off",
            "date": "-13d",
            "window": "12pm to 5pm",
            "contractor": "Calder Glazing",
            "notes": "Using the agency's key. Leave the bedroom door open.",
            "_added": "-15d",
            "_status": "Done"
          },
          {
            "repair": "No hot water",
            "date": "-6w:tue",
            "window": "12pm to 5pm",
            "contractor": "Harcourt Plumbing",
            "notes": "Emergency visit booked from your call. Someone needs to be in.",
            "_added": "-6w:tue",
            "_status": "Done"
          }
        ]
      }
    }
  },
  "files": [
    "index.html",
    "privacy.html",
    "app/index.html",
    "app/report.html",
    "app/repairs.html",
    "app/visits.html",
    "app/help.html",
    "app/account.html",
    "styles.css",
    "app.js",
    "kit.css",
    "kit.js",
    "kit-icons.svg",
    "site.webmanifest",
    "favicon.svg",
    "art/icons.svg",
    "art/terrace.webp",
    "art/damp-patch.webp",
    "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: what tenants can do in the app, the 24-hour emergency line, response times per urgency, how a repair goes from Reported to Fixed, a short section for landlords and the sign-in"
    },
    {
      "path": "app/index.html",
      "label": "Home (app)",
      "purpose": "Signed out: a hi-vis welcome with the site board, the four status signs, the emergency sign and sign-in. Signed in: the home's repairs board with Report a repair, the newest open repair as a job sheet with its road-sign status and the team's reply, the emergency sign, the next contractor visit and every report"
    },
    {
      "path": "app/report.html",
      "label": "Report a repair",
      "purpose": "Picture tiles for the kind of repair with a tip each, then home, room, what's wrong, details, urgency, access, best time and an optional photo, with the emergency lines (gas, then Keystone) beside it; after sending it opens Repairs"
    },
    {
      "path": "app/repairs.html",
      "label": "Your repairs",
      "purpose": "Every report newest first with its four-step status line, the team's reply, home, urgency, access, the photo and the day it was sent, and an Ask about this repair email with the repair named"
    },
    {
      "path": "app/visits.html",
      "label": "Visits",
      "purpose": "Contractor visits the team booked for the tenant: date, arrival window, contractor, state (Booked, Moved, Cancelled, Done) and what to do before, then past visits"
    },
    {
      "path": "app/help.html",
      "label": "Help",
      "purpose": "Emergency numbers first, then self-help for the common faults (boiler pressure, stopcock, trip switch, condensation) and the office contacts and hours"
    },
    {
      "path": "app/account.html",
      "label": "Account",
      "purpose": "The account block (email, profile with home and phone, devices, leaving) and the agency's contacts"
    },
    {
      "path": "privacy.html",
      "label": "Privacy",
      "purpose": "The privacy notice for tenants, with blanks the owner fills in"
    }
  ],
  "facts": [
    "agency name",
    "office address",
    "office phone and weekday hours",
    "24-hour emergency line",
    "repairs email",
    "property manager and repairs coordinator",
    "buildings and flats",
    "response times for each urgency",
    "contractors you use",
    "privacy contact and address"
  ],
  "interview": [
    "What is the letting agency called, and where is the office?",
    "Which buildings and flats do you manage, and how are the flats numbered?",
    "What are your office hours, and which number should tenants ring out of hours?",
    "How fast do you aim to respond to an emergency, a repair within a week, and a routine one?",
    "Who answers repair reports, and which contractors do you usually send?",
    "What address and privacy contact should the privacy notice show?"
  ],
  "customise": {
    "strings": [
      "Keystone Lettings in the header, footer and titles; replace every data-pl-fill fact with the agency's own, including 40 Wharfside Parade, Brennock QZ7 2TU, 01632 960 849, the 24-hour emergency line 07700 900 733 (written out, not a data-pl-fill phone, on index.html and every app page) and repairs@keystonelets.example.com. Replace Priya (repairs coordinator), Cormac Delahunt-Reyes (property manager) and the contractors Harcourt Plumbing, Brightwire Electrical and Calder Glazing.",
      "The homes in memberApp.setup.profile_fields list Mill House flats 1 to 6, The Ropery flats 1 to 4 and 12 and 14 Chandler Street; change them to the agency's own.",
      "Response targets (reply within one working day; visits same day for emergencies, 3 working days within a week, 14 working days when convenient) appear on index.html, app/index.html and app/report.html; change them together.",
      "Fill in every highlighted blank on privacy.html with the agency before tenants use the site (not legal advice: https://pagelemon.com/agents/member-app-legal)",
      "Adults only. Never collect health data or children's data. Never ask for passwords, PINs, sign-in codes, card numbers, bank account numbers or government ID numbers, in reports, photos or by phone."
    ],
    "colours": "Edit the :root tokens at the top of styles.css: Hi-Vis (--sn-hivis and --sn-field, the poster and Home band), Navy (--sn-navy, --sn-board and --sn-btn), Concrete (--sn-ground) and Emergency Red (--sn-red, used only for the emergency signs); the dark scheme below them (the site at night) follows the device",
    "fonts": "Google Fonts: Oswald (titles, site-board lettering, road signs and phone numbers) and Atkinson Hyperlegible (text), one <link> in every page head and --sn-display / --sn-text in styles.css. If the owner prefers no font service, download both (OFL) into a fonts/ folder and switch to @font-face.",
    "sections": "setup_app with signup \"invite\" and the profile fields in memberApp.setup, then save_app_list for repairs (status_options and reply on) and visits. The owner's path: a new report arrives in the Dashboard (Apps, Entries); the team sets its status (Reported, Approved, Visit booked, Fixed) and writes a reply, which the tenant sees on Home and Repairs; when a contractor is booked the team adds a visits row assigned to that tenant (repair, date, arrival window, contractor, what to do before) and sets its state (Booked, Moved, Cancelled, Done), which shows on Home and Visits. Tenants get an email when the status or reply changes. app/index.html is Home with the signed-out welcome, app/report.html the report form, app/repairs.html every report with its status line, app/visits.html the visits, app/help.html emergencies and self-help, app/account.html the account block.",
    "images": "art/terrace.webp (Unsplash, PHOTOS.md) stands behind the site board on the public page and the signed-out welcome: replace it with the agency's own buildings. art/damp-patch.webp is the sample tenant photo in the preview only. art/icons.svg holds the repair icons for the room tiles and the clipboard and cone marks. favicon.svg is the site board on posts with a tick on hi-vis; the PNG icons and manifest are made from it."
  },
  "schemaVersion": 2,
  "updated": "2026-10-26"
}
