[{"data":1,"prerenderedAt":485},["ShallowReactive",2],{"docs-navigation":3,"docs-\u002Fbuilding\u002Fdescribing-what-you-need":254,"surround-\u002Fbuilding\u002Fdescribing-what-you-need":482},[4,33,86,114,173,212,231],{"title":5,"path":6,"stem":7,"children":8},"Start","\u002Fstart","1.start",[9,13,18,23,28],{"title":10,"path":6,"stem":11,"description":12},"Start here","1.start\u002Findex","What Desifex is, and how to get an application of your own running.",{"title":14,"path":15,"stem":16,"description":17},"What Desifex is","\u002Fstart\u002Fwhat-desifex-is","1.start\u002F1.what-desifex-is","An application factory where conversation is the interface — and the handful of things it deliberately will not do.",{"title":19,"path":20,"stem":21,"description":22},"Your first application","\u002Fstart\u002Fyour-first-application","1.start\u002F2.your-first-application","From a sentence to something running, in about twenty minutes, with nothing to install.",{"title":24,"path":25,"stem":26,"description":27},"The workbench","\u002Fstart\u002Fthe-workbench","1.start\u002F3.the-workbench","A tour of the screen you will spend your time on — the conversation, the six tabs, and the menu.",{"title":29,"path":30,"stem":31,"description":32},"What to expect","\u002Fstart\u002Fwhat-to-expect","1.start\u002F4.what-to-expect","How long things take, what a good working rhythm looks like, and the parts that genuinely go wrong.",{"title":34,"path":35,"stem":36,"children":37},"Building","\u002Fbuilding","2.building",[38,41,46,51,56,61,66,71,76,81],{"title":34,"path":35,"stem":39,"description":40},"2.building\u002Findex","Getting what you actually wanted out of the conversation.",{"title":42,"path":43,"stem":44,"description":45},"Describing what you need","\u002Fbuilding\u002Fdescribing-what-you-need","2.building\u002F1.describing-what-you-need","How to phrase a request so that what comes back is what you meant.",{"title":47,"path":48,"stem":49,"description":50},"Watching a build","\u002Fbuilding\u002Fwatching-a-build","2.building\u002F2.watching-a-build","What the steps mean, what is happening underneath, and why you are not shown a log.",{"title":52,"path":53,"stem":54,"description":55},"Changing your mind","\u002Fbuilding\u002Fchanging-your-mind","2.building\u002F3.changing-your-mind","Interrupting a build, correcting a misunderstanding, and undoing something you asked for.",{"title":57,"path":58,"stem":59,"description":60},"When a build fails","\u002Fbuilding\u002Fwhen-a-build-fails","2.building\u002F4.when-a-build-fails","What a failure actually means, what to try, and when to ask us.",{"title":62,"path":63,"stem":64,"description":65},"Showing it a file","\u002Fbuilding\u002Fshowing-it-files","2.building\u002F5.showing-it-files","Attaching a screenshot, a spreadsheet or a document to the conversation — often faster than describing it.",{"title":67,"path":68,"stem":69,"description":70},"Choosing a design system","\u002Fbuilding\u002Fchoosing-a-design-system","2.building\u002F6.choosing-a-design-system","What a design system decides, how to pick one, and what changing it later does.",{"title":72,"path":73,"stem":74,"description":75},"Asking for settings","\u002Fbuilding\u002Fasking-for-settings","2.building\u002F7.asking-for-settings","The conversation reaches the whole platform — addresses, icons, redirects, users, integrations and shipping. If you do not know where a setting is, ask.",{"title":77,"path":78,"stem":79,"description":80},"When it asks you","\u002Fbuilding\u002Fwhen-it-asks-you","2.building\u002F8.when-it-asks-you","Some decisions arrive as a screen rather than a message — a table to correct, a list to choose from — and the build waits for your answer.",{"title":82,"path":83,"stem":84,"description":85},"Starting from what you have","\u002Fbuilding\u002Fstarting-from-what-you-have","2.building\u002F9.starting-from-what-you-have","A spreadsheet, a document, a picture or a page of your own site — attached, read, and built from.",{"title":87,"path":88,"stem":89,"children":90},"Shipping","\u002Fshipping","3.shipping",[91,94,99,104,109],{"title":87,"path":88,"stem":92,"description":93},"3.shipping\u002Findex","Getting what you built in front of people, and getting back to an earlier version.",{"title":95,"path":96,"stem":97,"description":98},"Versions","\u002Fshipping\u002Fversions","3.shipping\u002F1.versions","Every build is kept, named after what was asked for, and can be compared and restored.",{"title":100,"path":101,"stem":102,"description":103},"Environments","\u002Fshipping\u002Fenvironments","3.shipping\u002F2.environments","Preview, test and live — what each one is, who can reach it, and why their data is separate.",{"title":105,"path":106,"stem":107,"description":108},"Deploying","\u002Fshipping\u002Fdeploying","3.shipping\u002F3.deploying","Putting a version into test or live, what happens while it deploys, and what happens if it fails.",{"title":110,"path":111,"stem":112,"description":113},"Going back","\u002Fshipping\u002Fgoing-back","3.shipping\u002F4.going-back","Restoring an earlier version when a change turned out to be wrong.",{"title":115,"path":116,"stem":117,"children":118},"Running","\u002Frunning","4.running",[119,123,128,133,138,143,148,153,158,163,168],{"title":120,"path":116,"stem":121,"description":122},"Running it","4.running\u002Findex","Everything in Settings — addresses, access, people, files, integrations and what crawlers are told.",{"title":124,"path":125,"stem":126,"description":127},"Addresses and domains","\u002Frunning\u002Faddresses-and-domains","4.running\u002F01.addresses-and-domains","The address an application gets, and how to put it on a domain you own.",{"title":129,"path":130,"stem":131,"description":132},"Who can reach it","\u002Frunning\u002Fwho-can-reach-it","4.running\u002F02.who-can-reach-it","Open, behind one shared password, or accounts — and why the choice is enforced in front of the application.",{"title":134,"path":135,"stem":136,"description":137},"People who sign in","\u002Frunning\u002Fpeople-who-sign-in","4.running\u002F03.people-who-sign-in","The workspace's user directory — adding the people who use your applications, which ones each may open, what you can keep about them, and two-step sign-in.",{"title":139,"path":140,"stem":141,"description":142},"Published files","\u002Frunning\u002Fpublished-files","4.running\u002F04.published-files","Documents your application hands to its users — a price list, a brochure, a form — with a stable address and no build to change them.",{"title":144,"path":145,"stem":146,"description":147},"Integrations","\u002Frunning\u002Fintegrations","4.running\u002F05.integrations","Email, SMS and Google — connected once, used by the application without it ever holding a credential.",{"title":149,"path":150,"stem":151,"description":152},"Appearance","\u002Frunning\u002Fappearance","4.running\u002F06.appearance","The browser tab, the icon, what a link looks like when somebody pastes it, and adding it to a phone's home screen.",{"title":154,"path":155,"stem":156,"description":157},"Redirects and search engines","\u002Frunning\u002Fredirects-and-search-engines","4.running\u002F07.redirects-and-search-engines","Old addresses that still get visited, and what crawlers are told about each environment.",{"title":159,"path":160,"stem":161,"description":162},"Configuration values","\u002Frunning\u002Fconfiguration-values","4.running\u002F08.configuration-values","Named values the application needs but must not contain — API keys, account numbers, thresholds.",{"title":164,"path":165,"stem":166,"description":167},"Your data","\u002Frunning\u002Fyour-data","4.running\u002F09.your-data","The Data tab — reading, correcting, adding to and clearing out what your application has stored, one environment at a time.",{"title":169,"path":170,"stem":171,"description":172},"Visitors","\u002Frunning\u002Fvisitors","4.running\u002F10.visitors","Who is using the application, counted without identifying anybody and with nothing to set up.",{"title":174,"path":175,"stem":176,"children":177},"Workspace","\u002Fworkspace","5.workspace",[178,182,187,192,197,202,207],{"title":179,"path":175,"stem":180,"description":181},"Your workspace","5.workspace\u002Findex","What every application in it shares — the domain, the design systems, the people, the user directory and, if you want it, one set of records — and how to be in more than one.",{"title":183,"path":184,"stem":185,"description":186},"People and roles","\u002Fworkspace\u002Fpeople-and-roles","5.workspace\u002F1.people-and-roles","Three roles, what each can do, how they apply to the builder as well as to the buttons, and why they belong to a workspace rather than to an account.",{"title":188,"path":189,"stem":190,"description":191},"More than one workspace","\u002Fworkspace\u002Fmore-than-one-workspace","5.workspace\u002F2.more-than-one-workspace","Belonging to several, switching between them, the role you hold in each, and why nothing crosses over.",{"title":193,"path":194,"stem":195,"description":196},"Organising applications","\u002Fworkspace\u002Ffolders-and-organising","5.workspace\u002F3.folders-and-organising","Folders on the dashboard, and how to keep a growing list navigable.",{"title":198,"path":199,"stem":200,"description":201},"Your own design systems","\u002Fworkspace\u002Fyour-own-design-systems","5.workspace\u002F4.your-own-design-systems","Authoring a design system for your brand, or a client's, by importing guidelines, a website or a Figma library.",{"title":203,"path":204,"stem":205,"description":206},"Your profile","\u002Fworkspace\u002Fyour-profile","5.workspace\u002F5.your-profile","Your name, your password, your picture, and the theme.",{"title":208,"path":209,"stem":210,"description":211},"Where records live","\u002Fworkspace\u002Fwhere-records-live","5.workspace\u002F6.where-records-live","One store per environment, one across an application's environments, or one the whole workspace shares — what each costs you, and how to change it.",{"title":213,"path":214,"stem":215,"children":216},"Developers","\u002Fdevelopers","6.developers",[217,221,226],{"title":218,"path":214,"stem":219,"description":220},"For developers","6.developers\u002Findex","What is actually generated, and what to do when you inherit one.",{"title":222,"path":223,"stem":224,"description":225},"What gets built","\u002Fdevelopers\u002Fwhat-gets-built","6.developers\u002F1.what-gets-built","The stack, the shape of the repository, and the parts the platform provides rather than the application.",{"title":227,"path":228,"stem":229,"description":230},"Taking one over","\u002Fdevelopers\u002Ftaking-it-over","6.developers\u002F2.taking-it-over","For the developer who has just been handed an application built here.",{"title":232,"path":233,"stem":234,"children":235},"Reference","\u002Freference","7.reference",[236,239,244,249],{"title":232,"path":233,"stem":237,"description":238},"7.reference\u002Findex","Terms, limits, and what to do when something specific has gone wrong.",{"title":240,"path":241,"stem":242,"description":243},"Glossary","\u002Freference\u002Fglossary","7.reference\u002F1.glossary","Every term this documentation uses, in one place.",{"title":245,"path":246,"stem":247,"description":248},"Limits","\u002Freference\u002Flimits","7.reference\u002F2.limits","The boundaries that are real, so you do not discover them at an inconvenient moment.",{"title":250,"path":251,"stem":252,"description":253},"Troubleshooting","\u002Freference\u002Ftroubleshooting","7.reference\u002F3.troubleshooting","Specific symptoms, and what each one usually means.",{"id":255,"title":42,"body":256,"description":45,"extension":475,"hidden":476,"meta":477,"navTitle":478,"navigation":479,"path":43,"seo":480,"stem":44,"__hash__":481},"docs\u002F2.building\u002F1.describing-what-you-need.md",{"type":257,"value":258,"toc":463},"minimark",[259,263,268,271,287,290,294,297,302,305,309,312,320,324,327,346,349,353,356,375,386,390,393,419,423,428,433,438,443,448,453,458],[260,261,262],"p",{},"The single skill worth learning here. Everything else in this documentation is\nmechanics.",[264,265,267],"h2",{"id":266},"say-what-it-is-for","Say what it is for",[260,269,270],{},"The most useful sentence you can write is the one about the person using it.",[272,273,274,281],"blockquote",{},[260,275,276,280],{},[277,278,279],"strong",{},"Vague"," — Add a filter to the list.",[260,282,283,286],{},[277,284,285],{},"Useful"," — Salespeople are scrolling past everybody else's proposals to find\ntheir own. They should see theirs first, with a way to see everyone's.",[260,288,289],{},"The second says what problem is being solved, which means the builder can solve\nit properly instead of adding exactly the control you named and no more.",[264,291,293],{"id":292},"be-concrete-about-records-and-fields","Be concrete about records and fields",[260,295,296],{},"When you are describing something the application should keep track of, name the\nfields. This is not being technical — it is being specific.",[272,298,299],{},[260,300,301],{},"Each site visit has a date, an engineer, a customer, a short report and up to\nsix photographs. Visits can be marked complete. A visit that is not complete\nafter three days should stand out on the list.",[260,303,304],{},"That produces the right thing first time. \"A tool for site visits\" does not.",[264,306,308],{"id":307},"one-thing-per-message","One thing per message",[260,310,311],{},"Three separate messages beat one message with three requirements, for a reason\nthat shows up later: when something comes back wrong, you know which request\ncaused it, and you can go back to the version before it.",[260,313,314,315,319],{},"The exception is when two changes genuinely belong together — ",[316,317,318],"em",{},"add a note field,\nand show it on the detail page"," is one thought.",[264,321,323],{"id":322},"say-what-is-wrong-not-what-to-do","Say what is wrong, not what to do",[260,325,326],{},"You are the person who can see it. The builder is the person who can change it.",[272,328,329,335],{},[260,330,331,334],{},[277,332,333],{},"Works"," — The dates are unreadable on a phone; they wrap onto three lines.",[260,336,337,340,341,345],{},[277,338,339],{},"Works less well"," — Set the date column to ",[342,343,344],"code",{},"white-space: nowrap",".",[260,347,348],{},"The first describes a problem you can actually see and lets it be fixed\nproperly. The second is a guess at an implementation, and if it is the wrong\nguess you get the wrong fix.",[264,350,352],{"id":351},"prefer-a-setting-to-a-request","Prefer a setting to a request",[260,354,355],{},"Some things are settings rather than code, and asking for them as code means the\nnext build can undo them:",[357,358,359,363,366,369,372],"ul",{},[360,361,362],"li",{},"the browser tab title and the icon",[360,364,365],{},"what a link to it looks like pasted into a message",[360,367,368],{},"redirects from old addresses",[360,370,371],{},"what search engines are told",[360,373,374],{},"values like an API key or an account number",[260,376,377,378,381,382,385],{},"All of these live in ",[277,379,380],{},"Settings",", apply on every deployment, and cannot be\noverwritten by a build. See ",[383,384,120],"a",{"href":116},". You can still ask for them\nin the conversation — the builder will put them in Settings rather than in the\ncode.",[264,387,389],{"id":388},"things-it-cannot-do","Things it cannot do",[260,391,392],{},"Said plainly so you do not spend an afternoon rephrasing:",[357,394,395,401,407,413],{},[360,396,397,400],{},[277,398,399],{},"A different framework or language."," Every application here is built the\nsame way. This is the constraint the whole platform rests on.",[360,402,403,406],{},[277,404,405],{},"A service we have not connected."," Email, SMS and Google are built in.\nAnything else has to be an ordinary HTTP API called with a key you put in\nSettings.",[360,408,409,412],{},[277,410,411],{},"Reading from a database somewhere else",", unless it is reachable over the\ninternet and has an API.",[360,414,415,418],{},[277,416,417],{},"A native mobile application."," An application can be installed to a phone's\nhome screen and behave like one, but it is a web application.",[264,420,422],{"id":421},"worked-examples","Worked examples",[260,424,425],{},[277,426,427],{},"Starting from nothing",[272,429,430],{},[260,431,432],{},"A register for our loan equipment. About 200 items — laptops, projectors,\ncameras. Each has an asset tag, a name, a condition and a location. Staff\nborrow an item by scanning or typing the tag; it records who has it and when\nit is due back. Facilities need a list of what is overdue, and to see the\nhistory of any item.",[260,434,435],{},[277,436,437],{},"Changing something",[272,439,440],{},[260,441,442],{},"On the overdue list, show how many days overdue rather than the due date. Sort\nby that, worst first.",[260,444,445],{},[277,446,447],{},"Fixing something",[272,449,450],{},[260,451,452],{},"When I save a visit with no photographs it says \"Saved\" but the visit does not\nappear in the list. It only appears after I reload.",[260,454,455],{},[277,456,457],{},"Asking for a judgement",[272,459,460],{},[260,461,462],{},"This list is going to have 5,000 rows by next year. Is it going to be usable?\nDo whatever you would do to make that fine.",{"title":464,"searchDepth":465,"depth":465,"links":466},"",3,[467,469,470,471,472,473,474],{"id":266,"depth":468,"text":267},2,{"id":292,"depth":468,"text":293},{"id":307,"depth":468,"text":308},{"id":322,"depth":468,"text":323},{"id":351,"depth":468,"text":352},{"id":388,"depth":468,"text":389},{"id":421,"depth":468,"text":422},"md",false,{},null,true,{"title":42,"description":45},"r3XMSvzxNu52Fh-fhGzhhhsfdfar2koF00s5NKut1pw",[483,484],{"title":34,"path":35,"stem":39,"description":40,"children":-1},{"title":47,"path":48,"stem":49,"description":50,"children":-1},1790202296893]