{
  "name": "Stacks",
  "slug": "stacks",
  "blocks": ["Pages", "Lists", "Sign-in: users", "Actions: pay"],
  "persona": "community",
  "keywords": [
    "membership",
    "members",
    "app",
    "login",
    "member sign-in",
    "community",
    "paid community",
    "resources library",
    "members-only",
    "paid membership",
    "subscription",
    "professional association",
    "paid tiers",
    "members area",
    "paid"
  ],
  "description": "An app template: a paid community’s members’ library. Members sign in with their email, find vetted guides, templates and talks, save them to their shelf, log the quotes they send to see their real rates by size, and ask the organiser for a resource or an answer, following each request from Received to Answered with the organiser’s reply. £8 a month or £80 a year. A public page, six member screens under /app (Home, Library, three guides, Shelf, Ask, Account) and a privacy notice with blanks.",
  "audience": [
    "paid communities",
    "creative guilds and networks"
  ],
  "category": "Membership & community",
  "job": "member-app",
  "categoryId": "membership",
  "alsoFits": [
    "members' resource library",
    "paid newsletter with an archive",
    "professional association",
    "subscription club"
  ],
  "direction": "Library stacks in deep green and brass, with resources filed as index cards",
  "mood": [
    "light",
    "calm",
    "classic"
  ],
  "fonts": [
    "Libre Baskerville",
    "Special Elite"
  ],
  "memberApp": {
    "path": "/app",
    "setup": {
      "signup": "open",
      "profile_fields": [
        {
          "name": "name",
          "type": "text",
          "label": "First name"
        }
      ],
      "display_field": "name"
    },
    "lists": [
      {
        "list": "saved",
        "label": "Shelf",
        "by": "member",
        "fields": [
          {
            "name": "resource",
            "type": "choice",
            "label": "Resource",
            "required": true,
            "options": [
              "Pricing an editorial illustration",
              "The licensing checklist",
              "Chasing late invoices",
              "Quote and licence template",
              "Usage fee calculator",
              "Book contracts, an hour with an agent"
            ]
          },
          {
            "name": "memo",
            "type": "text",
            "label": "Why you saved it"
          }
        ]
      },
      {
        "list": "requests",
        "label": "Requests",
        "by": "member",
        "status_options": [
          "Received",
          "Researching",
          "Added to library",
          "Answered"
        ],
        "reply": true,
        "fields": [
          {
            "name": "title",
            "type": "text",
            "label": "What do you need?",
            "required": true
          },
          {
            "name": "kind",
            "type": "choice",
            "label": "Kind",
            "required": true,
            "options": [
              "Guide",
              "Template",
              "Tool",
              "Talk or video",
              "An answer to a question"
            ]
          },
          {
            "name": "details",
            "type": "long_text",
            "label": "Details"
          }
        ]
      },
      {
        "list": "quotes",
        "label": "Rates",
        "by": "member",
        "fields": [
          {
            "name": "client",
            "type": "text",
            "label": "Client",
            "required": true
          },
          {
            "name": "job",
            "type": "choice",
            "label": "Size or job",
            "required": true,
            "options": [
              "Spot",
              "Half page",
              "Full page",
              "Double-page spread",
              "Cover",
              "Book jacket",
              "Packaging",
              "Other"
            ]
          },
          {
            "name": "usage",
            "type": "choice",
            "label": "Use",
            "required": true,
            "options": [
              "Print and online",
              "Online only",
              "Book",
              "Advertising"
            ]
          },
          {
            "name": "fee",
            "type": "number",
            "label": "Fee (£)",
            "required": true
          },
          {
            "name": "sent",
            "type": "date",
            "label": "Sent on",
            "required": true
          },
          {
            "name": "outcome",
            "type": "choice",
            "label": "Outcome",
            "required": true,
            "options": [
              "Waiting",
              "Won",
              "Lost"
            ]
          },
          {
            "name": "memo",
            "type": "text",
            "label": "Note"
          }
        ]
      }
    ],
    "profile_fields": [
      {
        "name": "name",
        "type": "text",
        "label": "First name"
      }
    ],
    "display_field": "name",
    "plans": [
      {
        "plan": "member",
        "name": "Monthly membership",
        "paid": true,
        "price": {
          "amount": 800,
          "currency": "gbp",
          "interval": "month"
        }
      },
      {
        "plan": "annual",
        "name": "Yearly membership",
        "paid": true,
        "price": {
          "amount": 8000,
          "currency": "gbp",
          "interval": "year"
        }
      }
    ],
    "demo": {
      "member": {
        "name": "Nadia Rahman",
        "email": "nadia.rahman@example.com",
        "profile": {
          "name": "Nadia"
        }
      },
      "plans": [
        "member"
      ],
      "rows": {
        "saved": [
          {
            "resource": "Pricing an editorial illustration",
            "memo": "For the Weekend Review quote",
            "_added": "-1d"
          },
          {
            "resource": "The licensing checklist",
            "_added": "-1w:tue"
          },
          {
            "resource": "Quote and licence template",
            "memo": "Use for every new client",
            "_added": "-2w:thu"
          },
          {
            "resource": "Chasing late invoices",
            "_added": "-3w:fri"
          }
        ],
        "requests": [
          {
            "title": "A usage-fee email for ad agencies",
            "kind": "Template",
            "details": "Agencies keep asking for “all media, in perpetuity” for a social post. I need a polite reply that offers a 12-month licence and names the extra fee.",
            "_added": "-3d",
            "_status": "Researching",
            "_reply": "Good one. I’m asking two members who work with agencies for their wording; expect it in the library within two weeks."
          },
          {
            "title": "Chasing late invoices without sounding cross",
            "kind": "Guide",
            "details": "Three short wordings for the first, second and final reminder.",
            "_added": "-4w:mon",
            "_status": "Added to library",
            "_reply": "Added as G-03, with your second wording in it. Thank you, Nadia!"
          },
          {
            "title": "Can I reuse a rejected rough for another client?",
            "kind": "An answer to a question",
            "details": "The magazine paid a kill fee after roughs.",
            "_added": "-6w:wed",
            "_status": "Answered",
            "_reply": "Usually yes: the kill fee pays for the work, and the licence never started. Check the contract for a clause that says roughs belong to them; strike it next time."
          }
        ],
        "quotes": [
          {
            "client": "Harbour & Field",
            "job": "Book jacket",
            "usage": "Book",
            "fee": 1400,
            "sent": "-1d",
            "outcome": "Waiting",
            "memo": "UK and Commonwealth, 3 years",
            "_added": "-1d"
          },
          {
            "client": "The Weekend Review",
            "job": "Half page",
            "usage": "Print and online",
            "fee": 700,
            "sent": "-3d",
            "outcome": "Won",
            "memo": "Rush, 4 days, plus one paid ad",
            "_added": "-3d"
          },
          {
            "client": "Northern Gardener",
            "job": "Spot",
            "usage": "Print and online",
            "fee": 200,
            "sent": "-9d",
            "outcome": "Won",
            "_added": "-9d"
          },
          {
            "client": "Civic Quarterly",
            "job": "Full page",
            "usage": "Online only",
            "fee": 380,
            "sent": "-12d",
            "outcome": "Lost",
            "memo": "They wanted all media",
            "_added": "-12d"
          },
          {
            "client": "The Weekend Review",
            "job": "Half page",
            "usage": "Print and online",
            "fee": 450,
            "sent": "-5w:tue",
            "outcome": "Won",
            "_added": "-5w:tue"
          }
        ]
      }
    }
  },
  "files": [
    "index.html",
    "app/index.html",
    "app/library.html",
    "app/guides/pricing.html",
    "app/guides/licensing.html",
    "app/guides/invoices.html",
    "app/rates.html",
    "app/shelf.html",
    "app/ask.html",
    "app/account.html",
    "privacy.html",
    "styles.css",
    "app.js",
    "kit.css",
    "kit.js",
    "kit-icons.svg",
    "site.webmanifest",
    "favicon.svg",
    "art/cabinet.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 Inkwell Guild for freelance illustrators, what is in the members’ library, how asking works, the price and the way in"
    },
    {
      "path": "app/index.html",
      "label": "Home (app)",
      "purpose": "The member’s home: new in the library, their shelf, their open request with its status, the members’ call and quick actions"
    },
    {
      "path": "app/library.html",
      "label": "Library",
      "purpose": "Every guide, template, tool and talk as covers, by kind, with what each is for"
    },
    {
      "path": "app/guides/pricing.html",
      "label": "Guide: pricing",
      "purpose": "G-01, pricing an editorial illustration, members only, with Save to my shelf"
    },
    {
      "path": "app/guides/licensing.html",
      "label": "Guide: licensing",
      "purpose": "G-02, the licensing checklist, members only, with Save to my shelf"
    },
    {
      "path": "app/guides/invoices.html",
      "label": "Guide: late invoices",
      "purpose": "G-03, chasing late invoices, members only, with Save to my shelf"
    },
    {
      "path": "app/rates.html",
      "label": "Rates",
      "purpose": "The member’s private quote log: each quote with size, use, fee and outcome, what they won this month, their average fee by size against the Guild floors, and the form to log a quote"
    },
    {
      "path": "app/shelf.html",
      "label": "Shelf",
      "purpose": "The resources the member saved, newest first, with their own note"
    },
    {
      "path": "app/ask.html",
      "label": "Ask",
      "purpose": "Ask the organiser for a resource or an answer, and every request with its status and the organiser’s reply"
    },
    {
      "path": "app/account.html",
      "label": "Account",
      "purpose": "The account block (email, devices, billing, leaving) and the monthly and yearly plans"
    },
    {
      "path": "privacy.html",
      "label": "Privacy",
      "purpose": "The privacy notice, with blanks the Site Owner fills in"
    }
  ],
  "facts": [
    "community name",
    "organiser’s name",
    "contact email",
    "monthly and yearly price",
    "members’ call day and time",
    "the library’s guides, templates, tools and talks"
  ],
  "interview": [
    "What is the community called, and who is it for?",
    "Who runs it, and what email should members write to?",
    "What does membership cost each month, and what do members get for it?",
    "When is the next members' call or meet-up, if you hold one?",
    "Which guides, templates and talks should be in the library first, and which deserve a full page?",
    "What should your first two or three posts to members say?"
  ],
  "customise": {
    "strings": [
      "The Inkwell Guild and Remi Achterberg in the header, footer, guides and titles: replace every data-pl-fill fact with the owner’s own; keep short_name in site.webmanifest as Inkwell or the owner’s app name.",
      "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)",
      "setup_app with signup open, then save_app_list for saved and requests exactly as memberApp.lists says (requests with its status_options and reply on). The saved list’s resource options are the library’s titles: when the owner adds or renames a resource, change the options, the library card, the guide’s Save form and the TITLES map in app.js together.",
      "The quotes list (Rates) is private to each member: make it with save_app_list exactly as memberApp.lists says. Keep the job options in step with the size table in app/guides/pricing.html. Outcome changes (Won, Lost, Waiting) use update_app_rows on the existing row, never a new row.",
      "Set the plans with save_plan: member (£8 a month) and annual (£80 a year). Guides are wrapped in data-pl-if=\"plan:member\" and \"plan:annual\" so only paying members read them; change the prices on index.html and app/account.html together.",
      "The organiser answers in the Dashboard (Apps → Requests): set the status (Received, Researching, Added to library, Answered) and write a reply members read under their request.",
      "A professional library only: never add health, payment card, bank or ID fields, and never collect anything about children."
    ],
    "colours": "Edit the palette tokens in the body.k-app[data-k-type=\"slab\"] blocks at the end of styles.css (light, then dark).",
    "fonts": "Libre Baskerville and Special Elite, loaded from Google Fonts on every page; your AI can self-host them on request.",
    "sections": "Member pages live under /app on the shared app kit (kit.css, kit.js, kit-icons.svg; never edit the copies). app/guides/*.html are full guides behind the plans, each with a Save form for the saved list; app/shelf.html lists saved rows (app.js turns a saved title into a link to its guide); app/ask.html holds the requests add form and the member’s requests with status and reply; app/account.html the account block and join buttons. index.html holds no member blocks.",
    "images": "art/cabinet.svg is the drawn oak card catalogue on the public page and the members’ welcome screens. Library resources are index cards drawn in styles.css, with no cover art: add a resource as one card, with its reference code."
  },
  "schemaVersion": 2,
  "updated": "2026-10-25"
}
