akanjs 0.0.1 → 2.0.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CODE_OF_CONDUCT.md +54 -0
- package/CONTRIBUTING.md +83 -0
- package/LICENSE +21 -0
- package/README.ko.md +244 -0
- package/README.md +237 -6
- package/base/base.ts +194 -0
- package/base/baseEnv.ts +162 -0
- package/base/index.ts +6 -0
- package/base/primitiveRegistry.ts +316 -0
- package/base/symbols.ts +11 -0
- package/base/test-globals.d.ts +4 -0
- package/base/types.ts +137 -0
- package/base/utils.ts +30 -0
- package/cli/application/application.command.ts +213 -0
- package/cli/application/application.interface.tsx +225 -0
- package/cli/application/application.runner.ts +343 -0
- package/cli/application/application.script.ts +244 -0
- package/cli/build.ts +25 -0
- package/cli/cloud/cloud.command.ts +48 -0
- package/cli/cloud/cloud.runner.ts +158 -0
- package/cli/cloud/cloud.script.ts +40 -0
- package/cli/guideline/guideline.command.ts +31 -0
- package/cli/guideline/guideline.prompt.ts +212 -0
- package/cli/guideline/guideline.runner.ts +53 -0
- package/cli/guideline/guideline.script.ts +33 -0
- package/cli/guidelines/___library/sharedUiStructureDescription.en.md +767 -0
- package/cli/guidelines/___library/utilUiStructureDescription.en.md +395 -0
- package/cli/guidelines/___lint/lintRuleDescription.en.md +64 -0
- package/cli/guidelines/___module/moduleStructureDescription.en.md +80 -0
- package/cli/guidelines/componentRule/componentRule.generate.json +131 -0
- package/cli/guidelines/componentRule/componentRule.instruction.md +637 -0
- package/cli/guidelines/cssRule/cssRule.generate.json +93 -0
- package/cli/guidelines/cssRule/cssRule.instruction.md +435 -0
- package/cli/guidelines/databaseModule/databaseModule.generate.json +51 -0
- package/cli/guidelines/databaseModule/databaseModule.instruction.md +612 -0
- package/cli/guidelines/docPageRule/docPageRule.generate.json +72 -0
- package/cli/guidelines/docPageRule/docPageRule.instruction.md +389 -0
- package/cli/guidelines/enumConstant/enumConstant.generate.json +24 -0
- package/cli/guidelines/enumConstant/enumConstant.instruction.md +232 -0
- package/cli/guidelines/framework/framework.generate.json +119 -0
- package/cli/guidelines/framework/framework.instruction.md +1110 -0
- package/cli/guidelines/howToUseStore/howToUseStore.generate.json +0 -0
- package/cli/guidelines/modelConstant/modelConstant.generate.json +128 -0
- package/cli/guidelines/modelConstant/modelConstant.instruction.md +506 -0
- package/cli/guidelines/modelDictionary/modelDictionary.generate.json +108 -0
- package/cli/guidelines/modelDictionary/modelDictionary.instruction.md +547 -0
- package/cli/guidelines/modelDocument/modelDocument.generate.json +129 -0
- package/cli/guidelines/modelDocument/modelDocument.instruction.md +536 -0
- package/cli/guidelines/modelService/modelService.generate.json +135 -0
- package/cli/guidelines/modelService/modelService.instruction.md +708 -0
- package/cli/guidelines/modelSignal/modelSignal.generate.json +201 -0
- package/cli/guidelines/modelSignal/modelSignal.instruction.md +552 -0
- package/cli/guidelines/modelStore/modelStore.generate.json +130 -0
- package/cli/guidelines/modelStore/modelStore.instruction.md +585 -0
- package/cli/guidelines/modelTemplate/modelTemplate.generate.json +104 -0
- package/cli/guidelines/modelTemplate/modelTemplate.instruction.md +604 -0
- package/cli/guidelines/modelUnit/modelUnit.generate.json +92 -0
- package/cli/guidelines/modelUnit/modelUnit.instruction.md +541 -0
- package/cli/guidelines/modelUtil/modelUtil.generate.json +93 -0
- package/cli/guidelines/modelUtil/modelUtil.instruction.md +752 -0
- package/cli/guidelines/modelView/modelView.generate.json +80 -0
- package/cli/guidelines/modelView/modelView.instruction.md +1005 -0
- package/cli/guidelines/modelZone/modelZone.generate.json +126 -0
- package/cli/guidelines/modelZone/modelZone.instruction.md +528 -0
- package/cli/guidelines/scalarConstant/scalarConstant.generate.json +106 -0
- package/cli/guidelines/scalarConstant/scalarConstant.instruction.md +442 -0
- package/cli/guidelines/scalarDictionary/scalarDictionary.generate.json +83 -0
- package/cli/guidelines/scalarDictionary/scalarDictionary.instruction.md +273 -0
- package/cli/guidelines/scalarModule/scalarModule.generate.json +35 -0
- package/cli/guidelines/scalarModule/scalarModule.instruction.md +81 -0
- package/cli/guidelines/sharedUiUsage/sharedUiUsage.generate.json +108 -0
- package/cli/guidelines/sharedUiUsage/sharedUiUsage.instruction.md +310 -0
- package/cli/guidelines/utilUiUsage/utilUiUsage.generate.json +140 -0
- package/cli/guidelines/utilUiUsage/utilUiUsage.instruction.md +339 -0
- package/cli/index.js +21340 -0
- package/cli/index.ts +24 -0
- package/cli/library/library.command.ts +28 -0
- package/cli/library/library.runner.ts +68 -0
- package/cli/library/library.script.ts +39 -0
- package/cli/module/module.command.ts +35 -0
- package/cli/module/module.prompt.ts +18 -0
- package/cli/module/module.request.ts +319 -0
- package/cli/module/module.runner.ts +76 -0
- package/cli/module/module.script.ts +161 -0
- package/cli/package/package.command.ts +32 -0
- package/cli/package/package.runner.ts +59 -0
- package/cli/package/package.script.ts +35 -0
- package/cli/page/page.command.ts +14 -0
- package/cli/page/page.runner.ts +14 -0
- package/cli/page/page.script.ts +12 -0
- package/cli/scalar/scalar.command.ts +21 -0
- package/cli/scalar/scalar.prompt.ts +131 -0
- package/cli/scalar/scalar.runner.ts +38 -0
- package/cli/scalar/scalar.script.ts +16 -0
- package/cli/templates/__scalar/__model__/__model__.constant.ts +15 -0
- package/cli/templates/__scalar/__model__/__model__.dictionary.ts +19 -0
- package/cli/templates/__scalar/__model__/__model__.document.ts +15 -0
- package/cli/templates/app/akan.config.ts +14 -0
- package/cli/templates/app/capacitor.config.ts.template +8 -0
- package/cli/templates/app/common/commonLogic.ts +12 -0
- package/cli/templates/app/common/index.ts +10 -0
- package/cli/templates/app/env/env.client.debug.ts.template +7 -0
- package/cli/templates/app/env/env.client.develop.ts.template +7 -0
- package/cli/templates/app/env/env.client.local.ts.template +7 -0
- package/cli/templates/app/env/env.client.main.ts.template +7 -0
- package/cli/templates/app/env/env.client.testing.ts.template +7 -0
- package/cli/templates/app/env/env.client.ts +21 -0
- package/cli/templates/app/env/env.client.type.ts +16 -0
- package/cli/templates/app/env/env.server.debug.ts.template +10 -0
- package/cli/templates/app/env/env.server.develop.ts.template +9 -0
- package/cli/templates/app/env/env.server.local.ts.template +14 -0
- package/cli/templates/app/env/env.server.main.ts.template +9 -0
- package/cli/templates/app/env/env.server.testing.ts.template +6 -0
- package/cli/templates/app/env/env.server.ts +20 -0
- package/cli/templates/app/lib/___appName__/__appName__.dictionary.ts +17 -0
- package/cli/templates/app/lib/___appName__/__appName__.service.ts +13 -0
- package/cli/templates/app/lib/___appName__/__appName__.signal.ts +17 -0
- package/cli/templates/app/lib/___appName__/__appName__.store.ts +15 -0
- package/cli/templates/app/lib/option.ts +17 -0
- package/cli/templates/app/main.ts +16 -0
- package/cli/templates/app/package.json.template +5 -0
- package/cli/templates/app/page/_index.tsx +90 -0
- package/cli/templates/app/page/_layout.tsx +32 -0
- package/cli/templates/app/page/styles.css.template +15 -0
- package/cli/templates/app/public/favicon.ico +0 -0
- package/cli/templates/app/public/icons/icon-128x128.png +0 -0
- package/cli/templates/app/public/icons/icon-144x144.png +0 -0
- package/cli/templates/app/public/icons/icon-152x152.png +0 -0
- package/cli/templates/app/public/icons/icon-192x192.png +0 -0
- package/cli/templates/app/public/icons/icon-256x256.png +0 -0
- package/cli/templates/app/public/icons/icon-384x384.png +0 -0
- package/cli/templates/app/public/icons/icon-48x48.png +0 -0
- package/cli/templates/app/public/icons/icon-512x512.png +0 -0
- package/cli/templates/app/public/icons/icon-72x72.png +0 -0
- package/cli/templates/app/public/icons/icon-96x96.png +0 -0
- package/cli/templates/app/public/logo.svg +70 -0
- package/cli/templates/app/public/manifest.json.template +67 -0
- package/cli/templates/app/srvkit/backendLogic.ts +12 -0
- package/cli/templates/app/srvkit/index.ts +10 -0
- package/cli/templates/app/tsconfig.json.template +21 -0
- package/cli/templates/app/tsconfig.spec.json.template +7 -0
- package/cli/templates/app/ui/UiComponent.ts +16 -0
- package/cli/templates/app/ui/index.ts +10 -0
- package/cli/templates/app/webkit/frontendLogic.ts +12 -0
- package/cli/templates/app/webkit/index.ts +10 -0
- package/cli/templates/client.ts +46 -0
- package/cli/templates/crudPages/[__model__Id]/edit/page.tsx +47 -0
- package/cli/templates/crudPages/[__model__Id]/page.tsx +52 -0
- package/cli/templates/crudPages/new/page.tsx +42 -0
- package/cli/templates/crudPages/page.tsx +43 -0
- package/cli/templates/crudSinglePage/page.tsx +37 -0
- package/cli/templates/env/_env.server.type.ts +16 -0
- package/cli/templates/facetIndex/index.ts +32 -0
- package/cli/templates/index.ts +10 -0
- package/cli/templates/lib/__lib/lib.constant.ts +38 -0
- package/cli/templates/lib/__lib/lib.dictionary.ts +33 -0
- package/cli/templates/lib/__lib/lib.document.ts +35 -0
- package/cli/templates/lib/__lib/lib.service.ts +33 -0
- package/cli/templates/lib/__lib/lib.signal.ts +34 -0
- package/cli/templates/lib/__lib/lib.store.ts +33 -0
- package/cli/templates/lib/cnst.ts +29 -0
- package/cli/templates/lib/db.ts +32 -0
- package/cli/templates/lib/dict.ts +49 -0
- package/cli/templates/lib/sig.ts +60 -0
- package/cli/templates/lib/srv.ts +34 -0
- package/cli/templates/lib/st.ts +31 -0
- package/cli/templates/lib/useClient.ts +19 -0
- package/cli/templates/lib/useServer.ts +7 -0
- package/cli/templates/libRoot/.gitignore.template +16 -0
- package/cli/templates/libRoot/akan.config.ts +12 -0
- package/cli/templates/libRoot/base/baseLogic.ts +10 -0
- package/cli/templates/libRoot/base/index.ts +8 -0
- package/cli/templates/libRoot/common/commonLogic.ts +10 -0
- package/cli/templates/libRoot/common/index.ts +8 -0
- package/cli/templates/libRoot/env/env.server.example.ts.template +6 -0
- package/cli/templates/libRoot/env/env.server.testing.ts.template +6 -0
- package/cli/templates/libRoot/lib/___libName__/__libName__.dictionary.ts +15 -0
- package/cli/templates/libRoot/lib/___libName__/__libName__.service.ts +11 -0
- package/cli/templates/libRoot/lib/___libName__/__libName__.store.ts +13 -0
- package/cli/templates/libRoot/lib/option.ts +17 -0
- package/cli/templates/libRoot/package.json.template +5 -0
- package/cli/templates/libRoot/srvkit/backendLogic.ts +10 -0
- package/cli/templates/libRoot/srvkit/index.ts +8 -0
- package/cli/templates/libRoot/tsconfig.json.template +11 -0
- package/cli/templates/libRoot/tsconfig.spec.json.template +7 -0
- package/cli/templates/libRoot/ui/index.ts +7 -0
- package/cli/templates/libRoot/webkit/frontendLogic.ts +10 -0
- package/cli/templates/libRoot/webkit/index.ts +8 -0
- package/cli/templates/localDev/docker-compose.yaml.template +37 -0
- package/cli/templates/module/__Model__.Template.tsx +36 -0
- package/cli/templates/module/__Model__.Unit.tsx +26 -0
- package/cli/templates/module/__Model__.Util.tsx +30 -0
- package/cli/templates/module/__Model__.View.tsx +29 -0
- package/cli/templates/module/__Model__.Zone.tsx +43 -0
- package/cli/templates/module/__model__.constant.ts +24 -0
- package/cli/templates/module/__model__.dictionary.ts +30 -0
- package/cli/templates/module/__model__.document.ts +23 -0
- package/cli/templates/module/__model__.service.ts +16 -0
- package/cli/templates/module/__model__.signal.ts +27 -0
- package/cli/templates/module/__model__.store.ts +19 -0
- package/cli/templates/module/index.tsx +44 -0
- package/cli/templates/moduleRoot/index.tsx +31 -0
- package/cli/templates/pkgRoot/tsconfig.json.template +10 -0
- package/cli/templates/server.ts +45 -0
- package/cli/templates/workspaceRoot/.env.template +20 -0
- package/cli/templates/workspaceRoot/.gitignore.template +130 -0
- package/cli/templates/workspaceRoot/.prettierignore.template +10 -0
- package/cli/templates/workspaceRoot/.prettierrc.json.template +6 -0
- package/cli/templates/workspaceRoot/.swcrc.template +9 -0
- package/cli/templates/workspaceRoot/.vscode/settings.json.template +23 -0
- package/cli/templates/workspaceRoot/README.md.template +37 -0
- package/cli/templates/workspaceRoot/infra/app/Chart.yaml.template +6 -0
- package/cli/templates/workspaceRoot/infra/app/templates/frontend.yaml.template +182 -0
- package/cli/templates/workspaceRoot/infra/app/values/_common-values.yaml.template +183 -0
- package/cli/templates/workspaceRoot/package.json.template +25 -0
- package/cli/templates/workspaceRoot/tsconfig.json.template +26 -0
- package/cli/testHelpers.ts +171 -0
- package/cli/workspace/workspace.command.ts +57 -0
- package/cli/workspace/workspace.runner.ts +61 -0
- package/cli/workspace/workspace.script.ts +59 -0
- package/client/capacitor.ts +68 -0
- package/client/clientRuntime.ts +141 -0
- package/client/cookie.ts +121 -0
- package/client/createFont.ts +8 -0
- package/client/csrTypes.ts +259 -0
- package/client/decorators.ts +25 -0
- package/client/device.ts +147 -0
- package/client/fetch.ts +1 -0
- package/client/index.ts +15 -0
- package/client/locale.ts +4 -0
- package/client/makePageProto.tsx +178 -0
- package/client/router.ts +286 -0
- package/client/rscNavigation.ts +19 -0
- package/client/storage.ts +33 -0
- package/client/translator.ts +43 -0
- package/client/types.ts +228 -0
- package/client/useClient.ts +1 -0
- package/common/Logger.ts +177 -0
- package/common/applyMixins.ts +14 -0
- package/common/capitalize.ts +4 -0
- package/common/deepObjectify.ts +27 -0
- package/common/formatNumber.ts +14 -0
- package/common/formatPhone.ts +7 -0
- package/common/getAllPropertyDescriptors.ts +13 -0
- package/common/hmrPhase.ts +17 -0
- package/common/httpClient.ts +101 -0
- package/common/index.ts +50 -0
- package/common/isDayjs.ts +3 -0
- package/common/isEmail.ts +2 -0
- package/common/isPhoneNumber.ts +8 -0
- package/common/isQueryEqual.ts +23 -0
- package/common/isValidDate.ts +14 -0
- package/common/localeConfig.ts +41 -0
- package/common/lowerlize.ts +4 -0
- package/common/mergeVersion.ts +10 -0
- package/common/objectify.ts +7 -0
- package/common/pathGet.ts +13 -0
- package/common/pathSet.ts +16 -0
- package/common/randomPick.ts +1 -0
- package/common/randomPicks.ts +12 -0
- package/common/routeConvention.ts +203 -0
- package/common/sleep.ts +8 -0
- package/common/splitVersion.ts +11 -0
- package/common/subRoute.ts +34 -0
- package/common/types.ts +15 -0
- package/constant/constantRegistry.ts +334 -0
- package/constant/crystalize.ts +45 -0
- package/constant/deserialize.ts +70 -0
- package/constant/fieldInfo.ts +415 -0
- package/constant/getDefault.ts +18 -0
- package/constant/immerify.ts +16 -0
- package/constant/index.ts +10 -0
- package/constant/purify.ts +118 -0
- package/constant/serialize.ts +81 -0
- package/constant/types.ts +105 -0
- package/constant/via.ts +360 -0
- package/devkit/aiEditor.ts +299 -0
- package/devkit/akanApp/akanApp.host.ts +356 -0
- package/devkit/akanApp/index.ts +1 -0
- package/devkit/akanConfig/akanConfig.ts +332 -0
- package/devkit/akanConfig/index.ts +2 -0
- package/devkit/akanConfig/types.ts +187 -0
- package/devkit/applicationBuildReporter.ts +69 -0
- package/devkit/applicationBuildRunner.ts +302 -0
- package/devkit/applicationReleasePackager.ts +205 -0
- package/devkit/artifact/implicitRootLayout.ts +155 -0
- package/devkit/artifact/index.ts +1 -0
- package/devkit/artifact/routeSeedIndex.ts +128 -0
- package/devkit/auth.ts +41 -0
- package/devkit/builder.ts +164 -0
- package/devkit/capacitor.base.config.ts +74 -0
- package/devkit/capacitorApp.ts +385 -0
- package/devkit/commandDecorators/argMeta.ts +88 -0
- package/devkit/commandDecorators/command.ts +314 -0
- package/devkit/commandDecorators/commandBuilder.ts +188 -0
- package/devkit/commandDecorators/commandMeta.ts +6 -0
- package/devkit/commandDecorators/dependencyBuilder.ts +100 -0
- package/devkit/commandDecorators/helpFormatter.ts +217 -0
- package/devkit/commandDecorators/index.ts +8 -0
- package/devkit/commandDecorators/targetMeta.ts +31 -0
- package/devkit/commandDecorators/types.ts +10 -0
- package/devkit/constants.ts +25 -0
- package/devkit/createTunnel.ts +36 -0
- package/devkit/dependencyScanner.ts +233 -0
- package/devkit/executors.ts +1279 -0
- package/devkit/extractDeps.ts +85 -0
- package/devkit/fileEditor.ts +106 -0
- package/devkit/fileSys.ts +39 -0
- package/devkit/frontendBuild/allRoutesBuilder.ts +103 -0
- package/devkit/frontendBuild/clientBuildTypes.ts +114 -0
- package/devkit/frontendBuild/clientEntriesBundler.ts +300 -0
- package/devkit/frontendBuild/clientEntryDiscovery.ts +192 -0
- package/devkit/frontendBuild/csrArtifactBuilder.ts +237 -0
- package/devkit/frontendBuild/cssCompiler.ts +279 -0
- package/devkit/frontendBuild/cssImportResolver.ts +116 -0
- package/devkit/frontendBuild/fontOptimizer.ts +427 -0
- package/devkit/frontendBuild/hmrChangeClassifier.ts +28 -0
- package/devkit/frontendBuild/hmrWatcher.ts +101 -0
- package/devkit/frontendBuild/index.ts +18 -0
- package/devkit/frontendBuild/pagesBundleBuilder.ts +137 -0
- package/devkit/frontendBuild/pagesEntrySourceGenerator.ts +37 -0
- package/devkit/frontendBuild/precompressArtifacts.ts +59 -0
- package/devkit/frontendBuild/routeClientBuilder.ts +290 -0
- package/devkit/frontendBuild/routesManifestArtifactSerializer.ts +62 -0
- package/devkit/frontendBuild/ssrBaseArtifactBuilder.ts +139 -0
- package/devkit/frontendBuild/vendorSpecifiers.ts +16 -0
- package/devkit/frontendBuild/watchRootResolver.ts +28 -0
- package/devkit/getCredentials.ts +19 -0
- package/devkit/getDirname.ts +3 -0
- package/devkit/getModelFileData.ts +59 -0
- package/devkit/getRelatedCnsts.ts +300 -0
- package/devkit/guideline.ts +19 -0
- package/devkit/incrementalBuilder/incrementalBuilder.host.ts +78 -0
- package/devkit/incrementalBuilder/incrementalBuilder.proc.ts +330 -0
- package/devkit/incrementalBuilder/index.ts +1 -0
- package/devkit/index.ts +36 -0
- package/devkit/lint/no-import-client-functions.grit +32 -0
- package/devkit/lint/no-import-external-library.grit +20 -0
- package/devkit/lint/no-js-private-class-method.grit +42 -0
- package/devkit/lint/no-use-client-in-server.grit +7 -0
- package/devkit/lint/non-scalar-props-restricted.grit +13 -0
- package/devkit/linter.ts +248 -0
- package/devkit/mobile/index.ts +1 -0
- package/devkit/mobile/mobileTarget.ts +47 -0
- package/devkit/prompter.ts +71 -0
- package/devkit/scanInfo.ts +602 -0
- package/devkit/selectModel.ts +11 -0
- package/devkit/spinner.ts +54 -0
- package/devkit/sshTunnel.ts +151 -0
- package/devkit/streamAi.ts +45 -0
- package/devkit/transforms/barrelAnalyzer.ts +246 -0
- package/devkit/transforms/barrelImportsPlugin.ts +422 -0
- package/devkit/transforms/externalizeFrameworkPlugin.ts +159 -0
- package/devkit/transforms/index.ts +5 -0
- package/devkit/transforms/rscUseClientTransform.ts +52 -0
- package/devkit/transforms/useClientBundlePlugin.ts +47 -0
- package/devkit/typeChecker.ts +260 -0
- package/devkit/types.ts +42 -0
- package/devkit/ui/MultiScrollList.tsx +228 -0
- package/devkit/ui/ScrollList.tsx +106 -0
- package/devkit/ui/index.ts +2 -0
- package/devkit/uploadRelease.ts +95 -0
- package/devkit/useStdoutDimensions.ts +20 -0
- package/dictionary/base.dictionary.ts +91 -0
- package/dictionary/dictInfo.ts +1079 -0
- package/dictionary/dictionary.ts +10 -0
- package/dictionary/index.ts +12 -0
- package/dictionary/locale.ts +230 -0
- package/dictionary/trans.ts +196 -0
- package/document/by.ts +39 -0
- package/document/dataLoader.ts +91 -0
- package/document/database.ts +168 -0
- package/document/databaseRegistry.ts +113 -0
- package/document/documentQuery.ts +143 -0
- package/document/documentSchema.ts +91 -0
- package/document/filterMeta.ts +210 -0
- package/document/index.ts +11 -0
- package/document/into.ts +169 -0
- package/document/loaderInfo.ts +50 -0
- package/document/schema.ts +24 -0
- package/document/types.ts +41 -0
- package/fetch/client/fetchClient.ts +599 -0
- package/fetch/client/httpClient.ts +145 -0
- package/fetch/client/index.ts +3 -0
- package/fetch/client/wsClient.ts +246 -0
- package/fetch/fetchType/appliedReturn.type.ts +108 -0
- package/fetch/fetchType/buildFetch.type.ts +24 -0
- package/fetch/fetchType/clientSignal.type.ts +22 -0
- package/fetch/fetchType/endpointFetch.type.ts +56 -0
- package/fetch/fetchType/index.ts +5 -0
- package/fetch/fetchType/sliceFetch.type.ts +173 -0
- package/fetch/index.ts +4 -0
- package/fetch/requestStorage.ts +127 -0
- package/fetch/serializer/fetch.serializer.ts +131 -0
- package/fetch/serializer/index.ts +1 -0
- package/fetch/types.ts +28 -0
- package/package.json +198 -5
- package/server/SSR_MEMORY_DIAGNOSIS.md +107 -0
- package/server/akanApp.ts +855 -0
- package/server/akanLib.ts +43 -0
- package/server/akanOption.ts +42 -0
- package/server/akanServer.ts +355 -0
- package/server/artifact/builderRpc.ts +124 -0
- package/server/artifact/index.ts +6 -0
- package/server/artifact/ipcTypes.ts +46 -0
- package/server/artifact/manifestTypes.ts +19 -0
- package/server/artifact/routeClientCache.ts +224 -0
- package/server/artifact/routeSeedIndexStore.ts +89 -0
- package/server/artifact/routesManifestStore.ts +120 -0
- package/server/decorators.ts +95 -0
- package/server/di/diLifecycle.ts +520 -0
- package/server/di/index.ts +4 -0
- package/server/di/predefinedAdaptor.ts +77 -0
- package/server/di/resolveAdaptorHierarchy.ts +82 -0
- package/server/di/resolveHierarchy.ts +89 -0
- package/server/di/resolveServiceHierarchy.ts +47 -0
- package/server/di/utils.ts +40 -0
- package/server/hmr/changeBatch.ts +14 -0
- package/server/hmr/clientScript.ts +310 -0
- package/server/hmr/devHmrController.ts +395 -0
- package/server/hmr/index.ts +4 -0
- package/server/hmr/wsHub.ts +56 -0
- package/server/imageOptimizer.ts +427 -0
- package/server/imageOptimizerError.ts +8 -0
- package/server/index.ts +14 -0
- package/server/lifecycle/shutdownManager.ts +52 -0
- package/server/logging/rotatingLogWriter.ts +190 -0
- package/server/processMetricsCollector.ts +78 -0
- package/server/proxy/akanResponse.ts +16 -0
- package/server/proxy/bunRequestFields.ts +12 -0
- package/server/proxy/hostBasePathWebProxy.ts +112 -0
- package/server/proxy/index.ts +15 -0
- package/server/proxy/localeWebProxy.ts +71 -0
- package/server/proxy/types.ts +41 -0
- package/server/proxy/webProxyRunner.ts +90 -0
- package/server/resolver/database.resolver.ts +340 -0
- package/server/resolver/index.ts +3 -0
- package/server/resolver/resolver.contract.fixture.ts +222 -0
- package/server/resolver/service.resolver.ts +176 -0
- package/server/resolver/signal.resolver.ts +386 -0
- package/server/robots.ts +32 -0
- package/server/routeElementComposer.tsx +91 -0
- package/server/routeTreeBuilder.ts +279 -0
- package/server/routing/apiRouter.ts +226 -0
- package/server/rscClient.tsx +140 -0
- package/server/rscWorker.tsx +625 -0
- package/server/rscWorkerHost.ts +616 -0
- package/server/sitemap.ts +90 -0
- package/server/ssrFromRscRenderer.tsx +285 -0
- package/server/ssrTypes.ts +48 -0
- package/server/types/react-server-dom-webpack.d.ts +91 -0
- package/server/types.tsx +109 -0
- package/server/vendor/akanjs-base.ts +1 -0
- package/server/vendor/akanjs-common.ts +1 -0
- package/server/vendor/akanjs-constant.ts +1 -0
- package/server/vendor/akanjs-store.ts +1 -0
- package/server/vendor/react-dom-client.ts +5 -0
- package/server/vendor/react-dom.ts +21 -0
- package/server/vendor/react-jsx-dev-runtime.ts +5 -0
- package/server/vendor/react-jsx-runtime.ts +5 -0
- package/server/vendor/react-refresh-runtime.ts +6 -0
- package/server/vendor/react-server-dom-webpack-client-browser.ts +12 -0
- package/server/vendor/react.ts +51 -0
- package/server/vendor/scheduler.ts +23 -0
- package/server/webRouter.ts +712 -0
- package/service/adapt.ts +47 -0
- package/service/base.service.ts +18 -0
- package/service/index.ts +10 -0
- package/service/injectInfo.ts +393 -0
- package/service/ipcTypes.ts +127 -0
- package/service/predefinedAdaptor/cache.adaptor.ts +105 -0
- package/service/predefinedAdaptor/compress.adaptor.ts +357 -0
- package/service/predefinedAdaptor/database.adaptor.ts +1310 -0
- package/service/predefinedAdaptor/index.ts +13 -0
- package/service/predefinedAdaptor/logging.adaptor.ts +36 -0
- package/service/predefinedAdaptor/queue.adaptor.ts +42 -0
- package/service/predefinedAdaptor/role.adaptor.ts +18 -0
- package/service/predefinedAdaptor/schedule.adaptor.ts +188 -0
- package/service/predefinedAdaptor/solidCache.adaptor.ts +143 -0
- package/service/predefinedAdaptor/solidPubsub.adaptor.ts +98 -0
- package/service/predefinedAdaptor/solidQueue.adaptor.ts +203 -0
- package/service/predefinedAdaptor/solidSqlite.ts +85 -0
- package/service/predefinedAdaptor/sqlitePath.ts +20 -0
- package/service/predefinedAdaptor/storage.adaptor.ts +121 -0
- package/service/predefinedAdaptor/websocket.adaptor.ts +313 -0
- package/service/serve.ts +223 -0
- package/service/serviceModule.ts +221 -0
- package/service/serviceRegistry.ts +26 -0
- package/service/types.ts +113 -0
- package/signal/base.signal.ts +46 -0
- package/signal/endpoint.ts +122 -0
- package/signal/endpointInfo.ts +374 -0
- package/signal/exception.ts +50 -0
- package/signal/guard.ts +18 -0
- package/signal/guards.ts +16 -0
- package/signal/index.ts +18 -0
- package/signal/intercept.ts +39 -0
- package/signal/internal.ts +56 -0
- package/signal/internalArg.ts +38 -0
- package/signal/internalInfo.ts +208 -0
- package/signal/middleware.ts +108 -0
- package/signal/serializer/fetch.serializer.ts +128 -0
- package/signal/serializer/index.ts +1 -0
- package/signal/serverSignal.ts +114 -0
- package/signal/signalContext.ts +446 -0
- package/signal/signalRegistry.ts +82 -0
- package/signal/slice.ts +158 -0
- package/signal/sliceInfo.ts +254 -0
- package/signal/types.ts +131 -0
- package/store/action.ts +1067 -0
- package/store/baseSt.ts +81 -0
- package/store/hooks.ts +2 -0
- package/store/index.ts +8 -0
- package/store/rootStore.ts +26 -0
- package/store/state.ts +226 -0
- package/store/stateBuilder.ts +429 -0
- package/store/stateInfo.ts +66 -0
- package/store/store.ts +194 -0
- package/store/storeInstance.ts +382 -0
- package/store/storeRegistry.ts +84 -0
- package/store/types.ts +69 -0
- package/store/withSelector.ts +62 -0
- package/test/index.ts +2 -0
- package/test/playwright.config.base.ts +48 -0
- package/test/playwright.pageAgent.ts +41 -0
- package/test/sample.ts +19 -0
- package/test/sampleOf.ts +70 -0
- package/test/testServer.ts +84 -0
- package/ui/BottomSheet.tsx +103 -0
- package/ui/Button.tsx +70 -0
- package/ui/ClientSide.tsx +11 -0
- package/ui/Clipboard.tsx +49 -0
- package/ui/Copy.tsx +27 -0
- package/ui/CsrImage.tsx +38 -0
- package/ui/Data/CardList.tsx +141 -0
- package/ui/Data/Dashboard.tsx +72 -0
- package/ui/Data/Insight.tsx +35 -0
- package/ui/Data/Item.tsx +285 -0
- package/ui/Data/ListContainer.tsx +320 -0
- package/ui/Data/Pagination.tsx +54 -0
- package/ui/Data/QueryMaker.tsx +21 -0
- package/ui/Data/TableList.tsx +161 -0
- package/ui/Data/index.ts +11 -0
- package/ui/Data/index_.tsx +11 -0
- package/ui/DatePicker.tsx +184 -0
- package/ui/Dialog/Action.tsx +15 -0
- package/ui/Dialog/Close.tsx +22 -0
- package/ui/Dialog/Content.tsx +11 -0
- package/ui/Dialog/Modal.tsx +137 -0
- package/ui/Dialog/Provider.tsx +33 -0
- package/ui/Dialog/Title.tsx +15 -0
- package/ui/Dialog/Trigger.tsx +22 -0
- package/ui/Dialog/context.ts +20 -0
- package/ui/Dialog/index.tsx +15 -0
- package/ui/DragAction.tsx +129 -0
- package/ui/DraggableList.tsx +230 -0
- package/ui/Dropdown.tsx +51 -0
- package/ui/Empty.tsx +32 -0
- package/ui/Field.tsx +1556 -0
- package/ui/FontFace.tsx +26 -0
- package/ui/Image.tsx +185 -0
- package/ui/InfiniteScroll.tsx +67 -0
- package/ui/Input.tsx +636 -0
- package/ui/KeyboardAvoiding.tsx +62 -0
- package/ui/Layout/BottomAction.tsx +15 -0
- package/ui/Layout/BottomInset.tsx +42 -0
- package/ui/Layout/BottomTab.tsx +71 -0
- package/ui/Layout/Header.tsx +38 -0
- package/ui/Layout/LeftSider.tsx +34 -0
- package/ui/Layout/Navbar.tsx +46 -0
- package/ui/Layout/RightSider.tsx +41 -0
- package/ui/Layout/Sider.tsx +69 -0
- package/ui/Layout/Template.tsx +11 -0
- package/ui/Layout/TopLeftAction.tsx +28 -0
- package/ui/Layout/Unit.tsx +19 -0
- package/ui/Layout/View.tsx +12 -0
- package/ui/Layout/Zone.tsx +10 -0
- package/ui/Layout/index.ts +27 -0
- package/ui/Link/Back.tsx +15 -0
- package/ui/Link/Close.tsx +20 -0
- package/ui/Link/CsrLink.tsx +41 -0
- package/ui/Link/Lang.tsx +16 -0
- package/ui/Link/SsrLink.tsx +68 -0
- package/ui/Link/index.tsx +32 -0
- package/ui/Link/types.ts +47 -0
- package/ui/Load/Edit.tsx +19 -0
- package/ui/Load/Edit_Client.tsx +120 -0
- package/ui/Load/Page.tsx +40 -0
- package/ui/Load/PageCSR.tsx +39 -0
- package/ui/Load/Pagination.tsx +89 -0
- package/ui/Load/Units.tsx +330 -0
- package/ui/Load/View.tsx +115 -0
- package/ui/Load/index.ts +11 -0
- package/ui/Load/index_.tsx +6 -0
- package/ui/Loading/Area.tsx +10 -0
- package/ui/Loading/Button.tsx +17 -0
- package/ui/Loading/Input.tsx +17 -0
- package/ui/Loading/ProgressBar.tsx +14 -0
- package/ui/Loading/Skeleton.tsx +22 -0
- package/ui/Loading/Spin.tsx +22 -0
- package/ui/Loading/index.tsx +8 -0
- package/ui/Menu.tsx +273 -0
- package/ui/Modal.tsx +87 -0
- package/ui/Model/AdminPanel.tsx +51 -0
- package/ui/Model/Edit.tsx +46 -0
- package/ui/Model/EditModal.tsx +301 -0
- package/ui/Model/EditWrapper.tsx +48 -0
- package/ui/Model/LoadInit.tsx +11 -0
- package/ui/Model/New.tsx +46 -0
- package/ui/Model/NewWrapper.tsx +20 -0
- package/ui/Model/NewWrapper_Client.tsx +57 -0
- package/ui/Model/Remove.tsx +75 -0
- package/ui/Model/RemoveWrapper.tsx +38 -0
- package/ui/Model/SureToRemove.tsx +108 -0
- package/ui/Model/View.tsx +65 -0
- package/ui/Model/ViewEditModal.tsx +125 -0
- package/ui/Model/ViewModal.tsx +71 -0
- package/ui/Model/ViewWrapper.tsx +38 -0
- package/ui/Model/index.ts +33 -0
- package/ui/Model/index_.tsx +16 -0
- package/ui/More.tsx +56 -0
- package/ui/ObjectId.tsx +29 -0
- package/ui/Pagination.tsx +120 -0
- package/ui/Popconfirm.tsx +135 -0
- package/ui/Portal.tsx +10 -0
- package/ui/Radio.tsx +53 -0
- package/ui/RecentTime.tsx +123 -0
- package/ui/Refresh.tsx +24 -0
- package/ui/ScreenNavigator.tsx +129 -0
- package/ui/Select.tsx +322 -0
- package/ui/Signal/Arg.tsx +352 -0
- package/ui/Signal/Doc.tsx +231 -0
- package/ui/Signal/Listener.tsx +74 -0
- package/ui/Signal/Message.tsx +267 -0
- package/ui/Signal/Object.tsx +131 -0
- package/ui/Signal/PubSub.tsx +247 -0
- package/ui/Signal/Request.tsx +30 -0
- package/ui/Signal/Response.tsx +76 -0
- package/ui/Signal/RestApi.tsx +390 -0
- package/ui/Signal/WebSocket.tsx +47 -0
- package/ui/Signal/index.ts +10 -0
- package/ui/Signal/makeExample.ts +75 -0
- package/ui/System/CSR.tsx +420 -0
- package/ui/System/Client.tsx +296 -0
- package/ui/System/Common.tsx +83 -0
- package/ui/System/DevModeToggle.tsx +21 -0
- package/ui/System/Gtag.tsx +69 -0
- package/ui/System/Messages.tsx +175 -0
- package/ui/System/Reconnect.tsx +156 -0
- package/ui/System/Root.tsx +10 -0
- package/ui/System/SSR.tsx +163 -0
- package/ui/System/SelectLanguage.tsx +47 -0
- package/ui/System/ThemeToggle.tsx +98 -0
- package/ui/System/index.tsx +23 -0
- package/ui/Tab/Menu.tsx +56 -0
- package/ui/Tab/Menus.tsx +10 -0
- package/ui/Tab/Panel.tsx +25 -0
- package/ui/Tab/Provider.tsx +25 -0
- package/ui/Tab/context.ts +16 -0
- package/ui/Tab/index.tsx +11 -0
- package/ui/Table.tsx +131 -0
- package/ui/ToggleSelect.tsx +144 -0
- package/ui/Unauthorized.tsx +29 -0
- package/ui/animated.tsx +8 -0
- package/ui/fontCss.ts +86 -0
- package/ui/index.ts +43 -0
- package/ui/styles.css +619 -0
- package/webkit/bootCsr.tsx +275 -0
- package/webkit/createRobotPage.ts +15 -0
- package/webkit/createSitemapPage.ts +4 -0
- package/webkit/index.ts +19 -0
- package/webkit/lazy.tsx +37 -0
- package/webkit/types.ts +7 -0
- package/webkit/useCamera.tsx +99 -0
- package/webkit/useCodepush.tsx +99 -0
- package/webkit/useContact.tsx +48 -0
- package/webkit/useCsrValues.ts +661 -0
- package/webkit/useDebounce.ts +24 -0
- package/webkit/useFetch.ts +48 -0
- package/webkit/useGeoLocation.tsx +24 -0
- package/webkit/useHistory.ts +76 -0
- package/webkit/useInterval.ts +21 -0
- package/webkit/useLocation.ts +69 -0
- package/webkit/usePurchase.tsx +156 -0
- package/webkit/usePushNoti.tsx +48 -0
- package/webkit/useThrottle.ts +22 -0
- package/src/index.js +0 -2
- package/src/index.js.map +0 -1
- package/src/lib/akan2.js +0 -4
- package/src/lib/akan2.js.map +0 -1
- package/src/run.js +0 -4
- package/src/run.js.map +0 -1
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Code of Conduct
|
|
2
|
+
|
|
3
|
+
## Our Pledge
|
|
4
|
+
|
|
5
|
+
We want Akan.js to be a welcoming, useful, and respectful project for everyone who participates. We pledge to
|
|
6
|
+
make participation in this community harassment-free regardless of age, body size, disability, ethnicity, sex
|
|
7
|
+
characteristics, gender identity and expression, level of experience, education, socio-economic status,
|
|
8
|
+
nationality, personal appearance, race, religion, or sexual identity and orientation.
|
|
9
|
+
|
|
10
|
+
## Our Standards
|
|
11
|
+
|
|
12
|
+
Examples of behavior that contributes to a positive environment:
|
|
13
|
+
|
|
14
|
+
- Using welcoming and inclusive language.
|
|
15
|
+
- Respecting different viewpoints and experiences.
|
|
16
|
+
- Giving and receiving constructive feedback gracefully.
|
|
17
|
+
- Focusing disagreement on ideas, trade-offs, and code rather than people.
|
|
18
|
+
- Showing empathy toward other community members.
|
|
19
|
+
|
|
20
|
+
Examples of unacceptable behavior:
|
|
21
|
+
|
|
22
|
+
- Harassment, intimidation, or discriminatory language.
|
|
23
|
+
- Personal attacks, trolling, insults, or sustained disruption.
|
|
24
|
+
- Publishing another person's private information without explicit permission.
|
|
25
|
+
- Sexualized language or imagery in community spaces.
|
|
26
|
+
- Any conduct that would reasonably be considered inappropriate in a professional setting.
|
|
27
|
+
|
|
28
|
+
## Scope
|
|
29
|
+
|
|
30
|
+
This Code of Conduct applies within project spaces, including issues, pull requests, discussions, documentation,
|
|
31
|
+
community chat, events, and any public context where someone represents the Akan.js project.
|
|
32
|
+
|
|
33
|
+
## Enforcement
|
|
34
|
+
|
|
35
|
+
Project maintainers are responsible for clarifying and enforcing acceptable behavior. Maintainers may remove,
|
|
36
|
+
edit, or reject comments, commits, code, issues, pull requests, or other contributions that do not follow this
|
|
37
|
+
Code of Conduct.
|
|
38
|
+
|
|
39
|
+
Maintainers may also temporarily or permanently limit participation for behavior they consider inappropriate,
|
|
40
|
+
threatening, offensive, or harmful.
|
|
41
|
+
|
|
42
|
+
## Reporting
|
|
43
|
+
|
|
44
|
+
If you experience or witness unacceptable behavior, please report it to the project maintainers. If a dedicated
|
|
45
|
+
security or community contact is added later, this section should be updated with that email address or private
|
|
46
|
+
reporting channel.
|
|
47
|
+
|
|
48
|
+
All reports will be reviewed and investigated. Maintainers will respect the privacy and safety of the reporter
|
|
49
|
+
as much as possible.
|
|
50
|
+
|
|
51
|
+
## Attribution
|
|
52
|
+
|
|
53
|
+
This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org/),
|
|
54
|
+
version 2.1.
|
package/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# Contributing to Akan.js
|
|
2
|
+
|
|
3
|
+
Thank you for your interest in contributing to Akan.js. This guide is a starting point for opening issues,
|
|
4
|
+
submitting pull requests, and keeping changes reviewable.
|
|
5
|
+
|
|
6
|
+
## Project Shape
|
|
7
|
+
|
|
8
|
+
Akan.js is a Bun-first TypeScript monorepo.
|
|
9
|
+
|
|
10
|
+
- `pkgs/akanjs`: framework package, runtime surfaces, CLI, devkit, and tooling.
|
|
11
|
+
- `apps`: application examples and product surfaces built with Akan.
|
|
12
|
+
- `libs`: shared domain and utility libraries.
|
|
13
|
+
- `infra`: deployment, Helm, edge, and CI/CD assets.
|
|
14
|
+
|
|
15
|
+
When changing framework code, prefer existing package subpaths and keep the root `akanjs` entrypoint small.
|
|
16
|
+
Runtime boundaries are part of the package design.
|
|
17
|
+
|
|
18
|
+
## Before You Start
|
|
19
|
+
|
|
20
|
+
- Search existing issues and pull requests before opening a new one.
|
|
21
|
+
- Keep changes focused on one concern at a time.
|
|
22
|
+
- Prefer existing patterns over new abstractions.
|
|
23
|
+
- Avoid broad formatting-only changes unless the pull request is explicitly about formatting.
|
|
24
|
+
- Do not commit secrets, generated credentials, local `.env` files, or private deployment values.
|
|
25
|
+
|
|
26
|
+
## Development
|
|
27
|
+
|
|
28
|
+
Install dependencies with Bun:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
bun install
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Useful commands:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
bun run akan lint-all --fix=false
|
|
38
|
+
bun run akan build <appName>
|
|
39
|
+
bun run akan start <appName>
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
After changing application source code, verify the affected app when practical:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
bun run akan start <appName>
|
|
46
|
+
bun run akan build <appName>
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Pull Request Guidelines
|
|
50
|
+
|
|
51
|
+
A good pull request should include:
|
|
52
|
+
|
|
53
|
+
- A short explanation of the problem and the approach.
|
|
54
|
+
- Screenshots or recordings for visible UI changes.
|
|
55
|
+
- Tests, examples, or manual verification notes for behavior changes.
|
|
56
|
+
- Notes about breaking changes, migration steps, or follow-up work.
|
|
57
|
+
|
|
58
|
+
Reviewers should be able to understand the change from the pull request description and the diff without
|
|
59
|
+
reverse-engineering unrelated context.
|
|
60
|
+
|
|
61
|
+
## Coding Style
|
|
62
|
+
|
|
63
|
+
- Use TypeScript and Bun-first workflows.
|
|
64
|
+
- Follow the existing file layout, naming conventions, and module boundaries.
|
|
65
|
+
- Use Biome formatting conventions used by the repository.
|
|
66
|
+
- Keep code readable six months from now: clear declarations beat clever shortcuts.
|
|
67
|
+
- Add comments only when they explain non-obvious behavior or decisions.
|
|
68
|
+
|
|
69
|
+
## Reporting Issues
|
|
70
|
+
|
|
71
|
+
When reporting a bug, include:
|
|
72
|
+
|
|
73
|
+
- The Akan.js version or commit.
|
|
74
|
+
- The Bun version and operating system.
|
|
75
|
+
- A minimal reproduction or the smallest code sample that shows the problem.
|
|
76
|
+
- Expected behavior and actual behavior.
|
|
77
|
+
- Relevant logs, stack traces, or screenshots.
|
|
78
|
+
|
|
79
|
+
For feature requests, describe the business problem first, then the API or behavior you would like to see.
|
|
80
|
+
|
|
81
|
+
## License
|
|
82
|
+
|
|
83
|
+
By contributing to this repository, you agree that your contributions will be licensed under the MIT License.
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Akan Team
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.ko.md
ADDED
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
# Akan.js
|
|
2
|
+
|
|
3
|
+
[English](./README.md) | [Docs](https://akanjs.com/docs) | [npm](https://www.npmjs.com/package/akanjs)
|
|
4
|
+
|
|
5
|
+
**코드가 아니라, 비즈니스를 씁니다.**
|
|
6
|
+
**Write the business, not the plumbing.**
|
|
7
|
+
|
|
8
|
+
Akan.js는 비즈니스 정의가 곧 애플리케이션이 되도록 설계된 Bun-first 풀스택 TypeScript
|
|
9
|
+
프레임워크입니다. 하나의 코드베이스에서 SEO 웹, iOS/Android 앱 화면, 서버, 데이터베이스 계약,
|
|
10
|
+
인프라 산출물, 문서화까지 이어갑니다.
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
bunx create-akan-workspace@latest
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## 왜 Akan인가
|
|
17
|
+
|
|
18
|
+
Akan은 기술 계층마다 같은 의도를 다시 쓰는 대신, 비즈니스가 무엇을 하는지 또렷하게 선언하도록
|
|
19
|
+
돕습니다. 도메인을 한 번 정의하면 schema, API, fetch client, store, UI, server, deployment
|
|
20
|
+
artifact, generated reference가 같은 의도에서 이어집니다.
|
|
21
|
+
|
|
22
|
+
- **Agents write**: 비즈니스 정의가 코드의 원천입니다. 반복적인 프레임워크 코드는 생성과 규칙이 맡습니다.
|
|
23
|
+
- **Keep it minimal**: 한 줄의 의도가 웹, 앱, 서버, 데이터베이스, 배포까지 이어집니다.
|
|
24
|
+
- **Always readable**: 적은 파일, 엄격한 규칙, 예측 가능한 선언 방식으로 6개월 뒤에도 읽히는 코드를 만듭니다.
|
|
25
|
+
- **Nice to review**: 군더더기 없는 도메인 변경은 확인하기 쉽고, 리뷰가 빠르며, 곧장 배포하기 좋습니다.
|
|
26
|
+
|
|
27
|
+
## 요구사항
|
|
28
|
+
|
|
29
|
+
- [Bun](https://bun.sh) `>=1.3.13`
|
|
30
|
+
- TypeScript 중심의 애플리케이션 코드
|
|
31
|
+
- React 기반 UI surface
|
|
32
|
+
|
|
33
|
+
## 빠른 시작
|
|
34
|
+
|
|
35
|
+
바로 워크스페이스를 만들 수 있습니다.
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
bunx create-akan-workspace@latest
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
CLI를 전역으로 설치해서 사용할 수도 있습니다.
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
bun install -g akanjs --latest
|
|
45
|
+
akan create-workspace
|
|
46
|
+
cd <workspace-name>
|
|
47
|
+
akan start <app-name> --open
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
가장 작은 앱은 설정이 거의 없어도 시작할 수 있습니다.
|
|
51
|
+
|
|
52
|
+
```ts
|
|
53
|
+
import type { AppConfig } from "akanjs/devkit";
|
|
54
|
+
|
|
55
|
+
const config: AppConfig = {};
|
|
56
|
+
|
|
57
|
+
export default config;
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
프로덕션 앱은 `akan.config.ts`에서 routes, base paths, domains, mobile metadata, deployment options로
|
|
61
|
+
자연스럽게 확장됩니다.
|
|
62
|
+
|
|
63
|
+
## 오래 읽히는 코드
|
|
64
|
+
|
|
65
|
+
Akan은 오래 운영되는 애플리케이션을 이해하기 쉽게 유지하기 위해 중요한 결정을 명시적이고 반복
|
|
66
|
+
가능한 형태로 둡니다.
|
|
67
|
+
|
|
68
|
+
- **하나의 설정 표면**: `akan.config.ts`가 앱 단위 설정의 중심입니다. routes, domains, base paths,
|
|
69
|
+
mobile settings, deployment options가 필요해질 때까지 비워둘 수 있습니다.
|
|
70
|
+
- **모노리포 기반 재사용**: shared library와 domain module이 기본 단위이므로 검증된 비즈니스 코드를
|
|
71
|
+
앱마다 다시 만들지 않고 함께 사용할 수 있습니다.
|
|
72
|
+
- **엄격한 구조, 익숙한 코드**: 파일 위치, 파일명, 선언 방식, module boundary가 워크스페이스 전반에서
|
|
73
|
+
같은 패턴을 따르므로 다른 사람이 짠 코드도 내가 짠 코드처럼 읽힙니다.
|
|
74
|
+
|
|
75
|
+
## 도메인 모듈
|
|
76
|
+
|
|
77
|
+
Akan 개발의 중심 단위는 도메인 모듈입니다. 기술 계층별로 먼저 나누기보다 `user`, `product`,
|
|
78
|
+
`ticket`, `project`처럼 비즈니스 도메인별로 코드를 묶습니다.
|
|
79
|
+
|
|
80
|
+
```text
|
|
81
|
+
lib/product/
|
|
82
|
+
├── product.constant.ts # 모델, 스칼라, enum, 스키마 정의
|
|
83
|
+
├── product.dictionary.ts # i18n 라벨, 설명, 에러
|
|
84
|
+
├── product.signal.ts # 타입 안전한 endpoint 계약
|
|
85
|
+
├── product.document.ts # 영속성과 document query
|
|
86
|
+
├── product.service.ts # 비즈니스 로직
|
|
87
|
+
├── product.store.ts # 도메인 상태와 action
|
|
88
|
+
├── Product.Template.tsx # form 중심 UI
|
|
89
|
+
├── Product.Unit.tsx # list/item UI
|
|
90
|
+
├── Product.View.tsx # detail UI
|
|
91
|
+
└── Product.Zone.tsx # page/container UI
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
```mermaid
|
|
95
|
+
flowchart LR
|
|
96
|
+
ConstantDictionarySignal["constant + dictionary + signal"] --> DocumentService["document + service"]
|
|
97
|
+
ConstantDictionarySignal --> StoreComponents["store + UI components"]
|
|
98
|
+
DocumentService --> ServerRuntime["server runtime"]
|
|
99
|
+
StoreComponents --> ClientRuntime["client runtime"]
|
|
100
|
+
ServerRuntime --> DeployArtifacts["deploy artifacts"]
|
|
101
|
+
ClientRuntime --> DeployArtifacts
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
하나의 모델과 하나의 계약이 DB, 서버, API, 상태관리, UI까지 이어지기 때문에 계층마다 의도를
|
|
105
|
+
반복해서 작성할 필요가 줄어듭니다.
|
|
106
|
+
|
|
107
|
+
## Akan이 만드는 것
|
|
108
|
+
|
|
109
|
+
Akan은 보통 여러 프로젝트로 흩어지는 것들을 하나의 프레임워크로 묶습니다.
|
|
110
|
+
|
|
111
|
+
- SEO에 최적화된 server-side rendered web surface.
|
|
112
|
+
- 아름다운 페이지 전환을 가진 iOS/Android 친화 client-side rendered app surface.
|
|
113
|
+
- Bun 기반 HTTP/WebSocket server.
|
|
114
|
+
- SQLite-first 단순 서버 경로와 더 큰 시스템을 위한 Postgres/Redis 확장 경로.
|
|
115
|
+
- Schema validation, error handling, security helper, middleware.
|
|
116
|
+
- DB schema에서 server, API, state, UI까지 이어지는 type-safe flow.
|
|
117
|
+
- Schema, error, API description, UI copy에 걸친 i18n.
|
|
118
|
+
- 같은 정의에서 생성되는 DB/API 문서와 테스트 가능한 endpoint reference.
|
|
119
|
+
- Upload, authentication, admin, chat, board, notification 같은 조립 가능한 feature block.
|
|
120
|
+
|
|
121
|
+
배포와 문서 작성에 하루를 쓰고 있다면 뭔가 잘못된 것입니다. Akan은 schema와 endpoint 정의가
|
|
122
|
+
table reference, runtime contract, API docs, testable endpoint reference가 되도록 설계됩니다.
|
|
123
|
+
|
|
124
|
+
## 하나의 패키지, 여러 경계
|
|
125
|
+
|
|
126
|
+
Akan은 하나의 npm package인 `akanjs`로 배포됩니다.
|
|
127
|
+
|
|
128
|
+
root import는 의도적으로 작게 유지됩니다. server-only, client-only, UI, tooling surface를 명확히
|
|
129
|
+
나누기 위해 subpath import를 사용하세요.
|
|
130
|
+
|
|
131
|
+
```ts
|
|
132
|
+
import { Int, dayjs } from "akanjs/base";
|
|
133
|
+
import { via } from "akanjs/constant";
|
|
134
|
+
import { endpoint } from "akanjs/signal";
|
|
135
|
+
import { fetch } from "akanjs/fetch";
|
|
136
|
+
import { Button, Layout } from "akanjs/ui";
|
|
137
|
+
import type { PageConfig } from "akanjs/client";
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
```css
|
|
141
|
+
@import "akanjs/ui/styles.css";
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
이 구조는 설치와 업데이트를 단순하게 만들면서도 런타임 경계를 유지합니다. 프론트엔드 빌드는
|
|
145
|
+
UI barrel import를 leaf import로 다시 써서 클라이언트 번들을 작게 유지할 수 있습니다.
|
|
146
|
+
|
|
147
|
+
## 패키지 Surface
|
|
148
|
+
|
|
149
|
+
| Subpath | 역할 |
|
|
150
|
+
| --- | --- |
|
|
151
|
+
| `akanjs/base` | core primitive, scalar helper, environment helper, symbol, common type. |
|
|
152
|
+
| `akanjs/common` | 여러 Akan surface에서 함께 쓰는 cross-runtime helper. |
|
|
153
|
+
| `akanjs/constant` | model declaration, schema shaping, serialization, default, `via` builder. |
|
|
154
|
+
| `akanjs/dictionary` | locale, translation, natural-language metadata helper. |
|
|
155
|
+
| `akanjs/document` | database document schema, query builder, loader, persistence utility. |
|
|
156
|
+
| `akanjs/signal` | endpoint, slice, guard, middleware, serializer, typed signal contract. |
|
|
157
|
+
| `akanjs/service` | service module, adaptor, dependency injection metadata, business logic runtime. |
|
|
158
|
+
| `akanjs/fetch` | typed fetch client, HTTP client, WebSocket client, request storage. |
|
|
159
|
+
| `akanjs/store` | domain state, action, store registry, root-store helper. |
|
|
160
|
+
| `akanjs/ui` | layout, form, modal, table, loading, model view 등 React UI component. |
|
|
161
|
+
| `akanjs/client` | client routing, cookie, storage, locale, device, CSR type, page helper. |
|
|
162
|
+
| `akanjs/client` | Akan page runtime에서 사용하는 client bootstrap과 location helper. |
|
|
163
|
+
| `akanjs/server` | server app runtime, route composition, SSR/RSC artifact, proxy, sitemap, server type. |
|
|
164
|
+
| `akanjs/devkit` | build runner, config loader, code generation, scanner, transform, CLI helper, tooling. |
|
|
165
|
+
| `akanjs/test` | test helper와 sample generation utility. |
|
|
166
|
+
| `akanjs/cli` | programmatic CLI entrypoint. 실행 명령은 `akan`입니다. |
|
|
167
|
+
|
|
168
|
+
특수 public surface:
|
|
169
|
+
|
|
170
|
+
- `akanjs/ui/styles.css`
|
|
171
|
+
- `akanjs/capacitor.base.config`
|
|
172
|
+
- `akanjs/server/rsc-worker`
|
|
173
|
+
- `akanjs/package.json`
|
|
174
|
+
|
|
175
|
+
## CLI 개요
|
|
176
|
+
|
|
177
|
+
`akan` 명령은 워크스페이스 전체 생명주기를 관리합니다.
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
akan create-workspace
|
|
181
|
+
akan create-application <app-name>
|
|
182
|
+
akan create-module
|
|
183
|
+
akan create-scalar
|
|
184
|
+
akan start <app-name> --open
|
|
185
|
+
akan build <app-name>
|
|
186
|
+
akan lint-all
|
|
187
|
+
akan update
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
주요 영역:
|
|
191
|
+
|
|
192
|
+
- **Workspace**: workspace 생성, Mongo 설정 생성, lint, sync.
|
|
193
|
+
- **Application**: app start, build, typecheck, package, release.
|
|
194
|
+
- **Library**: shared library 생성, 설치, sync, push, pull.
|
|
195
|
+
- **Module and scalar**: domain module, model, view, unit, template, store 생성.
|
|
196
|
+
- **Cloud and release**: deployment asset 준비와 Akan package version update.
|
|
197
|
+
- **Guidelines**: agent와 contributor를 위한 framework coding guideline 생성과 확인.
|
|
198
|
+
|
|
199
|
+
## 애플리케이션 설정
|
|
200
|
+
|
|
201
|
+
`akan.config.ts`는 앱 단위 설정의 중심입니다. 단순한 앱에서는 비어 있을 수 있고, 필요할 때만
|
|
202
|
+
routes, domains, base paths, mobile settings로 확장됩니다.
|
|
203
|
+
|
|
204
|
+
```ts
|
|
205
|
+
import type { AppConfig } from "akanjs/devkit";
|
|
206
|
+
|
|
207
|
+
const config: AppConfig = {
|
|
208
|
+
routes: [
|
|
209
|
+
{ domains: { main: ["example.com", "www.example.com"] }, basePath: "web" },
|
|
210
|
+
{ domains: {}, basePath: "app" },
|
|
211
|
+
],
|
|
212
|
+
mobile: {
|
|
213
|
+
appName: "Example",
|
|
214
|
+
appId: "com.example.app",
|
|
215
|
+
version: "1.0.0",
|
|
216
|
+
buildNum: 1,
|
|
217
|
+
},
|
|
218
|
+
};
|
|
219
|
+
|
|
220
|
+
export default config;
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
## Contributor Notes
|
|
224
|
+
|
|
225
|
+
이 저장소는 Bun-first monorepo입니다. Framework code는 `pkgs/akanjs`, application은 `apps`,
|
|
226
|
+
shared library는 `libs`, deployment asset은 `infra`에 있습니다.
|
|
227
|
+
|
|
228
|
+
유용한 명령:
|
|
229
|
+
|
|
230
|
+
```bash
|
|
231
|
+
akan lint-all --fix=false
|
|
232
|
+
akan build <appName>
|
|
233
|
+
akan start <appName>
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
framework code를 수정할 때는 기존 subpath를 우선 사용하고 root `akanjs` entrypoint는 작게 유지하세요.
|
|
237
|
+
이 package boundary는 runtime design의 일부입니다.
|
|
238
|
+
|
|
239
|
+
## 오픈소스 메모
|
|
240
|
+
|
|
241
|
+
- License: MIT. root `LICENSE`를 참고하세요.
|
|
242
|
+
- Repository: [akan-team/akanjs](https://github.com/akan-team/akanjs).
|
|
243
|
+
- Contribution guide: root `CONTRIBUTING.md`를 참고하세요.
|
|
244
|
+
- Code of conduct: root `CODE_OF_CONDUCT.md`를 참고하세요.
|
package/README.md
CHANGED
|
@@ -1,11 +1,242 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Akan.js
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[한국어](./README.ko.md) | [Docs](https://akanjs.com/docs) | [npm](https://www.npmjs.com/package/akanjs)
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
**Write the business, not the plumbing.**
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Akan.js is a Bun-first full-stack TypeScript framework for teams that want business definitions to be the
|
|
8
|
+
application. One cohesive codebase can produce SEO web surfaces, iOS and Android app surfaces, servers,
|
|
9
|
+
database contracts, infrastructure artifacts, and documentation.
|
|
8
10
|
|
|
9
|
-
|
|
11
|
+
```bash
|
|
12
|
+
bunx create-akan-workspace@latest
|
|
13
|
+
```
|
|
10
14
|
|
|
11
|
-
|
|
15
|
+
## Why Akan
|
|
16
|
+
|
|
17
|
+
Akan is designed for teams and solo builders who would rather describe what the business does than keep
|
|
18
|
+
rewriting the same intent for each technical layer. Define the domain once, then let the framework connect
|
|
19
|
+
the schema, API, fetch client, store, UI, server, deployment artifacts, and generated references.
|
|
20
|
+
|
|
21
|
+
- **Agents write**: business definitions are the source of truth; generation handles repetitive framework code.
|
|
22
|
+
- **Keep it minimal**: one line of intent can flow across web, app, server, database, and deployment.
|
|
23
|
+
- **Always readable**: fewer files, strict conventions, and predictable declarations keep code clear months later.
|
|
24
|
+
- **Nice to review**: focused domain changes are easier to inspect, approve, and ship.
|
|
25
|
+
|
|
26
|
+
## Requirements
|
|
27
|
+
|
|
28
|
+
- [Bun](https://bun.sh) `>=1.3.13`
|
|
29
|
+
- TypeScript-first application code
|
|
30
|
+
- React-based UI surfaces
|
|
31
|
+
|
|
32
|
+
## Quick Start
|
|
33
|
+
|
|
34
|
+
Create a workspace directly:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
bunx create-akan-workspace@latest
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Or install the CLI globally:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
bun install -g akanjs --latest
|
|
44
|
+
akan create-workspace
|
|
45
|
+
cd <workspace-name>
|
|
46
|
+
akan start <app-name> --open
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
A minimal app can start with almost no configuration:
|
|
50
|
+
|
|
51
|
+
```ts
|
|
52
|
+
import type { AppConfig } from "akanjs/devkit";
|
|
53
|
+
|
|
54
|
+
const config: AppConfig = {};
|
|
55
|
+
|
|
56
|
+
export default config;
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Production apps can grow into routes, base paths, domains, mobile metadata, and deployment options through
|
|
60
|
+
`akan.config.ts`.
|
|
61
|
+
|
|
62
|
+
## Readable By Design
|
|
63
|
+
|
|
64
|
+
Akan keeps long-lived applications understandable by making the important decisions explicit and repeatable.
|
|
65
|
+
|
|
66
|
+
- **One configuration surface**: `akan.config.ts` is the app-level control plane. It can stay empty until the
|
|
67
|
+
app actually needs routes, domains, base paths, mobile settings, or deployment options.
|
|
68
|
+
- **Monorepo-native reuse**: shared libraries and domain modules are first-class, so validated business code can
|
|
69
|
+
be reused without rebuilding the same wheel in each app.
|
|
70
|
+
- **Strict structure, familiar code**: file locations, names, declarations, and module boundaries follow the same
|
|
71
|
+
pattern across the workspace, so code written by another contributor still reads like local code.
|
|
72
|
+
|
|
73
|
+
## The Domain Module
|
|
74
|
+
|
|
75
|
+
The domain module is the center of Akan development. Instead of organizing code by technical layer first,
|
|
76
|
+
Akan organizes code around business domains such as `user`, `product`, `ticket`, or `project`.
|
|
77
|
+
|
|
78
|
+
```text
|
|
79
|
+
lib/product/
|
|
80
|
+
├── product.constant.ts # model, scalar, enum, schema definition
|
|
81
|
+
├── product.dictionary.ts # i18n labels, descriptions, errors
|
|
82
|
+
├── product.signal.ts # typed endpoint contract
|
|
83
|
+
├── product.document.ts # persistence and document queries
|
|
84
|
+
├── product.service.ts # business logic
|
|
85
|
+
├── product.store.ts # domain state and actions
|
|
86
|
+
├── Product.Template.tsx # form-oriented UI
|
|
87
|
+
├── Product.Unit.tsx # list/item UI
|
|
88
|
+
├── Product.View.tsx # detail UI
|
|
89
|
+
└── Product.Zone.tsx # page/container UI
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
```mermaid
|
|
93
|
+
flowchart LR
|
|
94
|
+
ConstantDictionarySignal["constant + dictionary + signal"] --> DocumentService["document + service"]
|
|
95
|
+
ConstantDictionarySignal --> StoreComponents["store + UI components"]
|
|
96
|
+
DocumentService --> ServerRuntime["server runtime"]
|
|
97
|
+
StoreComponents --> ClientRuntime["client runtime"]
|
|
98
|
+
ServerRuntime --> DeployArtifacts["deploy artifacts"]
|
|
99
|
+
ClientRuntime --> DeployArtifacts
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
This structure lets one model and one contract flow through the database, server, API, state management,
|
|
103
|
+
and UI without duplicating intent across layers.
|
|
104
|
+
|
|
105
|
+
## What Akan Builds
|
|
106
|
+
|
|
107
|
+
Akan is one framework for the pieces that normally become separate projects:
|
|
108
|
+
|
|
109
|
+
- SEO-optimized server-side rendered web surfaces.
|
|
110
|
+
- iOS and Android friendly client-side rendered app surfaces with page transitions.
|
|
111
|
+
- Bun-powered HTTP and WebSocket servers.
|
|
112
|
+
- SQLite-first simple server paths, with Postgres and Redis expansion paths for larger systems.
|
|
113
|
+
- Schema validation, error handling, security helpers, and middleware.
|
|
114
|
+
- Type-safe flow from database schema to server, API, state, and UI.
|
|
115
|
+
- Internationalized schemas, errors, API descriptions, and UI copy.
|
|
116
|
+
- Generated database and API documentation from the same definitions that run the app.
|
|
117
|
+
- Composable feature blocks for upload, authentication, admin, chat, boards, and notifications.
|
|
118
|
+
|
|
119
|
+
Deployment and documentation should not consume a day of work. Akan is built so schema and endpoint
|
|
120
|
+
definitions can also become table references, runtime contracts, API docs, and testable endpoint references.
|
|
121
|
+
|
|
122
|
+
## One Package, Many Boundaries
|
|
123
|
+
|
|
124
|
+
Akan is published as a single npm package: `akanjs`.
|
|
125
|
+
|
|
126
|
+
The root import is intentionally small. Use subpath imports to keep server-only, client-only, UI, and
|
|
127
|
+
tooling surfaces clear:
|
|
128
|
+
|
|
129
|
+
```ts
|
|
130
|
+
import { Int, dayjs } from "akanjs/base";
|
|
131
|
+
import { via } from "akanjs/constant";
|
|
132
|
+
import { endpoint } from "akanjs/signal";
|
|
133
|
+
import { fetch } from "akanjs/fetch";
|
|
134
|
+
import { Button, Layout } from "akanjs/ui";
|
|
135
|
+
import type { PageConfig } from "akanjs/client";
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
```css
|
|
139
|
+
@import "akanjs/ui/styles.css";
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
This model keeps install and update flows simple while preserving runtime boundaries and allowing the
|
|
143
|
+
frontend build to rewrite UI barrel imports into leaf imports.
|
|
144
|
+
|
|
145
|
+
## Package Surface
|
|
146
|
+
|
|
147
|
+
| Subpath | Purpose |
|
|
148
|
+
| --- | --- |
|
|
149
|
+
| `akanjs/base` | Core primitives, scalar helpers, environment helpers, symbols, and common types. |
|
|
150
|
+
| `akanjs/common` | Shared cross-runtime helpers used by multiple Akan surfaces. |
|
|
151
|
+
| `akanjs/constant` | Model declarations, schema shaping, serialization, defaults, and the `via` builder. |
|
|
152
|
+
| `akanjs/dictionary` | Locale, translation, and dictionary helpers for natural-language metadata. |
|
|
153
|
+
| `akanjs/document` | Database document schemas, query builders, loaders, and persistence utilities. |
|
|
154
|
+
| `akanjs/signal` | Endpoint, slice, guard, middleware, serializer, and typed signal contracts. |
|
|
155
|
+
| `akanjs/service` | Service modules, adaptors, dependency injection metadata, and business logic runtime. |
|
|
156
|
+
| `akanjs/fetch` | Typed fetch clients, HTTP clients, WebSocket clients, and request storage. |
|
|
157
|
+
| `akanjs/store` | Domain state, actions, store registry, and root-store helpers. |
|
|
158
|
+
| `akanjs/ui` | React components and UI primitives such as layout, form, modal, table, loading, and model views. |
|
|
159
|
+
| `akanjs/client` | Client routing, cookies, storage, locale, device, CSR types, and page helpers. |
|
|
160
|
+
| `akanjs/client` | Client bootstrapping and location helpers used by Akan page runtimes. |
|
|
161
|
+
| `akanjs/server` | Server app runtime, route composition, SSR/RSC artifacts, proxying, sitemap, and server types. |
|
|
162
|
+
| `akanjs/devkit` | Build runners, config loaders, code generation, scanners, transforms, CLI helpers, and tooling. |
|
|
163
|
+
| `akanjs/test` | Test helpers and sample generation utilities. |
|
|
164
|
+
| `akanjs/cli` | Programmatic CLI entrypoint. The executable command is `akan`. |
|
|
165
|
+
|
|
166
|
+
Special public surfaces:
|
|
167
|
+
|
|
168
|
+
- `akanjs/ui/styles.css`
|
|
169
|
+
- `akanjs/capacitor.base.config`
|
|
170
|
+
- `akanjs/server/rsc-worker`
|
|
171
|
+
- `akanjs/package.json`
|
|
172
|
+
|
|
173
|
+
## CLI Overview
|
|
174
|
+
|
|
175
|
+
The `akan` command manages the whole workspace lifecycle.
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
akan create-workspace
|
|
179
|
+
akan create-application <app-name>
|
|
180
|
+
akan create-module
|
|
181
|
+
akan create-scalar
|
|
182
|
+
akan start <app-name> --open
|
|
183
|
+
akan build <app-name>
|
|
184
|
+
akan lint-all
|
|
185
|
+
akan update
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
Common areas:
|
|
189
|
+
|
|
190
|
+
- **Workspace**: create workspaces, generate Mongo configuration, lint and sync projects.
|
|
191
|
+
- **Application**: start, build, typecheck, package, and release apps.
|
|
192
|
+
- **Library**: create, install, sync, push, and pull shared libraries.
|
|
193
|
+
- **Module and scalar**: generate domain modules, models, views, units, templates, and stores.
|
|
194
|
+
- **Cloud and release**: prepare deployment assets and update Akan package versions.
|
|
195
|
+
- **Guidelines**: generate and inspect framework coding guidelines for agents and contributors.
|
|
196
|
+
|
|
197
|
+
## Application Configuration
|
|
198
|
+
|
|
199
|
+
`akan.config.ts` is the single place for app-level configuration. It can be empty for simple apps, then
|
|
200
|
+
grow only when the app needs routes, domains, base paths, or mobile settings.
|
|
201
|
+
|
|
202
|
+
```ts
|
|
203
|
+
import type { AppConfig } from "akanjs/devkit";
|
|
204
|
+
|
|
205
|
+
const config: AppConfig = {
|
|
206
|
+
routes: [
|
|
207
|
+
{ domains: { main: ["example.com", "www.example.com"] }, basePath: "web" },
|
|
208
|
+
{ domains: {}, basePath: "app" },
|
|
209
|
+
],
|
|
210
|
+
mobile: {
|
|
211
|
+
appName: "Example",
|
|
212
|
+
appId: "com.example.app",
|
|
213
|
+
version: "1.0.0",
|
|
214
|
+
buildNum: 1,
|
|
215
|
+
},
|
|
216
|
+
};
|
|
217
|
+
|
|
218
|
+
export default config;
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
## Contributor Notes
|
|
222
|
+
|
|
223
|
+
This repository is a Bun-first monorepo. Framework code lives under `pkgs/akanjs`, applications under
|
|
224
|
+
`apps`, shared libraries under `libs`, and deployment assets under `infra`.
|
|
225
|
+
|
|
226
|
+
Useful commands:
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
akan lint-all --fix=false
|
|
230
|
+
akan build <appName>
|
|
231
|
+
akan start <appName>
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
When editing framework code, prefer established subpaths and keep the root `akanjs` entrypoint small.
|
|
235
|
+
The package boundary is part of the runtime design.
|
|
236
|
+
|
|
237
|
+
## Open Source Notes
|
|
238
|
+
|
|
239
|
+
- License: MIT. See the root `LICENSE`.
|
|
240
|
+
- Repository: [akan-team/akanjs](https://github.com/akan-team/akanjs).
|
|
241
|
+
- Contribution guide: see the root `CONTRIBUTING.md`.
|
|
242
|
+
- Code of conduct: see the root `CODE_OF_CONDUCT.md`.
|