[{"data":1,"prerenderedAt":871},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fmain\u002Fmicroservices-quickstart":3},{"id":4,"title":5,"body":6,"description":859,"extension":860,"group":861,"meta":862,"navigation":293,"order":863,"path":864,"section":865,"seo":866,"source":867,"stem":868,"version":869,"__hash__":870},"docs\u002Fdocs\u002Fmain\u002Fmicroservices-quickstart.md","First microservice call",{"type":7,"value":8,"toc":852},"minimark",[9,18,23,30,241,244,267,271,274,519,522,632,635,642,646,653,685,696,710,716,720,755,758,761,765,768,816,827,830,848],[10,11,12,13,17],"p",{},"Use a supported patched Go toolchain (minimum 1.27.2). A monolith remains simpler: use ",[14,15,16],"code",{},"gonex new shop --module YOUR_MODULE"," unless you need independent services. This tutorial installs Gonex as a library\u002Ftool; do not clone the framework.",[19,20,22],"h2",{"id":21},"create-the-workspace","Create the workspace",[10,24,25,26,29],{},"Install a reviewed CLI version (",[14,27,28],{},"@main"," is a development snapshot, not a stable release). Replace example.com\u002Facme\u002Fcommerce with the Go module prefix you own before publishing contracts.",[31,32,37],"pre",{"className":33,"code":34,"language":35,"meta":36,"style":36},"language-sh shiki shiki-themes light-plus light-plus dark-plus","go install github.com\u002Famkargar\u002Fgonex\u002Fcmd\u002Fgonex@main\ngonex new commerce --module example.com\u002Facme\u002Fcommerce --arch microservices\ncd commerce\ngo mod tidy\ngo tool gonex create service identity --grpc\ngo tool gonex create service orders --http\ngo tool gonex create module users --service identity --transport grpc --version v1\ngo tool gonex create module orders --service orders --transport http\ngo tool gonex create client identity --service orders --module orders --version v1 --profile example --rpc UsersService.GetUsersMessage\n","sh","",[14,38,39,55,80,89,100,123,142,176,200],{"__ignoreMap":36},[40,41,44,48,52],"span",{"class":42,"line":43},"line",1,[40,45,47],{"class":46},"swoLU","go",[40,49,51],{"class":50},"sFD8J"," install",[40,53,54],{"class":50}," github.com\u002Famkargar\u002Fgonex\u002Fcmd\u002Fgonex@main\n",[40,56,58,61,64,67,71,74,77],{"class":42,"line":57},2,[40,59,60],{"class":46},"gonex",[40,62,63],{"class":50}," new",[40,65,66],{"class":50}," commerce",[40,68,70],{"class":69},"stxUP"," --module",[40,72,73],{"class":50}," example.com\u002Facme\u002Fcommerce",[40,75,76],{"class":69}," --arch",[40,78,79],{"class":50}," microservices\n",[40,81,83,86],{"class":42,"line":82},3,[40,84,85],{"class":46},"cd",[40,87,88],{"class":50}," commerce\n",[40,90,92,94,97],{"class":42,"line":91},4,[40,93,47],{"class":46},[40,95,96],{"class":50}," mod",[40,98,99],{"class":50}," tidy\n",[40,101,103,105,108,111,114,117,120],{"class":42,"line":102},5,[40,104,47],{"class":46},[40,106,107],{"class":50}," tool",[40,109,110],{"class":50}," gonex",[40,112,113],{"class":50}," create",[40,115,116],{"class":50}," service",[40,118,119],{"class":50}," identity",[40,121,122],{"class":69}," --grpc\n",[40,124,126,128,130,132,134,136,139],{"class":42,"line":125},6,[40,127,47],{"class":46},[40,129,107],{"class":50},[40,131,110],{"class":50},[40,133,113],{"class":50},[40,135,116],{"class":50},[40,137,138],{"class":50}," orders",[40,140,141],{"class":69}," --http\n",[40,143,145,147,149,151,153,156,159,162,164,167,170,173],{"class":42,"line":144},7,[40,146,47],{"class":46},[40,148,107],{"class":50},[40,150,110],{"class":50},[40,152,113],{"class":50},[40,154,155],{"class":50}," module",[40,157,158],{"class":50}," users",[40,160,161],{"class":69}," --service",[40,163,119],{"class":50},[40,165,166],{"class":69}," --transport",[40,168,169],{"class":50}," grpc",[40,171,172],{"class":69}," --version",[40,174,175],{"class":50}," v1\n",[40,177,179,181,183,185,187,189,191,193,195,197],{"class":42,"line":178},8,[40,180,47],{"class":46},[40,182,107],{"class":50},[40,184,110],{"class":50},[40,186,113],{"class":50},[40,188,155],{"class":50},[40,190,138],{"class":50},[40,192,161],{"class":69},[40,194,138],{"class":50},[40,196,166],{"class":69},[40,198,199],{"class":50}," http\n",[40,201,203,205,207,209,211,214,216,218,220,222,224,226,229,232,235,238],{"class":42,"line":202},9,[40,204,47],{"class":46},[40,206,107],{"class":50},[40,208,110],{"class":50},[40,210,113],{"class":50},[40,212,213],{"class":50}," client",[40,215,119],{"class":50},[40,217,161],{"class":69},[40,219,138],{"class":50},[40,221,70],{"class":69},[40,223,138],{"class":50},[40,225,172],{"class":69},[40,227,228],{"class":50}," v1",[40,230,231],{"class":69}," --profile",[40,233,234],{"class":50}," example",[40,236,237],{"class":69}," --rpc",[40,239,240],{"class":50}," UsersService.GetUsersMessage\n",[10,242,243],{},"There are seven creation commands, one explicit dependency-preparation step and one run command. Compilation\u002Fdownload time is environment dependent; an independent five-minute onboarding result has not been measured.",[10,245,246,247,250,251,254,255,258,259,262,263,266],{},"The ",[14,248,249],{},"example"," profile is deliberately limited to the descriptor-verified empty-request\u002Fstring-message contract just generated. It maps the selected RPC response to a plain string. It does not infer a real user\u002Forder schema. For your own contract use the default ",[14,252,253],{},"skeleton"," profile, implement your local interface\u002Ffield\u002Ferror mapping, then remove its explicit ",[14,256,257],{},"GONEX_TODO_..."," compile-time marker. ",[14,260,261],{},"doctor"," reports its file. ",[14,264,265],{},"raw"," retains the old typed-client-only workflow for advanced manual wiring.",[19,268,270],{"id":269},"make-the-two-user-owned-business-edits","Make the two user-owned business edits",[10,272,273],{},"Replace services\u002Forders\u002Fmodules\u002Forders\u002Fservice.go with:",[31,275,278],{"className":276,"code":277,"language":47,"meta":36,"style":36},"language-go shiki shiki-themes light-plus light-plus dark-plus","package orders\n\nimport \"context\"\n\ntype IdentityReader interface {\n    Message(context.Context) (string, error)\n}\n\ntype Service struct { identity IdentityReader }\n\nfunc NewService(identity IdentityReader) *Service {\n    return &Service{identity: identity}\n}\n\nfunc (s *Service) Message(ctx context.Context) (string, error) {\n    return s.identity.Message(ctx)\n}\n",[14,279,280,289,295,304,308,323,355,360,364,386,391,414,437,442,447,492,514],{"__ignoreMap":36},[40,281,282,285],{"class":42,"line":43},[40,283,284],{"class":69},"package",[40,286,288],{"class":287},"sopvc"," orders\n",[40,290,291],{"class":42,"line":57},[40,292,294],{"emptyLinePlaceholder":293},true,"\n",[40,296,297,301],{"class":42,"line":82},[40,298,300],{"class":299},"smUd-","import",[40,302,303],{"class":50}," \"context\"\n",[40,305,306],{"class":42,"line":91},[40,307,294],{"emptyLinePlaceholder":293},[40,309,310,313,316,319],{"class":42,"line":102},[40,311,312],{"class":69},"type",[40,314,315],{"class":287}," IdentityReader",[40,317,318],{"class":69}," interface",[40,320,322],{"class":321},"s_Yst"," {\n",[40,324,325,328,331,334,337,340,343,346,349,352],{"class":42,"line":125},[40,326,327],{"class":46},"    Message",[40,329,330],{"class":321},"(",[40,332,333],{"class":287},"context",[40,335,336],{"class":321},".",[40,338,339],{"class":287},"Context",[40,341,342],{"class":321},") (",[40,344,345],{"class":287},"string",[40,347,348],{"class":321},", ",[40,350,351],{"class":287},"error",[40,353,354],{"class":321},")\n",[40,356,357],{"class":42,"line":144},[40,358,359],{"class":321},"}\n",[40,361,362],{"class":42,"line":178},[40,363,294],{"emptyLinePlaceholder":293},[40,365,366,368,371,374,377,381,383],{"class":42,"line":202},[40,367,312],{"class":69},[40,369,370],{"class":287}," Service",[40,372,373],{"class":69}," struct",[40,375,376],{"class":321}," { ",[40,378,380],{"class":379},"sswaR","identity",[40,382,315],{"class":287},[40,384,385],{"class":321}," }\n",[40,387,389],{"class":42,"line":388},10,[40,390,294],{"emptyLinePlaceholder":293},[40,392,394,397,400,402,404,406,409,412],{"class":42,"line":393},11,[40,395,396],{"class":69},"func",[40,398,399],{"class":46}," NewService",[40,401,330],{"class":321},[40,403,380],{"class":379},[40,405,315],{"class":287},[40,407,408],{"class":321},") *",[40,410,411],{"class":287},"Service",[40,413,322],{"class":321},[40,415,417,420,423,425,428,430,433,435],{"class":42,"line":416},12,[40,418,419],{"class":299},"    return",[40,421,422],{"class":321}," &",[40,424,411],{"class":287},[40,426,427],{"class":321},"{",[40,429,380],{"class":379},[40,431,432],{"class":321},": ",[40,434,380],{"class":379},[40,436,359],{"class":321},[40,438,440],{"class":42,"line":439},13,[40,441,359],{"class":321},[40,443,445],{"class":42,"line":444},14,[40,446,294],{"emptyLinePlaceholder":293},[40,448,450,452,455,458,461,463,466,469,471,474,477,479,481,483,485,487,489],{"class":42,"line":449},15,[40,451,396],{"class":69},[40,453,454],{"class":321}," (",[40,456,457],{"class":379},"s ",[40,459,460],{"class":321},"*",[40,462,411],{"class":287},[40,464,465],{"class":321},") ",[40,467,468],{"class":46},"Message",[40,470,330],{"class":321},[40,472,473],{"class":379},"ctx",[40,475,476],{"class":287}," context",[40,478,336],{"class":321},[40,480,339],{"class":287},[40,482,342],{"class":321},[40,484,345],{"class":287},[40,486,348],{"class":321},[40,488,351],{"class":287},[40,490,491],{"class":321},") {\n",[40,493,495,497,500,502,504,506,508,510,512],{"class":42,"line":494},16,[40,496,419],{"class":299},[40,498,499],{"class":379}," s",[40,501,336],{"class":321},[40,503,380],{"class":379},[40,505,336],{"class":321},[40,507,468],{"class":46},[40,509,330],{"class":321},[40,511,473],{"class":379},[40,513,354],{"class":321},[40,515,517],{"class":42,"line":516},17,[40,518,359],{"class":321},[10,520,521],{},"This file has no Protobuf or framework imports. Replace only NewModuleService in services\u002Forders\u002Fmodules\u002Forders\u002Fmodule.go with:",[31,523,525],{"className":276,"code":524,"language":47,"meta":36,"style":36},"func NewModuleService(r *app.Registrar) (*Service, error) {\n    client, err := NewIdentityForModule(r)\n    if err != nil { return nil, err }\n    return NewService(client), nil\n}\n",[14,526,527,561,583,611,628],{"__ignoreMap":36},[40,528,529,531,534,536,539,542,545,547,550,553,555,557,559],{"class":42,"line":43},[40,530,396],{"class":69},[40,532,533],{"class":46}," NewModuleService",[40,535,330],{"class":321},[40,537,538],{"class":379},"r",[40,540,541],{"class":321}," *",[40,543,544],{"class":287},"app",[40,546,336],{"class":321},[40,548,549],{"class":287},"Registrar",[40,551,552],{"class":321},") (*",[40,554,411],{"class":287},[40,556,348],{"class":321},[40,558,351],{"class":287},[40,560,491],{"class":321},[40,562,563,566,568,571,574,577,579,581],{"class":42,"line":57},[40,564,565],{"class":379},"    client",[40,567,348],{"class":321},[40,569,570],{"class":379},"err",[40,572,573],{"class":321}," := ",[40,575,576],{"class":46},"NewIdentityForModule",[40,578,330],{"class":321},[40,580,538],{"class":379},[40,582,354],{"class":321},[40,584,585,588,591,594,597,599,602,605,607,609],{"class":42,"line":82},[40,586,587],{"class":299},"    if",[40,589,590],{"class":379}," err",[40,592,593],{"class":321}," != ",[40,595,596],{"class":69},"nil",[40,598,376],{"class":321},[40,600,601],{"class":299},"return",[40,603,604],{"class":69}," nil",[40,606,348],{"class":321},[40,608,570],{"class":379},[40,610,385],{"class":321},[40,612,613,615,617,619,622,625],{"class":42,"line":91},[40,614,419],{"class":299},[40,616,399],{"class":46},[40,618,330],{"class":321},[40,620,621],{"class":379},"client",[40,623,624],{"class":321},"), ",[40,626,627],{"class":69},"nil\n",[40,629,630],{"class":42,"line":102},[40,631,359],{"class":321},[10,633,634],{},"The generated helper creates one managed pool\u002Fconfig for this target, constructs the exact typed client, registers connection readiness and cleans up on helper failure. It does not choose your domain interface or alter your handwritten factory. Call it once in that factory. For multiple modules\u002Fversions, own the service bootstrap explicitly: share a managed rpc.NewClients pool and rpc.NewClientConfig, then use the generated NewIdentityClientWithConfig\u002FNewIdentityV2ClientWithConfig constructors. Do not call multiple convenience helpers for the same target\u002Fsecurity profile.",[10,636,637,638,641],{},"In services\u002Forders\u002Fmodules\u002Forders\u002Fhttp\u002Froutes.go, add ",[14,639,640],{},"Errors: []int{503, 504},"," to the Endpoint literal, so the API explicitly declares provider-unavailable responses. Adapt the generated service_test.go to the constructor you now own (inject a fake IdentityReader); the generator does not rewrite that test. These are application edits; no framework-owned registry needs manual changes.",[19,643,645],{"id":644},"run-locally","Run locally",[10,647,648,649,652],{},"The explicit root ",[14,650,651],{},"go mod tidy"," above prepares the CLI\u002Fframework dependencies. The generated go.work resolves local contracts source for the initial build. New services do not require a fictional contracts release, so no publication is needed for this first run. Service-level go mod tidy requires an actual published contracts version because tidy resolves that module independently of go.work. Prepare the root CLI module for initial local builds. Publication and isolated builds are a separate, explicit step below.",[31,654,656],{"className":33,"code":655,"language":35,"meta":36,"style":36},"go tool gonex doctor --dev-insecure\ngo tool gonex dev --dev-insecure\n",[14,657,658,672],{"__ignoreMap":36},[40,659,660,662,664,666,669],{"class":42,"line":43},[40,661,47],{"class":46},[40,663,107],{"class":50},[40,665,110],{"class":50},[40,667,668],{"class":50}," doctor",[40,670,671],{"class":69}," --dev-insecure\n",[40,673,674,676,678,680,683],{"class":42,"line":57},[40,675,47],{"class":46},[40,677,107],{"class":50},[40,679,110],{"class":50},[40,681,682],{"class":50}," dev",[40,684,671],{"class":69},[10,686,687,690,691,695],{},[14,688,689],{},"--dev-insecure"," prominently enables ",[692,693,694],"strong",{},"local loopback plaintext only",". The runner refuses it with GONEX_ENV=production and refuses contradictory TLS\u002Finsecure settings. No flag is persisted to production templates. Without it, configure server GRPC_TLS_CERT\u002FGRPC_TLS_KEY and client CLIENTS_IDENTITY_CA\u002FSERVER_NAME (plus client certificates when using mTLS). No credentials belong in gonex.yaml and no .env file is loaded automatically.",[10,697,698,699,705,706,709],{},"The console prefixes each service's output and prints configured HTTP\u002FgRPC addresses. Open the Orders address shown by doctor (",[700,701,702],"a",{"href":702,"rel":703},"http:\u002F\u002F127.0.0.1:8081\u002Forders",[704],"nofollow"," in this fresh tutorial). The response is ",[14,707,708],{},"{\"message\":\"users\"}",". Configured addresses are not readiness assertions; use \u002Freadyz and application logs. Ctrl+C stops all owned services. An unexpected child exit stops its siblings and returns a non-zero result.",[10,711,712,715],{},[14,713,714],{},"dev --service orders"," selects only Orders; it does not silently start Identity. Start its provider separately or it will become unready\u002Freturn a bounded 503. Readiness is connection readiness, not a promise that every business RPC is healthy. Mutating RPCs are never retried automatically.",[19,717,719],{"id":718},"choose-transports-and-override-local-addresses","Choose transports and override local addresses",[721,722,723,730,736,742,748],"ul",{},[724,725,726,729],"li",{},[14,727,728],{},"create service NAME --http",": HTTP-only listener.",[724,731,732,735],{},[14,733,734],{},"create service NAME --grpc",": gRPC-only listener, including the managed health server.",[724,737,738,741],{},[14,739,740],{},"create service NAME --http --grpc",": both listeners.",[724,743,744,747],{},[14,745,746],{},"create service NAME --transport none",": worker with no listener.",[724,749,750,751,754],{},"Existing ",[14,752,753],{},"create service NAME"," keeps its HTTP default. Module adapters and service listeners are distinct; changing a listener later requires an explicit catalog\u002Fconfiguration change, not editing a generated registry.",[10,756,757],{},"The caller-editable gonex.yaml owns only local service paths\u002Faddresses\u002Fdeclared client edges. .gonex.json owns generator metadata; go.mod owns dependency versions. The existing main.go\u002Fconfig\u002Fmodules layout is preserved.",[10,759,760],{},"Use GONEX_SERVICES_IDENTITY_GRPC_ADDRESS or GONEX_SERVICES_ORDERS_HTTP_ADDRESS to override individual listeners. Provider overrides flow to declared local clients unless CLIENTS_IDENTITY_ADDRESS explicitly overrides the target. Shared HTTP_ADDRESS\u002FGRPC_ADDRESS is accepted only when selecting one service; it is ambiguous for a multi-service run. The local catalog rejects non-loopback addresses; production deployment addresses belong to your normal per-process environment\u002Fconfiguration.",[19,762,764],{"id":763},"publish-contracts-and-deploy-independently","Publish contracts and deploy independently",[10,766,767],{},"New generators do not insert an unpublished contracts requirement. Older templates may contain a v0.1.0 placeholder; it is not a released Gonex contract. Publish contracts as a real Go module using your own repository\u002Fsubdirectory tags or an immutable Go module proxy. Set the actual published version in each consuming service's go.mod, then explicitly tidy\u002Ftest\u002Fbuild each service with GOWORK=off. Deployment must not use a local replace or require the workspace.",[31,769,771],{"className":33,"code":770,"language":35,"meta":36,"style":36},"# Run inside each consuming service, after publishing the actual contract version.\ngo get YOUR_CONTRACTS_MODULE@PUBLISHED_VERSION\ngo mod tidy\ngo test .\u002F...\ngo build .\u002F...\n",[14,772,773,779,789,797,807],{"__ignoreMap":36},[40,774,775],{"class":42,"line":43},[40,776,778],{"class":777},"sYH5r","# Run inside each consuming service, after publishing the actual contract version.\n",[40,780,781,783,786],{"class":42,"line":57},[40,782,47],{"class":46},[40,784,785],{"class":50}," get",[40,787,788],{"class":50}," YOUR_CONTRACTS_MODULE@PUBLISHED_VERSION\n",[40,790,791,793,795],{"class":42,"line":82},[40,792,47],{"class":46},[40,794,96],{"class":50},[40,796,99],{"class":50},[40,798,799,801,804],{"class":42,"line":91},[40,800,47],{"class":46},[40,802,803],{"class":50}," test",[40,805,806],{"class":50}," .\u002F...\n",[40,808,809,811,814],{"class":42,"line":102},[40,810,47],{"class":46},[40,812,813],{"class":50}," build",[40,815,806],{"class":50},[10,817,818,819,822,823,826],{},"Set GOWORK=off in the shell for those commands (PowerShell: ",[14,820,821],{},"$env:GOWORK='off'","). For an already prepared local catalog, ",[14,824,825],{},"gonex dev --isolated"," also uses GOWORK=off. Its builds disable module proxy\u002Fnetwork tool downloads, use -mod=readonly and require the chosen toolchain\u002Fdependencies to be installed beforehand. Go's normal build cache and local workspace checksum file may be populated; no silent tidy is performed.",[10,828,829],{},"CI rehearses this supported publication mechanism by publishing an immutable contracts zip\u002Fmod\u002Finfo fixture to a disposable file proxy, checking its SHA256, then resolving independent service modules without replacements\u002Fworkspace resolution. That fixture is not a public stable release. The same installed public CLI and mapped tutorial are checked on Linux\u002FWindows.",[10,831,832,833,348,837,841,842,847],{},"See ",[700,834,836],{"href":835},"\u002Fdocs\u002Fmain\u002Fmicroservices-compatibility\u002F","compatibility",[700,838,840],{"href":839},"\u002Fdocs\u002Fmain\u002Fmicroservices-troubleshooting\u002F","troubleshooting"," and ",[700,843,846],{"href":844,"rel":845},"https:\u002F\u002Fgithub.com\u002Famkargar\u002Fgonex\u002Fblob\u002Fmain\u002Fdocs\u002Fmicroservices-dx\u002Facceptance.md",[704],"acceptance"," for exact scope and evidence.",[849,850,851],"style",{},"html pre.shiki code .swoLU, html code.shiki .swoLU{--shiki-light:#795E26;--shiki-default:#795E26;--shiki-dark:#DCDCAA}html pre.shiki code .sFD8J, html code.shiki .sFD8J{--shiki-light:#A31515;--shiki-default:#A31515;--shiki-dark:#CE9178}html pre.shiki code .stxUP, html code.shiki .stxUP{--shiki-light:#0000FF;--shiki-default:#0000FF;--shiki-dark:#569CD6}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 .sopvc, html code.shiki .sopvc{--shiki-light:#267F99;--shiki-default:#267F99;--shiki-dark:#4EC9B0}html pre.shiki code .smUd-, html code.shiki .smUd-{--shiki-light:#AF00DB;--shiki-default:#AF00DB;--shiki-dark:#C586C0}html pre.shiki code .s_Yst, html code.shiki .s_Yst{--shiki-light:#000000;--shiki-default:#000000;--shiki-dark:#D4D4D4}html pre.shiki code .sswaR, html code.shiki .sswaR{--shiki-light:#001080;--shiki-default:#001080;--shiki-dark:#9CDCFE}html pre.shiki code .sYH5r, html code.shiki .sYH5r{--shiki-light:#008000;--shiki-default:#008000;--shiki-dark:#6A9955}",{"title":36,"searchDepth":57,"depth":57,"links":853},[854,855,856,857,858],{"id":21,"depth":57,"text":22},{"id":269,"depth":57,"text":270},{"id":644,"depth":57,"text":645},{"id":718,"depth":57,"text":719},{"id":763,"depth":57,"text":764},"Install Gonex, wire Orders to Identity explicitly and run local services with a single supervised command.","md","APPLICATION DESIGN",{},131,"\u002Fdocs\u002Fmain\u002Fmicroservices-quickstart","build",{"title":5,"description":859},"microservices-dx\u002Fquickstart.md","docs\u002Fmain\u002Fmicroservices-quickstart","main","YYpdoWs4Pm3JXsIENtG4Zd7cKNrtgqh1ObsP8yATQz0",1792521640339]