[{"data":1,"prerenderedAt":526},["ShallowReactive",2],{"docs-navigation":3,"docs-\u002Fshipping\u002Fenvironments":254,"surround-\u002Fshipping\u002Fenvironments":523},[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":100,"body":256,"description":103,"extension":516,"hidden":517,"meta":518,"navTitle":519,"navigation":520,"path":101,"seo":521,"stem":102,"__hash__":522},"docs\u002F3.shipping\u002F2.environments.md",{"type":257,"value":258,"toc":504},"minimark",[259,263,357,361,364,367,370,373,376,379,382,385,389,392,404,428,432,442,455,459,462,489,493,496],[260,261,262],"p",{},"Three, and each has its own database, its own cache and its own file storage.",[264,265,266,284],"table",{},[267,268,269],"thead",{},[270,271,272,275,278,281],"tr",{},[273,274],"th",{},[273,276,277],{},"Preview",[273,279,280],{},"Test",[273,282,283],{},"Live",[285,286,287,301,313,332,344],"tbody",{},[270,288,289,293,296,299],{},[290,291,292],"td",{},"What is running",[290,294,295],{},"The work as it stands",[290,297,298],{},"One frozen version",[290,300,298],{},[270,302,303,305,308,311],{},[290,304,129],{},[290,306,307],{},"Your team, in the workbench",[290,309,310],{},"Anyone with the address",[290,312,310],{},[270,314,315,318,321,327],{},[290,316,317],{},"Address",[290,319,320],{},"Inside the workbench",[290,322,323],{},[324,325,326],"code",{},"name-uat.yourdomain",[290,328,329],{},[324,330,331],{},"name.yourdomain",[270,333,334,337,340,342],{},[290,335,336],{},"Data",[290,338,339],{},"Its own",[290,341,339],{},[290,343,339],{},[270,345,346,349,352,355],{},[290,347,348],{},"Changes when",[290,350,351],{},"Every build",[290,353,354],{},"You deploy",[290,356,354],{},[358,359,277],"h2",{"id":360},"preview",[260,362,363],{},"The working copy. It is always current — every build changes it — and it is only\nreachable from inside the workbench.",[260,365,366],{},"This is where you are wrong in private. Nothing here reaches anybody.",[358,368,280],{"id":369},"test",[260,371,372],{},"A version, deployed, on a real address, with its own data. For showing a client,\nfor letting colleagues try something, for checking a change against something\nclose to reality before it is real.",[260,374,375],{},"Test is closed to search engines by default.",[358,377,283],{"id":378},"live",[260,380,381],{},"What the business runs on. The same machinery as test, with different data and\na different address.",[260,383,384],{},"Live is open to search engines by default.",[358,386,388],{"id":387},"why-the-data-is-separate","Why the data is separate",[260,390,391],{},"Because a version being tested should not be able to write to what the business\nis running on. That is the whole reason the separation exists, and it is how\nevery application starts.",[260,393,394,395,399,400,403],{},"It ",[396,397,398],"em",{},"can"," be given up — one store behind all three environments, or one shared\nwith another application — and there are real reasons to. It is an owner's\ndecision, it is said out loud on every screen afterwards, and it is worth\nbeing the exception. See ",[401,402,208],"a",{"href":209},".",[405,406,408,411,422],"note",{"type":407},"warning",[260,409,410],{},"Two consequences people meet on their first day.",[260,412,413,417,418,403],{},[414,415,416],"strong",{},"Records you add while testing are not in the live application."," If you spend\nan afternoon entering real data into test, it stays in test — unless you\ndeliberately ",[401,419,421],{"href":420},"\u002Frunning\u002Fyour-data#copying-records-between-environments","copy it across",[260,423,424,427],{},[414,425,426],{},"Turning on the shared password for test does not turn it on for live."," They\nare separate doors. A client shown the test copy has not been shown the live\none.",[358,429,431],{"id":430},"addresses","Addresses",[260,433,434,435,437,438,441],{},"The test address is ",[324,436,326],{}," rather than ",[324,439,440],{},"name.uat.yourdomain",".\nOne label rather than two, because a single certificate covers one level of\nsubdomain and a nested one would need a second certificate and a second DNS\nrecord for every workspace.",[260,443,444,445,448,449,452,453,403],{},"Either environment can also have a domain you own — ",[324,446,447],{},"app.client.com"," for live,\n",[324,450,451],{},"preview.client.com"," for testing. See\n",[401,454,124],{"href":125},[358,456,458],{"id":457},"settings-per-environment","Settings per environment",[260,460,461],{},"Several settings can apply to every environment or only to one:",[463,464,465,471,477,483],"ul",{},[466,467,468,470],"li",{},[414,469,159],{}," — a live payment key in the test application is how\ntest data reaches real customers.",[466,472,473,476],{},[414,474,475],{},"Search engines"," — test closed, live open, by default.",[466,478,479,482],{},[414,480,481],{},"Domains"," — one per environment.",[466,484,485,488],{},[414,486,487],{},"Access"," — the shared password and its sessions are per environment.",[358,490,492],{"id":491},"redeploying-keeps-the-data","Redeploying keeps the data",[260,494,495],{},"Deploying a new version into an environment replaces the code, not the database.\nRecords survive. What changes the data is deleting the application.",[405,497,498],{},[260,499,500,501,503],{},"Reprovisioning the ",[414,502,360],{}," does replace its database, and its data goes with\nit. The preview is a scratch copy — that is what it is for. Deployed\nenvironments are on permanent storage and are not affected.",{"title":505,"searchDepth":506,"depth":506,"links":507},"",3,[508,510,511,512,513,514,515],{"id":360,"depth":509,"text":277},2,{"id":369,"depth":509,"text":280},{"id":378,"depth":509,"text":283},{"id":387,"depth":509,"text":388},{"id":430,"depth":509,"text":431},{"id":457,"depth":509,"text":458},{"id":491,"depth":509,"text":492},"md",false,{},null,true,{"title":100,"description":103},"IbOj4CtJat4pCnEHzlm5iLt6O4Zp5JI4MRt0FjbBqnI",[524,525],{"title":95,"path":96,"stem":97,"description":98,"children":-1},{"title":105,"path":106,"stem":107,"description":108,"children":-1},1790202296892]