[{"data":1,"prerenderedAt":981},["ShallowReactive",2],{"fougere:post.list:{}":3,"docs:\u002Fdocs\u002Fadopt\u002Fnew-project":6,"docs-uses":674,"docs-nav":843},{"items":4,"hasMore":5},[],false,{"id":7,"title":8,"body":9,"description":661,"extension":662,"forms":663,"kind":665,"meta":666,"navigation":566,"path":667,"seo":668,"stem":669,"step":670,"uses":671,"__hash__":673},"docs\u002Fdocs\u002F7.adopt\u002F1.new-project.md","Start a project",{"type":10,"value":11,"toc":654},"minimark",[12,17,91,95,266,275,381,389,403,420,423,441,445,453,481,515,523,527,625,638,650],[13,14,16],"h2",{"id":15},"create-it","Create it",[18,19,23,49,63,77],"code-group",{"className":20,"sync":22},[21],"managers","pm",[24,25,31],"pre",{"className":26,"code":27,"filename":28,"language":29,"meta":30,"style":30},"language-bash shiki shiki-themes material-theme-lighter fougere-pastel material-theme-palenight","npm create fougere\n","npm","bash","",[32,33,34],"code",{"__ignoreMap":30},[35,36,39,42,46],"span",{"class":37,"line":38},"line",1,[35,40,28],{"class":41},"sV8pK",[35,43,45],{"class":44},"sN-8n"," create",[35,47,48],{"class":44}," fougere\n",[24,50,53],{"className":26,"code":51,"filename":52,"language":29,"meta":30,"style":30},"pnpm create fougere\n","pnpm",[32,54,55],{"__ignoreMap":30},[35,56,57,59,61],{"class":37,"line":38},[35,58,52],{"class":41},[35,60,45],{"class":44},[35,62,48],{"class":44},[24,64,67],{"className":26,"code":65,"filename":66,"language":29,"meta":30,"style":30},"bun create fougere\n","bun",[32,68,69],{"__ignoreMap":30},[35,70,71,73,75],{"class":37,"line":38},[35,72,66],{"class":41},[35,74,45],{"class":44},[35,76,48],{"class":44},[24,78,81],{"className":26,"code":79,"filename":80,"language":29,"meta":30,"style":30},"yarn create fougere\n","yarn",[32,82,83],{"__ignoreMap":30},[35,84,85,87,89],{"class":37,"line":38},[35,86,80],{"class":41},[35,88,45],{"class":44},[35,90,48],{"class":44},[92,93,94],"p",{},"It asks for a name, the fronds to start from and an app. The same project with no question:",[18,96,98,149,188,227],{"className":97,"sync":22},[21],[24,99,101],{"className":26,"code":100,"filename":28,"language":29,"meta":30,"style":30},"npm create fougere my-blog --frond blog --app nuxt   # a blog frond, and a Nuxt app calling it\nnpm create fougere my-blog --blank                   # the project alone — the tutorial starts here\n",[32,102,103,132],{"__ignoreMap":30},[35,104,105,107,109,112,115,119,122,125,128],{"class":37,"line":38},[35,106,28],{"class":41},[35,108,45],{"class":44},[35,110,111],{"class":44}," fougere",[35,113,114],{"class":44}," my-blog",[35,116,118],{"class":117},"svHQO"," --frond",[35,120,121],{"class":44}," blog",[35,123,124],{"class":117}," --app",[35,126,127],{"class":44}," nuxt",[35,129,131],{"class":130},"skXKP","   # a blog frond, and a Nuxt app calling it\n",[35,133,135,137,139,141,143,146],{"class":37,"line":134},2,[35,136,28],{"class":41},[35,138,45],{"class":44},[35,140,111],{"class":44},[35,142,114],{"class":44},[35,144,145],{"class":117}," --blank",[35,147,148],{"class":130},"                   # the project alone — the tutorial starts here\n",[24,150,152],{"className":26,"code":151,"filename":52,"language":29,"meta":30,"style":30},"pnpm create fougere my-blog --frond blog --app nuxt   # a blog frond, and a Nuxt app calling it\npnpm create fougere my-blog --blank                   # the project alone — the tutorial starts here\n",[32,153,154,174],{"__ignoreMap":30},[35,155,156,158,160,162,164,166,168,170,172],{"class":37,"line":38},[35,157,52],{"class":41},[35,159,45],{"class":44},[35,161,111],{"class":44},[35,163,114],{"class":44},[35,165,118],{"class":117},[35,167,121],{"class":44},[35,169,124],{"class":117},[35,171,127],{"class":44},[35,173,131],{"class":130},[35,175,176,178,180,182,184,186],{"class":37,"line":134},[35,177,52],{"class":41},[35,179,45],{"class":44},[35,181,111],{"class":44},[35,183,114],{"class":44},[35,185,145],{"class":117},[35,187,148],{"class":130},[24,189,191],{"className":26,"code":190,"filename":66,"language":29,"meta":30,"style":30},"bun create fougere my-blog --frond blog --app nuxt   # a blog frond, and a Nuxt app calling it\nbun create fougere my-blog --blank                   # the project alone — the tutorial starts here\n",[32,192,193,213],{"__ignoreMap":30},[35,194,195,197,199,201,203,205,207,209,211],{"class":37,"line":38},[35,196,66],{"class":41},[35,198,45],{"class":44},[35,200,111],{"class":44},[35,202,114],{"class":44},[35,204,118],{"class":117},[35,206,121],{"class":44},[35,208,124],{"class":117},[35,210,127],{"class":44},[35,212,131],{"class":130},[35,214,215,217,219,221,223,225],{"class":37,"line":134},[35,216,66],{"class":41},[35,218,45],{"class":44},[35,220,111],{"class":44},[35,222,114],{"class":44},[35,224,145],{"class":117},[35,226,148],{"class":130},[24,228,230],{"className":26,"code":229,"filename":80,"language":29,"meta":30,"style":30},"yarn create fougere my-blog --frond blog --app nuxt   # a blog frond, and a Nuxt app calling it\nyarn create fougere my-blog --blank                   # the project alone — the tutorial starts here\n",[32,231,232,252],{"__ignoreMap":30},[35,233,234,236,238,240,242,244,246,248,250],{"class":37,"line":38},[35,235,80],{"class":41},[35,237,45],{"class":44},[35,239,111],{"class":44},[35,241,114],{"class":44},[35,243,118],{"class":117},[35,245,121],{"class":44},[35,247,124],{"class":117},[35,249,127],{"class":44},[35,251,131],{"class":130},[35,253,254,256,258,260,262,264],{"class":37,"line":134},[35,255,80],{"class":41},[35,257,45],{"class":44},[35,259,111],{"class":44},[35,261,114],{"class":44},[35,263,145],{"class":117},[35,265,148],{"class":130},[92,267,268,269,274],{},"The project is written for the package manager that ran the command — see\n",[270,271,273],"a",{"href":272},"\u002Freference\u002Fcli#which-package-manager","the CLI",". The last lines it prints are the next commands, in\nthat package manager's words:",[18,276,278,310,333,358],{"className":277,"sync":22},[21],[24,279,281],{"className":26,"code":280,"filename":28,"language":29,"meta":30,"style":30},"cd my-blog\nnpm install\nnpm run dev\n",[32,282,283,292,299],{"__ignoreMap":30},[35,284,285,289],{"class":37,"line":38},[35,286,288],{"class":287},"s4mR9","cd",[35,290,291],{"class":44}," my-blog\n",[35,293,294,296],{"class":37,"line":134},[35,295,28],{"class":41},[35,297,298],{"class":44}," install\n",[35,300,302,304,307],{"class":37,"line":301},3,[35,303,28],{"class":41},[35,305,306],{"class":44}," run",[35,308,309],{"class":44}," dev\n",[24,311,313],{"className":26,"code":312,"filename":52,"language":29,"meta":30,"style":30},"cd my-blog\npnpm install\npnpm dev\n",[32,314,315,321,327],{"__ignoreMap":30},[35,316,317,319],{"class":37,"line":38},[35,318,288],{"class":287},[35,320,291],{"class":44},[35,322,323,325],{"class":37,"line":134},[35,324,52],{"class":41},[35,326,298],{"class":44},[35,328,329,331],{"class":37,"line":301},[35,330,52],{"class":41},[35,332,309],{"class":44},[24,334,336],{"className":26,"code":335,"filename":66,"language":29,"meta":30,"style":30},"cd my-blog\nbun install\nbun run dev\n",[32,337,338,344,350],{"__ignoreMap":30},[35,339,340,342],{"class":37,"line":38},[35,341,288],{"class":287},[35,343,291],{"class":44},[35,345,346,348],{"class":37,"line":134},[35,347,66],{"class":41},[35,349,298],{"class":44},[35,351,352,354,356],{"class":37,"line":301},[35,353,66],{"class":41},[35,355,306],{"class":44},[35,357,309],{"class":44},[24,359,361],{"className":26,"code":360,"filename":80,"language":29,"meta":30,"style":30},"cd my-blog\nyarn install\nyarn dev\n",[32,362,363,369,375],{"__ignoreMap":30},[35,364,365,367],{"class":37,"line":38},[35,366,288],{"class":287},[35,368,291],{"class":44},[35,370,371,373],{"class":37,"line":134},[35,372,80],{"class":41},[35,374,298],{"class":44},[35,376,377,379],{"class":37,"line":301},[35,378,80],{"class":41},[35,380,309],{"class":44},[13,382,384,385,388],{"id":383},"the-fougere-command","The ",[32,386,387],{},"fougere"," command",[92,390,391,392,395,396,399,400,402],{},"The project installs the CLI locally, so ",[32,393,394],{},"npx fougere migrate"," (or ",[32,397,398],{},"bunx",") runs it from inside.\nTo type ",[32,401,387],{}," alone, install it globally once:",[24,404,406],{"className":26,"code":405,"language":29,"meta":30,"style":30},"npm install --global fougere\n",[32,407,408],{"__ignoreMap":30},[35,409,410,412,415,418],{"class":37,"line":38},[35,411,28],{"class":41},[35,413,414],{"class":44}," install",[35,416,417],{"class":117}," --global",[35,419,48],{"class":44},[92,421,422],{},"Inside a project, the global command hands over to the project's own CLI, so it always runs the\nversion the project pins.",[424,425,426],"note",{},[92,427,428,432,433,436,437,440],{},[429,430,431],"strong",{},"Alpha."," The ",[32,434,435],{},"@fougere\u002F*"," packages are on npm under the ",[32,438,439],{},"alpha"," tag: the version is the whole\npromise, and the surface can still move.",[13,442,444],{"id":443},"what-you-get","What you get",[24,446,451],{"className":447,"code":449,"language":450},[448],"language-text","my-blog\u002F\n  fougere.config.ts       ← how the app runs: database, protocols, where each frond runs\n  package.json            ← the project; its apps are its members once it has one\n  tsconfig.json           ← types the fronds and the config; each app keeps its own\n  fronds\u002F\n    blog\u002F                 ← one domain of your app (--frond blog)\n      entities\u002FPost.ts\n      handlers\u002FPostHandler.ts\n  apps\u002F\n    nuxt\u002F                 ← a Nuxt app (--app nuxt), written by create-nuxt\n      nuxt.config.ts      ← modules: ['@fougere\u002Fnuxt']\n      app\u002Fpages\u002Fposts.vue ← a page calling the blog\n  tests\u002Fboots.test.ts     ← npm test: the project boots as the config places it\n  AGENTS.md, CLAUDE.md    ← what a coding agent runs before it says it is done\n","text",[32,452,449],{"__ignoreMap":30},[92,454,455,456,459,460,464,465,468,469,472,473,476,477,480],{},"Each directory under ",[32,457,458],{},"fronds\u002F"," is a ",[270,461,463],{"href":462},"\u002Fdocs\u002Fconcepts\u002Ffrond","frond",". The folder a file sits in says\nwhat it is — an entity in ",[32,466,467],{},"entities\u002F",", a handler in ",[32,470,471],{},"handlers\u002F",", a service in ",[32,474,475],{},"services\u002F"," — and\nnothing is registered by hand. A page imports from a frond by its name, with no ",[32,478,479],{},"package.json"," and\nno workspace entry:",[24,482,486],{"className":483,"code":484,"language":485,"meta":30,"style":30},"language-ts shiki shiki-themes material-theme-lighter fougere-pastel material-theme-palenight","import Post from '@fronds\u002Fblog\u002Fentities\u002FPost.js';\n","ts",[32,487,488],{"__ignoreMap":30},[35,489,490,494,498,501,505,508,511],{"class":37,"line":38},[35,491,493],{"class":492},"sK6XW","import",[35,495,497],{"class":496},"sPEhv"," Post ",[35,499,500],{"class":492},"from",[35,502,504],{"class":503},"sDDC1"," '",[35,506,507],{"class":44},"@fronds\u002Fblog\u002Fentities\u002FPost.js",[35,509,510],{"class":503},"'",[35,512,514],{"class":513},"s15xx",";\n",[92,516,517,518,522],{},"To give a frond another name than its directory's, see ",[270,519,521],{"href":520},"\u002Fdocs\u002Fextending\u002Fscan","How the scan reads a project",".",[13,524,526],{"id":525},"the-config-it-writes","The config it writes",[24,528,530],{"className":483,"code":529,"language":485,"meta":30,"style":30},"\u002F\u002F fougere.config.ts\nimport { defineFougere } from '@fougere\u002Fcore';\n\nexport default defineFougere({\n  fronds: { '@fougere\u002Flog': {} },\n});\n",[32,531,532,537,562,568,586,614],{"__ignoreMap":30},[35,533,534],{"class":37,"line":38},[35,535,536],{"class":130},"\u002F\u002F fougere.config.ts\n",[35,538,539,541,544,547,550,553,555,558,560],{"class":37,"line":134},[35,540,493],{"class":492},[35,542,543],{"class":513}," {",[35,545,546],{"class":496}," defineFougere",[35,548,549],{"class":513}," }",[35,551,552],{"class":492}," from",[35,554,504],{"class":503},[35,556,557],{"class":44},"@fougere\u002Fcore",[35,559,510],{"class":503},[35,561,514],{"class":513},[35,563,564],{"class":37,"line":301},[35,565,567],{"emptyLinePlaceholder":566},true,"\n",[35,569,571,574,577,579,583],{"class":37,"line":570},4,[35,572,573],{"class":492},"export",[35,575,576],{"class":492}," default",[35,578,546],{"class":287},[35,580,582],{"class":581},"srlTG","(",[35,584,585],{"class":513},"{\n",[35,587,589,593,596,598,600,604,606,608,611],{"class":37,"line":588},5,[35,590,592],{"class":591},"sHtqg","  fronds",[35,594,595],{"class":513},":",[35,597,543],{"class":513},[35,599,504],{"class":503},[35,601,603],{"class":602},"sK7Y8","@fougere\u002Flog",[35,605,510],{"class":503},[35,607,595],{"class":513},[35,609,610],{"class":513}," {}",[35,612,613],{"class":513}," },\n",[35,615,617,620,623],{"class":37,"line":616},6,[35,618,619],{"class":513},"}",[35,621,622],{"class":581},")",[35,624,514],{"class":513},[92,626,627,629,630,633,634,522],{},[32,628,603],{}," writes two lines per call in the terminal. Nothing else is said, so the defaults hold:\nevery frond runs in the app's process, and rows stay ",[429,631,632],{},"in memory"," — the boot warns, and they are gone\nwhen it stops. One line keeps them in SQLite: ",[270,635,637],{"href":636},"\u002Fdocs\u002Fdata\u002Fsql","SQLite or Postgres",[92,639,640,641,645,646,522],{},"Every key, with what answers it: ",[270,642,644],{"href":643},"\u002Freference\u002Fconfig","fougere.config.ts",". To learn the rest by building\na blog, follow the ",[270,647,649],{"href":648},"\u002Ftutorial\u002F0-start","tutorial",[651,652,653],"style",{},"html pre.shiki code .sV8pK, html code.shiki .sV8pK{--shiki-light:#E2931D;--shiki-default:#C9B6EA;--shiki-dark:#FFCB6B}html pre.shiki code .sN-8n, html code.shiki .sN-8n{--shiki-light:#91B859;--shiki-default:#EE9F6B;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .svHQO, html code.shiki .svHQO{--shiki-light:#91B859;--shiki-default:#8FCF86;--shiki-dark:#C3E88D}html pre.shiki code .skXKP, html code.shiki .skXKP{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#7D8C80;--shiki-default-font-style:inherit;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s4mR9, html code.shiki .s4mR9{--shiki-light:#6182B8;--shiki-default:#C9B6EA;--shiki-dark:#82AAFF}html pre.shiki code .sK6XW, html code.shiki .sK6XW{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#8FCF86;--shiki-default-font-style:inherit;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sPEhv, html code.shiki .sPEhv{--shiki-light:#90A4AE;--shiki-default:#DDE5DA;--shiki-dark:#BABED8}html pre.shiki code .sDDC1, html code.shiki .sDDC1{--shiki-light:#39ADB5;--shiki-default:#EE9F6B;--shiki-dark:#89DDFF}html pre.shiki code .s15xx, html code.shiki .s15xx{--shiki-light:#39ADB5;--shiki-default:#A3B0A5;--shiki-dark:#89DDFF}html pre.shiki code .srlTG, html code.shiki .srlTG{--shiki-light:#90A4AE;--shiki-default:#A3B0A5;--shiki-dark:#BABED8}html pre.shiki code .sHtqg, html code.shiki .sHtqg{--shiki-light:#E53935;--shiki-default:#93CFC0;--shiki-dark:#F07178}html pre.shiki code .sK7Y8, html code.shiki .sK7Y8{--shiki-light:#E53935;--shiki-default:#EE9F6B;--shiki-dark:#F07178}",{"title":30,"searchDepth":134,"depth":134,"links":655},[656,657,659,660],{"id":15,"depth":134,"text":16},{"id":383,"depth":134,"text":658},"The fougere command",{"id":443,"depth":134,"text":444},{"id":525,"depth":134,"text":526},"What `npm create fougere` writes, and how to run it.","md",[664],"npm create fougere","task",{},"\u002Fdocs\u002Fadopt\u002Fnew-project",{"title":8,"description":661},"docs\u002F7.adopt\u002F1.new-project",null,[463,672],"configuration","51qEdNPpFbNugoSMF5MvOsv16y4Sr1xt4YixF71cW-0",[675,678,681,684,686,689,692,695,698,703,708,711,715,719,723,727,731,736,740,744,749,753,758,762,766,770,774,778,782,786,790,792,796,800,804,808,812,813,816,819,822,825,828,831,834,837,840],{"path":676,"title":677,"uses":670},"\u002Fdocs\u002Fconcepts\u002Fentity","Entity",{"path":679,"title":680,"uses":670},"\u002Fdocs\u002Fconcepts\u002Fhandler","Handler",{"path":682,"title":683,"uses":670},"\u002Fdocs\u002Fconcepts\u002Frepository","Repository",{"path":462,"title":685,"uses":670},"Frond",{"path":687,"title":688,"uses":670},"\u002Fdocs\u002Fconcepts\u002Ffacade","Facade",{"path":690,"title":691,"uses":670},"\u002Fdocs\u002Fconcepts\u002Ffact","Fact",{"path":693,"title":694,"uses":670},"\u002Fdocs\u002Fconcepts\u002Fport","Port",{"path":696,"title":697,"uses":670},"\u002Fdocs\u002Fconcepts\u002Fconfiguration","Configuration",{"path":699,"title":700,"uses":701},"\u002Fdocs\u002Faccess\u002Fauthentication","Authentication",[702,463],"port",{"path":704,"title":705,"uses":706},"\u002Fdocs\u002Faccess\u002Fstate","Keep a caller's state",[672,707],"handler",{"path":636,"title":637,"uses":709},[710,672],"entity",{"path":712,"title":713,"uses":714},"\u002Fdocs\u002Fdata\u002Fseveral-databases","Several databases",[672,710],{"path":716,"title":717,"uses":718},"\u002Fdocs\u002Fdata\u002Fcomputed-field","A computed field",[710,702],{"path":720,"title":721,"uses":722},"\u002Fdocs\u002Fdata\u002Fevolve","Evolve a schema",[710],{"path":724,"title":725,"uses":726},"\u002Fdocs\u002Fdata\u002Fseeds","Seed data",[710],{"path":728,"title":729,"uses":730},"\u002Fdocs\u002Fdata\u002Fvalues","Read settings and secrets",[710,672],{"path":732,"title":733,"uses":734},"\u002Fdocs\u002Fdata\u002Fmirror","Mirror a source you cannot query",[735],"repository",{"path":737,"title":738,"uses":739},"\u002Fdocs\u002Fdata\u002Ftogether","Two writes as one",[735],{"path":741,"title":742,"uses":743},"\u002Fdocs\u002Fbehaviour\u002Faround-every-call","Around every call",[702,463],{"path":745,"title":746,"uses":747},"\u002Fdocs\u002Fbehaviour\u002Ffinish-a-fact","Finish a fact",[748],"fact",{"path":750,"title":751,"uses":752},"\u002Fdocs\u002Fserve\u002Frest-graphql","REST, OpenAPI, GraphQL",[707,672],{"path":754,"title":755,"uses":756},"\u002Fdocs\u002Fserve\u002Fpages","Pages: queries and commands",[707,757],"facade",{"path":759,"title":760,"uses":761},"\u002Fdocs\u002Fserve\u002Fforms","A form",[710],{"path":763,"title":764,"uses":765},"\u002Fdocs\u002Fserve\u002Fadmin","An admin panel",[707],{"path":767,"title":768,"uses":769},"\u002Fdocs\u002Frun\u002Fdeploy","Deploy a split",[672,463],{"path":771,"title":772,"uses":773},"\u002Fdocs\u002Frun\u002Fsecure","Secure calls between processes",[672,463],{"path":775,"title":776,"uses":777},"\u002Fdocs\u002Frun\u002Flifecycle","Reload and shut down",[672],{"path":779,"title":780,"uses":781},"\u002Fdocs\u002Frun\u002Fobserve","Observe",[672,707],{"path":783,"title":784,"uses":785},"\u002Fdocs\u002Frun\u002Fdev-panel","The dev panel",[707],{"path":787,"title":788,"uses":789},"\u002Fdocs\u002Frun\u002Ftest","Test",[710,702],{"path":667,"title":8,"uses":791},[463,672],{"path":793,"title":794,"uses":795},"\u002Fdocs\u002Fadopt\u002Fexisting-app","Add Fougere to an existing app",[463,672],{"path":797,"title":798,"uses":799},"\u002Fdocs\u002Fadopt\u002Fbring-your-schema","Bring your schema",[710],{"path":801,"title":802,"uses":803},"\u002Fdocs\u002Fadopt\u002Fhosts","Pick a host",[672],{"path":805,"title":806,"uses":807},"\u002Fdocs\u002Fadopt\u002Fanother-repository","A frond from another repository",[757,463],{"path":809,"title":810,"uses":811},"\u002Fdocs\u002Fadopt\u002Fdemos","Demos",[],{"path":520,"title":521,"uses":670},{"path":814,"title":815,"uses":670},"\u002Fdocs\u002Fextending\u002Fwithout-compiler","Boot without the compiler",{"path":817,"title":818,"uses":670},"\u002Fdocs\u002Fextending\u002Fboot","The boot, step by step",{"path":820,"title":821,"uses":670},"\u002Fdocs\u002Fextending\u002Fcard-and-wire","The card and the wire",{"path":823,"title":824,"uses":670},"\u002Fdocs\u002Fextending\u002Fextension-points","Registries and extension points",{"path":826,"title":827,"uses":670},"\u002Fdocs\u002Fextending\u002Fvocabulary","Teach a word",{"path":829,"title":830,"uses":670},"\u002Fdocs\u002Fextending\u002Fextensions","Run code at boot and shutdown",{"path":832,"title":833,"uses":670},"\u002Fdocs\u002Fextending\u002Fsource-adapter","Write a source adapter",{"path":835,"title":836,"uses":670},"\u002Fdocs\u002Fextending\u002Fsurface","Write a surface",{"path":838,"title":839,"uses":670},"\u002Fdocs\u002Fextending\u002Fforeign-frond","A frond in another language",{"path":841,"title":842,"uses":670},"\u002Fdocs","What is Fougere",[844],{"title":845,"path":841,"stem":846,"children":847,"page":-1},"Docs","docs",[848,850,871,880,901,910,923,940,956],{"title":842,"path":841,"stem":849},"docs\u002Findex",{"title":851,"path":852,"stem":853,"children":854,"page":5},"Concepts","\u002Fdocs\u002Fconcepts","docs\u002F1.concepts",[855,857,859,861,863,865,867,869],{"title":677,"path":676,"stem":856},"docs\u002F1.concepts\u002F1.entity",{"title":680,"path":679,"stem":858},"docs\u002F1.concepts\u002F2.handler",{"title":683,"path":682,"stem":860},"docs\u002F1.concepts\u002F3.repository",{"title":685,"path":462,"stem":862},"docs\u002F1.concepts\u002F4.frond",{"title":688,"path":687,"stem":864},"docs\u002F1.concepts\u002F5.facade",{"title":691,"path":690,"stem":866},"docs\u002F1.concepts\u002F6.fact",{"title":694,"path":693,"stem":868},"docs\u002F1.concepts\u002F7.port",{"title":697,"path":696,"stem":870},"docs\u002F1.concepts\u002F8.configuration",{"title":872,"path":873,"stem":874,"children":875,"page":5},"Access","\u002Fdocs\u002Faccess","docs\u002F2.access",[876,878],{"title":700,"path":699,"stem":877},"docs\u002F2.access\u002F1.authentication",{"title":705,"path":704,"stem":879},"docs\u002F2.access\u002F2.state",{"title":881,"path":882,"stem":883,"children":884,"page":5},"Data","\u002Fdocs\u002Fdata","docs\u002F3.data",[885,887,889,891,893,895,897,899],{"title":637,"path":636,"stem":886},"docs\u002F3.data\u002F1.sql",{"title":713,"path":712,"stem":888},"docs\u002F3.data\u002F2.several-databases",{"title":717,"path":716,"stem":890},"docs\u002F3.data\u002F3.computed-field",{"title":721,"path":720,"stem":892},"docs\u002F3.data\u002F4.evolve",{"title":725,"path":724,"stem":894},"docs\u002F3.data\u002F5.seeds",{"title":729,"path":728,"stem":896},"docs\u002F3.data\u002F6.values",{"title":733,"path":732,"stem":898},"docs\u002F3.data\u002F7.mirror",{"title":738,"path":737,"stem":900},"docs\u002F3.data\u002F8.together",{"title":902,"path":903,"stem":904,"children":905,"page":5},"Behaviour","\u002Fdocs\u002Fbehaviour","docs\u002F4.behaviour",[906,908],{"title":742,"path":741,"stem":907},"docs\u002F4.behaviour\u002F1.around-every-call",{"title":746,"path":745,"stem":909},"docs\u002F4.behaviour\u002F2.finish-a-fact",{"title":911,"path":912,"stem":913,"children":914,"page":5},"Serve","\u002Fdocs\u002Fserve","docs\u002F5.serve",[915,917,919,921],{"title":751,"path":750,"stem":916},"docs\u002F5.serve\u002F1.rest-graphql",{"title":755,"path":754,"stem":918},"docs\u002F5.serve\u002F2.pages",{"title":760,"path":759,"stem":920},"docs\u002F5.serve\u002F3.forms",{"title":764,"path":763,"stem":922},"docs\u002F5.serve\u002F4.admin",{"title":924,"path":925,"stem":926,"children":927,"page":5},"Run","\u002Fdocs\u002Frun","docs\u002F6.run",[928,930,932,934,936,938],{"title":768,"path":767,"stem":929},"docs\u002F6.run\u002F1.deploy",{"title":772,"path":771,"stem":931},"docs\u002F6.run\u002F2.secure",{"title":776,"path":775,"stem":933},"docs\u002F6.run\u002F3.lifecycle",{"title":780,"path":779,"stem":935},"docs\u002F6.run\u002F4.observe",{"title":784,"path":783,"stem":937},"docs\u002F6.run\u002F5.dev-panel",{"title":788,"path":787,"stem":939},"docs\u002F6.run\u002F6.test",{"title":941,"path":942,"stem":943,"children":944,"page":5},"Adopt","\u002Fdocs\u002Fadopt","docs\u002F7.adopt",[945,946,948,950,952,954],{"title":8,"path":667,"stem":669},{"title":794,"path":793,"stem":947},"docs\u002F7.adopt\u002F2.existing-app",{"title":798,"path":797,"stem":949},"docs\u002F7.adopt\u002F3.bring-your-schema",{"title":802,"path":801,"stem":951},"docs\u002F7.adopt\u002F4.hosts",{"title":806,"path":805,"stem":953},"docs\u002F7.adopt\u002F5.another-repository",{"title":810,"path":809,"stem":955},"docs\u002F7.adopt\u002F6.demos",{"title":957,"path":958,"stem":959,"children":960,"page":5},"Extending","\u002Fdocs\u002Fextending","docs\u002F8.extending",[961,963,965,967,969,971,973,975,977,979],{"title":521,"path":520,"stem":962},"docs\u002F8.extending\u002F1.scan",{"title":815,"path":814,"stem":964},"docs\u002F8.extending\u002F10.without-compiler",{"title":818,"path":817,"stem":966},"docs\u002F8.extending\u002F2.boot",{"title":821,"path":820,"stem":968},"docs\u002F8.extending\u002F3.card-and-wire",{"title":824,"path":823,"stem":970},"docs\u002F8.extending\u002F4.extension-points",{"title":827,"path":826,"stem":972},"docs\u002F8.extending\u002F5.vocabulary",{"title":830,"path":829,"stem":974},"docs\u002F8.extending\u002F6.extensions",{"title":833,"path":832,"stem":976},"docs\u002F8.extending\u002F7.source-adapter",{"title":836,"path":835,"stem":978},"docs\u002F8.extending\u002F8.surface",{"title":839,"path":838,"stem":980},"docs\u002F8.extending\u002F9.foreign-frond",1794396614902]