[{"data":1,"prerenderedAt":213},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fmain\u002Fproject-structure":3},{"id":4,"title":5,"body":6,"description":200,"extension":201,"group":202,"meta":203,"navigation":204,"order":205,"path":206,"section":207,"seo":208,"source":209,"stem":210,"version":211,"__hash__":212},"docs\u002Fdocs\u002Fmain\u002Fproject-structure.md","Organize your API project",{"type":7,"value":8,"toc":194},"minimark",[9,14,31,41,47,51,103,112,116,127,131,187,190],[10,11,13],"h2",{"id":12},"the-generated-layout","The generated layout",[15,16,17,18,22,23,26,27,30],"p",{},"Start with ",[19,20,21],"code",{},"gonex new shop --module example.com\u002Facme\u002Fshop",", then ",[19,24,25],{},"go mod tidy"," and ",[19,28,29],{},"go tool gonex create module users"," inside shop:",[32,33,39],"pre",{"className":34,"code":36,"language":37,"meta":38},[35],"language-text","shop\u002F\n├── go.mod\n├── go.sum\n├── main.go\n├── .gonex.json\n├── config\u002F\n│   └── config.go\n└── modules\u002F\n    ├── registry_gen.go\n    └── users\u002F\n        ├── module.go\n        ├── service.go\n        ├── service_test.go\n        ├── http_registry_gen.go\n        └── http\u002F\n            ├── schemas.go\n            ├── handlers.go\n            ├── routes.go\n            └── openapi.go\n","text","",[19,40,36],{"__ignoreMap":38},[15,42,43,46],{},[19,44,45],{},"go.mod"," tracks Gonex as the runtime library and CLI development tool. The server has no application HTML\u002FCSS scaffold. HTTP API versioning, database files and gRPC adapters appear only when requested.",[10,48,50],{"id":49},"files-you-edit","Files you edit",[52,53,54,61,67,73,79,85,91,100],"ul",{},[55,56,57,60],"li",{},[19,58,59],{},"main.go",": application construction, explicit modules and signal handling.",[55,62,63,66],{},[19,64,65],{},"config\u002Fconfig.go",": environment\u002Fconfiguration mapping, logging and exposure settings.",[55,68,69,72],{},[19,70,71],{},"module.go",": service construction and adapter wiring.",[55,74,75,78],{},[19,76,77],{},"service.go",": plain Go business behavior and local interfaces.",[55,80,81,84],{},[19,82,83],{},"schemas.go",": HTTP DTOs and validation tags.",[55,86,87,90],{},[19,88,89],{},"handlers.go",": request-to-service calls and response mapping.",[55,92,93,26,96,99],{},[19,94,95],{},"routes.go",[19,97,98],{},"openapi.go",": typed routes and contract descriptions.",[55,101,102],{},"Tests: verify your application's domain and API behavior.",[15,104,105,106,111],{},"These are application files owned by you. The CLI does not continuously regenerate your service logic. A starter module exposes a message endpoint; implementing resource actions is deliberate development, as shown in ",[107,108,110],"a",{"href":109},"\u002Fdocs\u002Fmain\u002Fbuilding-api\u002F","Build a REST API",".",[10,113,115],{"id":114},"tool-owned-files","Tool-owned files",[15,117,118,119,122,123,126],{},"Keep ",[19,120,121],{},".gonex.json",", ",[19,124,125],{},"modules\u002Fregistry_gen.go",", and generated adapter registries under tool ownership. Generators hash-check these files and reject conflicting manual edits. Use commands to add modules, enable transports and create versions. When changing a handwritten adapter's interface, update its module wiring deliberately rather than breaking a generated registry's assumptions.",[10,128,130],{"id":129},"keep-developing","Keep developing",[32,132,136],{"className":133,"code":134,"language":135,"meta":38,"style":38},"language-sh shiki shiki-themes light-plus light-plus dark-plus","go tool gonex create module products\ngo tool gonex check\ngo tool gonex run\n","sh",[19,137,138,163,175],{"__ignoreMap":38},[139,140,143,147,151,154,157,160],"span",{"class":141,"line":142},"line",1,[139,144,146],{"class":145},"swoLU","go",[139,148,150],{"class":149},"sFD8J"," tool",[139,152,153],{"class":149}," gonex",[139,155,156],{"class":149}," create",[139,158,159],{"class":149}," module",[139,161,162],{"class":149}," products\n",[139,164,166,168,170,172],{"class":141,"line":165},2,[139,167,146],{"class":145},[139,169,150],{"class":149},[139,171,153],{"class":149},[139,173,174],{"class":149}," check\n",[139,176,178,180,182,184],{"class":141,"line":177},3,[139,179,146],{"class":145},[139,181,150],{"class":149},[139,183,153],{"class":149},[139,185,186],{"class":149}," run\n",[15,188,189],{},"A separate frontend consumes the API over HTTP. Optional database adapters and models stay at the module boundary; migration execution remains explicit.",[191,192,193],"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 .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);}",{"title":38,"searchDepth":165,"depth":165,"links":195},[196,197,198,199],{"id":12,"depth":165,"text":13},{"id":49,"depth":165,"text":50},{"id":114,"depth":165,"text":115},{"id":129,"depth":165,"text":130},"Develop inside a CLI-generated Gonex application with clear service, schema, handler and route responsibilities and protected registries.","md","APPLICATION DESIGN",{},true,55,"\u002Fdocs\u002Fmain\u002Fproject-structure","build",{"title":5,"description":200},null,"docs\u002Fmain\u002Fproject-structure","main","2ZdRNmBiCf89MhMlRAyyX8HR1Jg32IHxkHZL5NGdh7s",1792521640445]