From a1509bbaeefcdf9f1d4bf5c3f5d0c2ac5f61eff4 Mon Sep 17 00:00:00 2001 From: melvinchia3636 Date: Wed, 10 Jun 2026 00:07:29 +0800 Subject: [PATCH] refactor: massive codebase folder restructuring --- .github/copilot-instructions.md | 67 ----- .gitignore | 10 +- {server => apps/api}/package.json | 4 +- {server => apps/api}/src/core/app.ts | 0 {server => apps/api}/src/core/bin/yt-dlp | Bin apps/api/src/core/constants.ts | 3 + .../src/core/functions/auth/encryption.ts | 0 .../src/core/functions/auth/validateOTP.ts | 0 .../functions/database/PBService/index.ts | 0 .../database/PBService/services/create.ts | 0 .../database/PBService/services/delete.ts | 0 .../PBService/services/getFirstListItem.ts | 0 .../PBService/services/getFullList.ts | 0 .../database/PBService/services/getList.ts | 0 .../database/PBService/services/getOne.ts | 0 .../database/PBService/services/update.ts | 0 .../PBService/utils/getFinalCollectionName.ts | 0 .../utils/recursivelyConstructFilter.ts | 0 .../src/core/functions/database/dbUtils.ts | 0 .../src/core/functions/database/getAPIKey.ts | 2 +- .../api}/src/core/functions/database/index.ts | 0 .../src/core/functions/database/validation.ts | 0 .../core/functions/encryption/constants.ts | 0 .../encryption/functions/decryptAESKey.ts | 0 .../encryption/functions/decryptPayload.ts | 0 .../encryption/functions/encryptResponse.ts | 0 .../encryption/functions/ensureKeyExists.ts | 0 .../encryption/functions/getPublicKey.ts | 0 .../src/core/functions/encryption/index.ts | 0 .../src/core/functions/encryption/types.ts | 0 .../src/core/functions/external/ai/index.ts | 0 .../ai/providers/deepseek.provider.ts | 0 .../external/ai/providers/groq.provider.ts | 0 .../functions/external/ai/providers/index.ts | 0 .../external/ai/providers/ollama.provider.ts | 0 .../external/ai/providers/openai.provider.ts | 0 .../src/core/functions/external/location.ts | 0 .../api}/src/core/functions/external/ocr.ts | 0 .../initialization/ensureCredentials.ts | 0 .../functions/initialization/localeService.ts | 0 .../api}/src/core/functions/logging.ts | 0 .../core/functions/media/convertPDFToImage.ts | 0 .../src/core/functions/media/retrieveMedia.ts | 0 .../functions/modules/loadModuleRoutes.ts | 2 +- .../routes/functions/controllerLogic.ts | 0 .../functions/routes/functions/forgeRouter.ts | 0 .../routes/utils/checkRecordExistence.ts | 0 .../functions/routes/utils/coreContext.ts | 0 .../core/functions/routes/utils/getAESKey.ts | 0 .../functions/routes/utils/parsePayload.ts | 0 .../core/functions/routes/utils/parseQuery.ts | 0 .../core/functions/routes/utils/response.ts | 0 .../functions/routes/utils/restoreDataType.ts | 0 .../routes/utils/splitMediaAndData.ts | 0 .../routes/utils/uploadMiddleware.ts | 0 .../routes/utils/validateAuthToken.ts | 0 .../functions/socketio/createSocketServer.ts | 0 .../core/functions/socketio/setupSocket.ts | 0 .../src/core/functions/socketio/taskPool.ts | 0 .../utils/checkModulesAvailability.ts | 2 +- .../core/functions/utils/tempFileManager.ts | 0 .../core/functions/utils/zodResponseFormat.ts | 0 .../src/core/middlewares/morganMiddleware.ts | 0 .../middlewares/rateLimitingMiddleware.ts | 0 .../api}/src/core/models/digits.traineddata | Bin .../api}/src/core/models/eng.traineddata | Bin .../routes/constants/corsAllowedOrigins.ts | 0 .../api}/src/core/routes/core.routes.ts | 7 +- {server => apps/api}/src/core/routes/forge.ts | 0 {server => apps/api}/src/core/routes/index.ts | 2 +- {server => apps/api}/src/express.d.ts | 0 {server => apps/api}/src/index.ts | 0 {server => apps/api}/src/lib/ai/index.ts | 0 .../api}/src/lib/ai/routes/imageGeneration.ts | 0 {server => apps/api}/src/lib/apiKeys/forge.ts | 0 {server => apps/api}/src/lib/apiKeys/index.ts | 0 .../api}/src/lib/apiKeys/routes/entries.ts | 0 .../api}/src/lib/apiKeys/schema.ts | 0 {server => apps/api}/src/lib/backups/index.ts | 0 .../api}/src/lib/corsAnywhere/index.ts | 0 .../api}/src/lib/database/index.ts | 0 .../src/lib/database/routes/collections.ts | 0 {server => apps/api}/src/lib/locales/index.ts | 2 +- .../api}/src/lib/locations/index.ts | 0 {server => apps/api}/src/lib/modules/forge.ts | 0 {server => apps/api}/src/lib/modules/index.ts | 0 .../api}/src/lib/modules/routes/categories.ts | 0 .../api}/src/lib/modules/routes/devMode.ts | 0 .../api}/src/lib/modules/routes/modules.ts | 4 +- .../lib/modules/utils/scanFederatedModules.ts | 0 {server => apps/api}/src/lib/pixabay/index.ts | 0 {server => apps/api}/src/lib/user/forge.ts | 0 {server => apps/api}/src/lib/user/index.ts | 0 .../api}/src/lib/user/routes/auth.ts | 0 .../api}/src/lib/user/routes/customFonts.ts | 0 .../api}/src/lib/user/routes/oauth.ts | 0 .../src/lib/user/routes/personalization.ts | 0 .../api}/src/lib/user/routes/qrLogin.ts | 0 .../api}/src/lib/user/routes/settings.ts | 0 .../api}/src/lib/user/routes/twoFA.ts | 0 {server => apps/api}/src/lib/user/schema.ts | 0 .../api}/src/lib/user/utils/auth.ts | 0 .../api}/src/lib/user/utils/otp.ts | 0 {server => apps/api}/tsconfig.json | 6 +- {server => apps/api}/vitest.config.ts | 0 {client => apps/web}/index.html | 0 {client => apps/web}/package.json | 0 {client => apps/web}/public/_redirects | 0 .../apps/CFOPAlgorithms/landing-f2l.webp | Bin .../apps/CFOPAlgorithms/landing-oll.webp | Bin .../apps/CFOPAlgorithms/landing-pll.webp | Bin .../RailwayMap/fonts/LTAIdentity-Medium.woff | Bin .../RailwayMap/fonts/LTAIdentity-Medium.woff2 | Bin .../public/assets/icons/icon-1024x1024.png | Bin .../web}/public/assets/icons/icon-128x128.png | Bin .../web}/public/assets/icons/icon-144x144.png | Bin .../web}/public/assets/icons/icon-152x152.png | Bin .../web}/public/assets/icons/icon-192x192.png | Bin .../web}/public/assets/icons/icon-256x256.png | Bin .../web}/public/assets/icons/icon-512x512.png | Bin .../web}/public/assets/icons/icon-72x72.png | Bin .../web}/public/assets/icons/icon-96x96.png | Bin {client => apps/web}/public/assets/login.jpg | Bin .../web}/public/assets/mockup/dark.png | Bin .../web}/public/assets/mockup/light.png | Bin .../web}/public/assets/mockup/system.png | Bin {client => apps/web}/public/icon.svg | 0 {client => apps/web}/public/manifest.json | 0 {client => apps/web}/src/App.tsx | 0 {client => apps/web}/src/bootstrap.tsx | 0 {client => apps/web/src}/contract.ts | 0 .../components/AvatarColumn.tsx | 0 .../components/OrdinaryColumn.tsx | 0 .../components/PasswordColumn.tsx | 0 .../components/QRLoginColumn.tsx | 0 .../components/TwoFAColumn.tsx | 0 .../web}/src/core/accountSettings/index.tsx | 0 .../web}/src/core/accountSettings/manifest.ts | 0 .../modals/DisableTwoFAModal.tsx | 0 .../components/OTPConfirmScreen.tsx | 0 .../components/QRCodeDisplay.tsx | 0 .../components/TwoFAEnableProcedure.tsx | 0 .../modals/EnableTwoFAModal/index.tsx | 0 .../accountSettings/modals/ModifyModal.tsx | 0 .../components/ConfirmScreen.tsx | 0 .../components/ErrorScreen.tsx | 0 .../components/InnerContent.tsx | 0 .../components/SuccessScreen.tsx | 0 .../hooks/useQRLoginApproval.ts | 0 .../modals/QRLoginScannerModal/index.tsx | 0 .../src/core/apiKeys/components/EntryItem.tsx | 0 .../web}/src/core/apiKeys/index.tsx | 0 .../web}/src/core/apiKeys/manifest.ts | 0 .../core/apiKeys/modals/ModifyAPIKeyModal.tsx | 0 .../modals/ModulesRequiredListModal.tsx | 0 .../src/core/auth/components/AuthFooter.tsx | 0 .../src/core/auth/components/AuthForm.tsx | 0 .../src/core/auth/components/AuthHeader.tsx | 0 .../core/auth/components/AuthSideImage.tsx | 0 .../components/SignInButton.tsx | 0 .../components/SigninWithProviderButton.tsx | 0 .../components/AuthSignInButtons/index.tsx | 0 .../auth/components/OrAuthWithDivider.tsx | 0 .../auth/components/passkeyLoginTodo.ts.txt | 0 {client => apps/web}/src/core/auth/index.tsx | 0 .../QRLoginModal/components/QRByStatus.tsx | 0 .../QRLoginModal/components/QRContent.tsx | 0 .../QRLoginModal/hooks/useQRLoginSession.ts | 0 .../core/auth/modals/QRLoginModal/index.tsx | 0 .../QRLoginModal/utils/QRSessionMngr.ts | 0 .../QRLoginModal/utils/getBrowserInfo.ts | 0 .../TwoFAModal/components/ResendOTPButton.tsx | 0 .../TwoFAModal/components/UsingAuthApp.tsx | 0 .../TwoFAModal/components/UsingEmail.tsx | 0 .../src/core/auth/modals/TwoFAModal/index.tsx | 0 .../web}/src/core/auth/pages/LoginPage.tsx | 0 .../src/core/auth/pages/UserCreationPage.tsx | 0 .../core/backups/components/BackupItem.tsx | 0 .../backups/components/CreateBackupModal.tsx | 0 .../web}/src/core/backups/index.tsx | 0 .../web}/src/core/backups/manifest.ts | 0 .../dashboard/components/DashboardGrid.tsx | 0 .../dashboard/components/NotFoundWidget.tsx | 0 .../dashboard/components/SaveButtonPopup.tsx | 0 .../web}/src/core/dashboard/index.css | 0 .../web}/src/core/dashboard/index.tsx | 0 .../web}/src/core/dashboard/manifest.ts | 0 .../components/ComponentItem.tsx | 0 .../modals/ManageWidgetsModal/index.tsx | 0 .../dashboard/providers/WidgetProvider.tsx | 0 .../web}/src/core/documentation/index.tsx | 0 .../web}/src/core/documentation/manifest.ts | 0 .../web}/src/core/moduleManager/manifest.ts | 0 .../Categories/components/CategoryItem.tsx | 0 .../components/ModifyCategoryModal.tsx | 0 .../components/ModifyTranslationKeyModal.tsx | 0 .../moduleManager/pages/Categories/index.tsx | 0 .../pages/Modules/components/ModuleItem.tsx | 0 .../moduleManager/pages/Modules/index.tsx | 0 .../components/BgImageSelector/index.tsx | 0 .../components/AdjustmentColumn.tsx | 0 .../components/ResultShowcase.tsx | 0 .../AdjustBgImageModal/constants/bg_blurs.ts | 0 .../modals/AdjustBgImageModal/index.tsx | 0 .../components/DefaultBgTempSelector.tsx | 0 .../components/BgTempSelector/index.tsx | 0 .../components/BorderRadiusIcon.tsx | 0 .../components/BorderRadiusSelector/index.tsx | 0 .../components/BorderedSelector.tsx | 0 .../FontFamilySelectorModal/index.tsx | 0 .../tabs/custom/components/CustomFontCard.tsx | 0 .../components/CustomFontUploadModal.tsx | 0 .../tabs/custom/index.tsx | 0 .../tabs/google/components/FontListItem.tsx | 0 .../google/components/GoogleFontFilter.tsx | 0 .../tabs/google/components/GoogleFontList.tsx | 0 .../google/contexts/GoogleFontContext.tsx | 0 .../tabs/google/index.tsx | 0 .../tabs/google/utils/stylesheet.ts | 0 .../components/FontFamilySelector/index.tsx | 0 .../utils/detectFontMetadata.ts | 0 .../components/FontScaleSelector.tsx | 0 .../components/LanguageSelector.tsx | 0 .../components/DefaultThemeColorSelector.tsx | 0 .../components/ThemeColorSelector/index.tsx | 0 .../components/ThemeSelector.tsx | 0 .../web}/src/core/personalization/index.tsx | 0 .../web}/src/core/personalization/manifest.ts | 0 .../providers/CoreFederationProvider.tsx | 2 +- {client => apps/web}/src/forgeAPI.tsx | 2 +- {client => apps/web}/src/i18n.ts | 0 {client => apps/web}/src/index.css | 0 {client => apps/web}/src/index.tsx | 0 .../features/APIKeyStatusProvider.tsx | 0 .../features/ExternalModuleProviders.tsx | 0 .../providers/features/I18nInitProvider.tsx | 0 .../features/UserPersonalizationProvider.tsx | 0 {client => apps/web}/src/providers/index.tsx | 0 .../src/providers/utils/providerUtils.tsx | 0 .../web}/src/routes/components/RootLayout.tsx | 0 .../routes/components/RouteErrorScreen.tsx | 0 .../components/Sidebar/MainSidebarTitle.tsx | 0 .../src/routes/components/Sidebar/Sidebar.tsx | 0 .../components/Sidebar/SidebarBottomBar.tsx | 0 .../components/Sidebar/SidebarEventBanner.tsx | 0 .../components/Sidebar/SidebarHeader.tsx | 0 .../components/Sidebar/SidebarItems.tsx | 0 .../web}/src/routes/hooks/useAppRouter.ts | 0 .../web}/src/routes/hooks/useTitleEffect.ts | 0 .../routes/providers/AppRoutesProvider.tsx | 0 .../web}/src/routes/utils/routeBuilder.tsx | 0 .../web}/src/routes/utils/routerFactory.tsx | 0 {client => apps/web}/src/vite-env.d.ts | 0 {client => apps/web}/tsconfig.json | 4 +- {client => apps/web}/vercel.json | 0 {client => apps/web}/vite.config.ts | 0 bun.lock | 272 +++++++++--------- docker-compose.yaml | 4 +- docker/client/Dockerfile | 4 +- docker/server/Dockerfile | 16 +- docker/server/entrypoint.sh | 10 +- docs/package.json | 2 +- {apps => modules}/.gitkeep | 0 {apps => modules}/package.json | 2 +- package.json | 6 +- .../configs/src/resolvers/alias-resolver.ts | 2 +- .../configs/src/vite/client-vite.config.ts | 6 +- .../src/loaders/loadModuleConfig.ts | 4 +- .../src/utils/extractProjectRoot.ts | 10 +- .../src/utils/getCallerModuleId.ts | 10 +- packages/ui/tsup.config.ts | 2 +- scripts/commit-all-modules.sh | 10 +- scripts/publish-all-modules.sh | 8 +- server/src/core/constants.ts | 3 - .../schema-generation/listSchemaPaths.ts | 10 +- .../matchCollectionToModule.ts | 8 +- tools/src/commands/db/utils/constants.ts | 4 +- tools/src/commands/db/utils/file-utils.ts | 4 +- tools/src/commands/dev/config/commands.ts | 11 +- .../locales/handlers/installLocaleHandler.ts | 2 +- .../locales/handlers/upgradeLocalesHandler.ts | 3 +- .../commands/modules/functions/listModules.ts | 2 +- .../functions/templates/copy-template.ts | 2 +- .../modules/handlers/createModuleHandler.ts | 6 +- .../modules/handlers/installModuleHandler.ts | 6 +- .../modules/handlers/publishModuleHandler.ts | 4 +- .../handlers/uninstallModuleHandler.ts | 8 +- .../modules/handlers/upgradeModuleHandler.ts | 2 +- tools/src/commands/modules/index.ts | 2 +- tools/src/utils/commands.ts | 4 +- tools/src/utils/normalizePackage.ts | 4 +- tools/src/utils/packageJson.ts | 18 +- tsconfig.eslint.json | 6 +- 293 files changed, 266 insertions(+), 330 deletions(-) delete mode 100644 .github/copilot-instructions.md rename {server => apps/api}/package.json (95%) rename {server => apps/api}/src/core/app.ts (100%) rename {server => apps/api}/src/core/bin/yt-dlp (100%) create mode 100644 apps/api/src/core/constants.ts rename {server => apps/api}/src/core/functions/auth/encryption.ts (100%) rename {server => apps/api}/src/core/functions/auth/validateOTP.ts (100%) rename {server => apps/api}/src/core/functions/database/PBService/index.ts (100%) rename {server => apps/api}/src/core/functions/database/PBService/services/create.ts (100%) rename {server => apps/api}/src/core/functions/database/PBService/services/delete.ts (100%) rename {server => apps/api}/src/core/functions/database/PBService/services/getFirstListItem.ts (100%) rename {server => apps/api}/src/core/functions/database/PBService/services/getFullList.ts (100%) rename {server => apps/api}/src/core/functions/database/PBService/services/getList.ts (100%) rename {server => apps/api}/src/core/functions/database/PBService/services/getOne.ts (100%) rename {server => apps/api}/src/core/functions/database/PBService/services/update.ts (100%) rename {server => apps/api}/src/core/functions/database/PBService/utils/getFinalCollectionName.ts (100%) rename {server => apps/api}/src/core/functions/database/PBService/utils/recursivelyConstructFilter.ts (100%) rename {server => apps/api}/src/core/functions/database/dbUtils.ts (100%) rename {server => apps/api}/src/core/functions/database/getAPIKey.ts (99%) rename {server => apps/api}/src/core/functions/database/index.ts (100%) rename {server => apps/api}/src/core/functions/database/validation.ts (100%) rename {server => apps/api}/src/core/functions/encryption/constants.ts (100%) rename {server => apps/api}/src/core/functions/encryption/functions/decryptAESKey.ts (100%) rename {server => apps/api}/src/core/functions/encryption/functions/decryptPayload.ts (100%) rename {server => apps/api}/src/core/functions/encryption/functions/encryptResponse.ts (100%) rename {server => apps/api}/src/core/functions/encryption/functions/ensureKeyExists.ts (100%) rename {server => apps/api}/src/core/functions/encryption/functions/getPublicKey.ts (100%) rename {server => apps/api}/src/core/functions/encryption/index.ts (100%) rename {server => apps/api}/src/core/functions/encryption/types.ts (100%) rename {server => apps/api}/src/core/functions/external/ai/index.ts (100%) rename {server => apps/api}/src/core/functions/external/ai/providers/deepseek.provider.ts (100%) rename {server => apps/api}/src/core/functions/external/ai/providers/groq.provider.ts (100%) rename {server => apps/api}/src/core/functions/external/ai/providers/index.ts (100%) rename {server => apps/api}/src/core/functions/external/ai/providers/ollama.provider.ts (100%) rename {server => apps/api}/src/core/functions/external/ai/providers/openai.provider.ts (100%) rename {server => apps/api}/src/core/functions/external/location.ts (100%) rename {server => apps/api}/src/core/functions/external/ocr.ts (100%) rename {server => apps/api}/src/core/functions/initialization/ensureCredentials.ts (100%) rename {server => apps/api}/src/core/functions/initialization/localeService.ts (100%) rename {server => apps/api}/src/core/functions/logging.ts (100%) rename {server => apps/api}/src/core/functions/media/convertPDFToImage.ts (100%) rename {server => apps/api}/src/core/functions/media/retrieveMedia.ts (100%) rename {server => apps/api}/src/core/functions/modules/loadModuleRoutes.ts (97%) rename {server => apps/api}/src/core/functions/routes/functions/controllerLogic.ts (100%) rename {server => apps/api}/src/core/functions/routes/functions/forgeRouter.ts (100%) rename {server => apps/api}/src/core/functions/routes/utils/checkRecordExistence.ts (100%) rename {server => apps/api}/src/core/functions/routes/utils/coreContext.ts (100%) rename {server => apps/api}/src/core/functions/routes/utils/getAESKey.ts (100%) rename {server => apps/api}/src/core/functions/routes/utils/parsePayload.ts (100%) rename {server => apps/api}/src/core/functions/routes/utils/parseQuery.ts (100%) rename {server => apps/api}/src/core/functions/routes/utils/response.ts (100%) rename {server => apps/api}/src/core/functions/routes/utils/restoreDataType.ts (100%) rename {server => apps/api}/src/core/functions/routes/utils/splitMediaAndData.ts (100%) rename {server => apps/api}/src/core/functions/routes/utils/uploadMiddleware.ts (100%) rename {server => apps/api}/src/core/functions/routes/utils/validateAuthToken.ts (100%) rename {server => apps/api}/src/core/functions/socketio/createSocketServer.ts (100%) rename {server => apps/api}/src/core/functions/socketio/setupSocket.ts (100%) rename {server => apps/api}/src/core/functions/socketio/taskPool.ts (100%) rename {server => apps/api}/src/core/functions/utils/checkModulesAvailability.ts (82%) rename {server => apps/api}/src/core/functions/utils/tempFileManager.ts (100%) rename {server => apps/api}/src/core/functions/utils/zodResponseFormat.ts (100%) rename {server => apps/api}/src/core/middlewares/morganMiddleware.ts (100%) rename {server => apps/api}/src/core/middlewares/rateLimitingMiddleware.ts (100%) rename {server => apps/api}/src/core/models/digits.traineddata (100%) rename {server => apps/api}/src/core/models/eng.traineddata (100%) rename {server => apps/api}/src/core/routes/constants/corsAllowedOrigins.ts (100%) rename {server => apps/api}/src/core/routes/core.routes.ts (94%) rename {server => apps/api}/src/core/routes/forge.ts (100%) rename {server => apps/api}/src/core/routes/index.ts (99%) rename {server => apps/api}/src/express.d.ts (100%) rename {server => apps/api}/src/index.ts (100%) rename {server => apps/api}/src/lib/ai/index.ts (100%) rename {server => apps/api}/src/lib/ai/routes/imageGeneration.ts (100%) rename {server => apps/api}/src/lib/apiKeys/forge.ts (100%) rename {server => apps/api}/src/lib/apiKeys/index.ts (100%) rename {server => apps/api}/src/lib/apiKeys/routes/entries.ts (100%) rename {server => apps/api}/src/lib/apiKeys/schema.ts (100%) rename {server => apps/api}/src/lib/backups/index.ts (100%) rename {server => apps/api}/src/lib/corsAnywhere/index.ts (100%) rename {server => apps/api}/src/lib/database/index.ts (100%) rename {server => apps/api}/src/lib/database/routes/collections.ts (100%) rename {server => apps/api}/src/lib/locales/index.ts (98%) rename {server => apps/api}/src/lib/locations/index.ts (100%) rename {server => apps/api}/src/lib/modules/forge.ts (100%) rename {server => apps/api}/src/lib/modules/index.ts (100%) rename {server => apps/api}/src/lib/modules/routes/categories.ts (100%) rename {server => apps/api}/src/lib/modules/routes/devMode.ts (100%) rename {server => apps/api}/src/lib/modules/routes/modules.ts (97%) rename {server => apps/api}/src/lib/modules/utils/scanFederatedModules.ts (100%) rename {server => apps/api}/src/lib/pixabay/index.ts (100%) rename {server => apps/api}/src/lib/user/forge.ts (100%) rename {server => apps/api}/src/lib/user/index.ts (100%) rename {server => apps/api}/src/lib/user/routes/auth.ts (100%) rename {server => apps/api}/src/lib/user/routes/customFonts.ts (100%) rename {server => apps/api}/src/lib/user/routes/oauth.ts (100%) rename {server => apps/api}/src/lib/user/routes/personalization.ts (100%) rename {server => apps/api}/src/lib/user/routes/qrLogin.ts (100%) rename {server => apps/api}/src/lib/user/routes/settings.ts (100%) rename {server => apps/api}/src/lib/user/routes/twoFA.ts (100%) rename {server => apps/api}/src/lib/user/schema.ts (100%) rename {server => apps/api}/src/lib/user/utils/auth.ts (100%) rename {server => apps/api}/src/lib/user/utils/otp.ts (100%) rename {server => apps/api}/tsconfig.json (76%) rename {server => apps/api}/vitest.config.ts (100%) rename {client => apps/web}/index.html (100%) rename {client => apps/web}/package.json (100%) rename {client => apps/web}/public/_redirects (100%) rename {client => apps/web}/public/assets/apps/CFOPAlgorithms/landing-f2l.webp (100%) rename {client => apps/web}/public/assets/apps/CFOPAlgorithms/landing-oll.webp (100%) rename {client => apps/web}/public/assets/apps/CFOPAlgorithms/landing-pll.webp (100%) rename {client => apps/web}/public/assets/apps/RailwayMap/fonts/LTAIdentity-Medium.woff (100%) rename {client => apps/web}/public/assets/apps/RailwayMap/fonts/LTAIdentity-Medium.woff2 (100%) rename {client => apps/web}/public/assets/icons/icon-1024x1024.png (100%) rename {client => apps/web}/public/assets/icons/icon-128x128.png (100%) rename {client => apps/web}/public/assets/icons/icon-144x144.png (100%) rename {client => apps/web}/public/assets/icons/icon-152x152.png (100%) rename {client => apps/web}/public/assets/icons/icon-192x192.png (100%) rename {client => apps/web}/public/assets/icons/icon-256x256.png (100%) rename {client => apps/web}/public/assets/icons/icon-512x512.png (100%) rename {client => apps/web}/public/assets/icons/icon-72x72.png (100%) rename {client => apps/web}/public/assets/icons/icon-96x96.png (100%) rename {client => apps/web}/public/assets/login.jpg (100%) rename {client => apps/web}/public/assets/mockup/dark.png (100%) rename {client => apps/web}/public/assets/mockup/light.png (100%) rename {client => apps/web}/public/assets/mockup/system.png (100%) rename {client => apps/web}/public/icon.svg (100%) rename {client => apps/web}/public/manifest.json (100%) rename {client => apps/web}/src/App.tsx (100%) rename {client => apps/web}/src/bootstrap.tsx (100%) rename {client => apps/web/src}/contract.ts (100%) rename {client => apps/web}/src/core/accountSettings/components/AvatarColumn.tsx (100%) rename {client => apps/web}/src/core/accountSettings/components/OrdinaryColumn.tsx (100%) rename {client => apps/web}/src/core/accountSettings/components/PasswordColumn.tsx (100%) rename {client => apps/web}/src/core/accountSettings/components/QRLoginColumn.tsx (100%) rename {client => apps/web}/src/core/accountSettings/components/TwoFAColumn.tsx (100%) rename {client => apps/web}/src/core/accountSettings/index.tsx (100%) rename {client => apps/web}/src/core/accountSettings/manifest.ts (100%) rename {client => apps/web}/src/core/accountSettings/modals/DisableTwoFAModal.tsx (100%) rename {client => apps/web}/src/core/accountSettings/modals/EnableTwoFAModal/components/OTPConfirmScreen.tsx (100%) rename {client => apps/web}/src/core/accountSettings/modals/EnableTwoFAModal/components/QRCodeDisplay.tsx (100%) rename {client => apps/web}/src/core/accountSettings/modals/EnableTwoFAModal/components/TwoFAEnableProcedure.tsx (100%) rename {client => apps/web}/src/core/accountSettings/modals/EnableTwoFAModal/index.tsx (100%) rename {client => apps/web}/src/core/accountSettings/modals/ModifyModal.tsx (100%) rename {client => apps/web}/src/core/accountSettings/modals/QRLoginScannerModal/components/ConfirmScreen.tsx (100%) rename {client => apps/web}/src/core/accountSettings/modals/QRLoginScannerModal/components/ErrorScreen.tsx (100%) rename {client => apps/web}/src/core/accountSettings/modals/QRLoginScannerModal/components/InnerContent.tsx (100%) rename {client => apps/web}/src/core/accountSettings/modals/QRLoginScannerModal/components/SuccessScreen.tsx (100%) rename {client => apps/web}/src/core/accountSettings/modals/QRLoginScannerModal/hooks/useQRLoginApproval.ts (100%) rename {client => apps/web}/src/core/accountSettings/modals/QRLoginScannerModal/index.tsx (100%) rename {client => apps/web}/src/core/apiKeys/components/EntryItem.tsx (100%) rename {client => apps/web}/src/core/apiKeys/index.tsx (100%) rename {client => apps/web}/src/core/apiKeys/manifest.ts (100%) rename {client => apps/web}/src/core/apiKeys/modals/ModifyAPIKeyModal.tsx (100%) rename {client => apps/web}/src/core/apiKeys/modals/ModulesRequiredListModal.tsx (100%) rename {client => apps/web}/src/core/auth/components/AuthFooter.tsx (100%) rename {client => apps/web}/src/core/auth/components/AuthForm.tsx (100%) rename {client => apps/web}/src/core/auth/components/AuthHeader.tsx (100%) rename {client => apps/web}/src/core/auth/components/AuthSideImage.tsx (100%) rename {client => apps/web}/src/core/auth/components/AuthSignInButtons/components/SignInButton.tsx (100%) rename {client => apps/web}/src/core/auth/components/AuthSignInButtons/components/SigninWithProviderButton.tsx (100%) rename {client => apps/web}/src/core/auth/components/AuthSignInButtons/index.tsx (100%) rename {client => apps/web}/src/core/auth/components/OrAuthWithDivider.tsx (100%) rename {client => apps/web}/src/core/auth/components/passkeyLoginTodo.ts.txt (100%) rename {client => apps/web}/src/core/auth/index.tsx (100%) rename {client => apps/web}/src/core/auth/modals/QRLoginModal/components/QRByStatus.tsx (100%) rename {client => apps/web}/src/core/auth/modals/QRLoginModal/components/QRContent.tsx (100%) rename {client => apps/web}/src/core/auth/modals/QRLoginModal/hooks/useQRLoginSession.ts (100%) rename {client => apps/web}/src/core/auth/modals/QRLoginModal/index.tsx (100%) rename {client => apps/web}/src/core/auth/modals/QRLoginModal/utils/QRSessionMngr.ts (100%) rename {client => apps/web}/src/core/auth/modals/QRLoginModal/utils/getBrowserInfo.ts (100%) rename {client => apps/web}/src/core/auth/modals/TwoFAModal/components/ResendOTPButton.tsx (100%) rename {client => apps/web}/src/core/auth/modals/TwoFAModal/components/UsingAuthApp.tsx (100%) rename {client => apps/web}/src/core/auth/modals/TwoFAModal/components/UsingEmail.tsx (100%) rename {client => apps/web}/src/core/auth/modals/TwoFAModal/index.tsx (100%) rename {client => apps/web}/src/core/auth/pages/LoginPage.tsx (100%) rename {client => apps/web}/src/core/auth/pages/UserCreationPage.tsx (100%) rename {client => apps/web}/src/core/backups/components/BackupItem.tsx (100%) rename {client => apps/web}/src/core/backups/components/CreateBackupModal.tsx (100%) rename {client => apps/web}/src/core/backups/index.tsx (100%) rename {client => apps/web}/src/core/backups/manifest.ts (100%) rename {client => apps/web}/src/core/dashboard/components/DashboardGrid.tsx (100%) rename {client => apps/web}/src/core/dashboard/components/NotFoundWidget.tsx (100%) rename {client => apps/web}/src/core/dashboard/components/SaveButtonPopup.tsx (100%) rename {client => apps/web}/src/core/dashboard/index.css (100%) rename {client => apps/web}/src/core/dashboard/index.tsx (100%) rename {client => apps/web}/src/core/dashboard/manifest.ts (100%) rename {client => apps/web}/src/core/dashboard/modals/ManageWidgetsModal/components/ComponentItem.tsx (100%) rename {client => apps/web}/src/core/dashboard/modals/ManageWidgetsModal/index.tsx (100%) rename {client => apps/web}/src/core/dashboard/providers/WidgetProvider.tsx (100%) rename {client => apps/web}/src/core/documentation/index.tsx (100%) rename {client => apps/web}/src/core/documentation/manifest.ts (100%) rename {client => apps/web}/src/core/moduleManager/manifest.ts (100%) rename {client => apps/web}/src/core/moduleManager/pages/Categories/components/CategoryItem.tsx (100%) rename {client => apps/web}/src/core/moduleManager/pages/Categories/components/ModifyCategoryModal.tsx (100%) rename {client => apps/web}/src/core/moduleManager/pages/Categories/components/ModifyTranslationKeyModal.tsx (100%) rename {client => apps/web}/src/core/moduleManager/pages/Categories/index.tsx (100%) rename {client => apps/web}/src/core/moduleManager/pages/Modules/components/ModuleItem.tsx (100%) rename {client => apps/web}/src/core/moduleManager/pages/Modules/index.tsx (100%) rename {client => apps/web}/src/core/personalization/components/BgImageSelector/index.tsx (100%) rename {client => apps/web}/src/core/personalization/components/BgImageSelector/modals/AdjustBgImageModal/components/AdjustmentColumn.tsx (100%) rename {client => apps/web}/src/core/personalization/components/BgImageSelector/modals/AdjustBgImageModal/components/ResultShowcase.tsx (100%) rename {client => apps/web}/src/core/personalization/components/BgImageSelector/modals/AdjustBgImageModal/constants/bg_blurs.ts (100%) rename {client => apps/web}/src/core/personalization/components/BgImageSelector/modals/AdjustBgImageModal/index.tsx (100%) rename {client => apps/web}/src/core/personalization/components/BgTempSelector/components/DefaultBgTempSelector.tsx (100%) rename {client => apps/web}/src/core/personalization/components/BgTempSelector/index.tsx (100%) rename {client => apps/web}/src/core/personalization/components/BorderRadiusSelector/components/BorderRadiusIcon.tsx (100%) rename {client => apps/web}/src/core/personalization/components/BorderRadiusSelector/index.tsx (100%) rename {client => apps/web}/src/core/personalization/components/BorderedSelector.tsx (100%) rename {client => apps/web}/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/index.tsx (100%) rename {client => apps/web}/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/custom/components/CustomFontCard.tsx (100%) rename {client => apps/web}/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/custom/components/CustomFontUploadModal.tsx (100%) rename {client => apps/web}/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/custom/index.tsx (100%) rename {client => apps/web}/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/google/components/FontListItem.tsx (100%) rename {client => apps/web}/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/google/components/GoogleFontFilter.tsx (100%) rename {client => apps/web}/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/google/components/GoogleFontList.tsx (100%) rename {client => apps/web}/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/google/contexts/GoogleFontContext.tsx (100%) rename {client => apps/web}/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/google/index.tsx (100%) rename {client => apps/web}/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/google/utils/stylesheet.ts (100%) rename {client => apps/web}/src/core/personalization/components/FontFamilySelector/index.tsx (100%) rename {client => apps/web}/src/core/personalization/components/FontFamilySelector/utils/detectFontMetadata.ts (100%) rename {client => apps/web}/src/core/personalization/components/FontScaleSelector.tsx (100%) rename {client => apps/web}/src/core/personalization/components/LanguageSelector.tsx (100%) rename {client => apps/web}/src/core/personalization/components/ThemeColorSelector/components/DefaultThemeColorSelector.tsx (100%) rename {client => apps/web}/src/core/personalization/components/ThemeColorSelector/index.tsx (100%) rename {client => apps/web}/src/core/personalization/components/ThemeSelector.tsx (100%) rename {client => apps/web}/src/core/personalization/index.tsx (100%) rename {client => apps/web}/src/core/personalization/manifest.ts (100%) rename {client => apps/web}/src/federation/providers/CoreFederationProvider.tsx (96%) rename {client => apps/web}/src/forgeAPI.tsx (88%) rename {client => apps/web}/src/i18n.ts (100%) rename {client => apps/web}/src/index.css (100%) rename {client => apps/web}/src/index.tsx (100%) rename {client => apps/web}/src/providers/features/APIKeyStatusProvider.tsx (100%) rename {client => apps/web}/src/providers/features/ExternalModuleProviders.tsx (100%) rename {client => apps/web}/src/providers/features/I18nInitProvider.tsx (100%) rename {client => apps/web}/src/providers/features/UserPersonalizationProvider.tsx (100%) rename {client => apps/web}/src/providers/index.tsx (100%) rename {client => apps/web}/src/providers/utils/providerUtils.tsx (100%) rename {client => apps/web}/src/routes/components/RootLayout.tsx (100%) rename {client => apps/web}/src/routes/components/RouteErrorScreen.tsx (100%) rename {client => apps/web}/src/routes/components/Sidebar/MainSidebarTitle.tsx (100%) rename {client => apps/web}/src/routes/components/Sidebar/Sidebar.tsx (100%) rename {client => apps/web}/src/routes/components/Sidebar/SidebarBottomBar.tsx (100%) rename {client => apps/web}/src/routes/components/Sidebar/SidebarEventBanner.tsx (100%) rename {client => apps/web}/src/routes/components/Sidebar/SidebarHeader.tsx (100%) rename {client => apps/web}/src/routes/components/Sidebar/SidebarItems.tsx (100%) rename {client => apps/web}/src/routes/hooks/useAppRouter.ts (100%) rename {client => apps/web}/src/routes/hooks/useTitleEffect.ts (100%) rename {client => apps/web}/src/routes/providers/AppRoutesProvider.tsx (100%) rename {client => apps/web}/src/routes/utils/routeBuilder.tsx (100%) rename {client => apps/web}/src/routes/utils/routerFactory.tsx (100%) rename {client => apps/web}/src/vite-env.d.ts (100%) rename {client => apps/web}/tsconfig.json (92%) rename {client => apps/web}/vercel.json (100%) rename {client => apps/web}/vite.config.ts (100%) rename {apps => modules}/.gitkeep (100%) rename {apps => modules}/package.json (71%) delete mode 100644 server/src/core/constants.ts diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md deleted file mode 100644 index 90b5d3a4a..000000000 --- a/.github/copilot-instructions.md +++ /dev/null @@ -1,67 +0,0 @@ -## LifeForge – AI contributor guide - -This monorepo uses Bun workspaces with a type-safe API pattern shared between server and client. Follow these rules to be productive and avoid breaking conventions. - -### Big picture - -- Monorepo packages: `server/` (Express API), `client/` (React + Vite), `shared/` (typed API client + hooks/providers), `packages/lifeforge-ui/` (component library), plus `apps/*` (standalone playgrounds/tools). -- Data layer: PocketBase (see `database/pb_migrations/` and runtime DB in `database/pocketbase/pb_data/`). Server accesses PB through a typed `PBService` wrapper and enforces auth in middleware. -- API architecture: server routes are declared via a fluent, type-safe DSL built on Zod and Express: - - `forge` builds endpoints with `.input({ body?, query? })`, `.existenceCheck()`, `.media()` (for uploads), `.isDownloadable()`, `.callback(...)`. - - `forgeRouter({...})` composes nested routers. The main router in `server/src/core/routes/routes.ts` lazy-imports “apps” and mounts them. - - Client imports the server’s route tree type (`AppRoutes`) to generate a fully typed client (`shared` → `createForgeProxy`). This ensures client endpoints mirror server definitions. -- Realtime: Socket.IO is initialized in `server/src/index.ts`. The task pool middleware (`taskPoolMiddleware.ts`) and helpers (`addToTaskPool`, `updateTaskInPool`) emit `taskPoolUpdate` events; the client subscribes via `SocketProvider` and authenticates with the PocketBase session cookie. - -### Dev and build workflows (Bun) - -- Install once at repo root: `bun install`. -- Orchestrated scripts (see `scripts/forge.ts`): - - Run dev for multiple projects concurrently, e.g.: `bun run forge dev client server shared ui` - - Typecheck: `bun run forge types server client shared ui` - - Lint/format where available: `bun run forge lint server` -- Individual packages: - - Server: `bun run dev` (env from `server/env/.env.local`), `bun run build`, `bun run start` - - Client: `bun run dev`, `bun run build` (builds `shared` and `lifeforge-ui` first), `bun run preview` - - Shared: `bun run build` - - UI: `bun run dev` (tsup watch) or `bun run build` -- Tests: server uses Jest (run `bun run test` in `server/`). - -### Server conventions (Express + PocketBase) - -- Define endpoints with `forge` in app routers. Always specify Zod schemas via `.input({ body, query })`-handlers receive fully typed `body`, `query`, `pb`, `io`, and `media` (if used). -- Use `.existenceCheck('body'|'query', { field: 'collection' | '[collection]' })` to assert PocketBase IDs exist before running logic. Brackets mark optional fields; arrays are supported. -- For uploads, declare `.media({ field: { optional?: boolean } })`. Upload middlewares are auto-attached; `.callback` receives `media` with files. -- Set `.isDownloadable()` for file responses (adds headers) and `.noDefaultResponse()` when manually writing responses; otherwise responses are wrapped by `successWithBaseResponse` with `statusCode()`. -- Central router: `server/src/core/routes/routes.ts` exposes common utilities: - - `media` proxies PocketBase file URLs; `corsAnywhere` fetches external URLs to bypass CORS; `status` and `_listRoutes` aid health/discovery. -- PocketBase access/auth: - - `pocketbaseMiddleware.ts` enforces auth on non-whitelisted routes and injects `req.pb = new PBService(...)`. - - Socket.IO handshake validates `auth.token` against PB (`PB_HOST`). -- Keep environment in `server/env/.env.local` (required: `PORT`, `PB_HOST`, `PB_EMAIL`, `PB_PASSWORD`). - -### Client conventions (React + Vite + TanStack Query) - -- API client: `client/src/core/utils/forgeAPI.tsx` creates `forgeAPI` with `createForgeProxy(import.meta.env.VITE_API_HOST)`. Use it for all XHR: - - GET: `forgeAPI.module.endpoint.input({ ... }).query()` or `.queryOptions()` for React Query. - - POST: `forgeAPI.module.endpoint.mutate(data)` or `.mutationOptions()`. -- Routing and modules: - - `core/routes/routes.json` defines category → module entries. `Routes.tsx` resolves each item’s `config.tsx` via `import.meta.glob` (Vite) and renders in `MainRoutesRenderer`. - - Module visibility is user-driven: `userData.enabledModules` (kebab-cased names) controls which routes render. -- Realtime: wrap UI in `SocketProvider`; the server emits `taskPoolUpdate` events for long-running tasks. - -### Shared package patterns - -- `shared/src/api/core/forgeAPIClient.ts` is the single source for creating typed clients from the server’s route type. Don’t hand-roll fetchers. -- Providers and hooks (e.g., API endpoint/online status, personalization, sidebar, toast) live in `shared/src/providers/*`-reuse them in `client` and `lifeforge-ui`. - -### Adding features - concrete examples - -- New server endpoint: create under `server/src/apps//routes/*.ts` using `forge`. Register it in that feature’s `index.ts` via `forgeRouter({ ... })`; it will be mounted automatically in the main `routes.ts`. -- New client call: use `forgeAPI.....` with `.input()` and `.query()`/`.mutate()`; don’t hardcode URLs. -- New client module/page: add `config.tsx` under `client/src/apps//` or `client/src/core/pages//` and reference it in `core/routes/routes.json`. - -### External dependencies and integration points - -- PocketBase (primary DB/storage), Socket.IO (server push), Zod (validation), React Query (data fetching), Tailwind v4, Day.js, lodash. The server also includes media tooling (Sharp/FFmpeg/PDF utilities) and various 3rd-party integrations-follow existing patterns in `server/src/core/lib/*`. - -Questions or gaps? If an endpoint or config is unclear, point to the exact file and propose the smallest diff aligned with the patterns above, and ask for environment values when required. diff --git a/.gitignore b/.gitignore index de1011213..fec162bf4 100644 --- a/.gitignore +++ b/.gitignore @@ -9,8 +9,8 @@ coverage # production dist dist-docker -apps/*/locales -apps/*/package.json +modules/*/locales +modules/*/package.json build tsbuild storybook-static @@ -23,7 +23,7 @@ pocketbase pb_*/ medium .temp -server/src/generated +apps/api/src/generated .turbo # system files @@ -59,7 +59,7 @@ env/* keys # user-generated files -# apps +# modules locales/* -!apps/**/locales/* +!modules/**/locales/* !locales/lifeforge--lang-en \ No newline at end of file diff --git a/server/package.json b/apps/api/package.json similarity index 95% rename from server/package.json rename to apps/api/package.json index e9401da88..f218d58ce 100755 --- a/server/package.json +++ b/apps/api/package.json @@ -16,10 +16,10 @@ "scripts": { "types": "tsgo -b", "build": "bun types && bun build ./src/index.ts --target bun --minify --production --outfile=./dist/server.js", - "start": "bun types && NODE_ENV=production bun --env-file=../env/.env.local ./src/index.ts", + "start": "bun types && NODE_ENV=production bun --env-file=../../env/.env.local ./src/index.ts", "start:prod": "NODE_ENV=production bun ./dist/server.js", "start:watch": "NODE_ENV=production bun --watch ./dist/server.js", - "dev": "bun tsx watch --env-file=../env/.env.local ./src/index.ts", + "dev": "bun tsx watch --env-file=../../env/.env.local ./src/index.ts", "lint": "eslint ./src --fix && prettier --write ./src", "test": "vitest", "test:ui": "vitest --ui", diff --git a/server/src/core/app.ts b/apps/api/src/core/app.ts similarity index 100% rename from server/src/core/app.ts rename to apps/api/src/core/app.ts diff --git a/server/src/core/bin/yt-dlp b/apps/api/src/core/bin/yt-dlp similarity index 100% rename from server/src/core/bin/yt-dlp rename to apps/api/src/core/bin/yt-dlp diff --git a/apps/api/src/core/constants.ts b/apps/api/src/core/constants.ts new file mode 100644 index 000000000..8ec4da836 --- /dev/null +++ b/apps/api/src/core/constants.ts @@ -0,0 +1,3 @@ +export const PORT = process.env.PORT || 3636 + +export const ROOT_DIR = import.meta.dirname.split('apps/api')[0] diff --git a/server/src/core/functions/auth/encryption.ts b/apps/api/src/core/functions/auth/encryption.ts similarity index 100% rename from server/src/core/functions/auth/encryption.ts rename to apps/api/src/core/functions/auth/encryption.ts diff --git a/server/src/core/functions/auth/validateOTP.ts b/apps/api/src/core/functions/auth/validateOTP.ts similarity index 100% rename from server/src/core/functions/auth/validateOTP.ts rename to apps/api/src/core/functions/auth/validateOTP.ts diff --git a/server/src/core/functions/database/PBService/index.ts b/apps/api/src/core/functions/database/PBService/index.ts similarity index 100% rename from server/src/core/functions/database/PBService/index.ts rename to apps/api/src/core/functions/database/PBService/index.ts diff --git a/server/src/core/functions/database/PBService/services/create.ts b/apps/api/src/core/functions/database/PBService/services/create.ts similarity index 100% rename from server/src/core/functions/database/PBService/services/create.ts rename to apps/api/src/core/functions/database/PBService/services/create.ts diff --git a/server/src/core/functions/database/PBService/services/delete.ts b/apps/api/src/core/functions/database/PBService/services/delete.ts similarity index 100% rename from server/src/core/functions/database/PBService/services/delete.ts rename to apps/api/src/core/functions/database/PBService/services/delete.ts diff --git a/server/src/core/functions/database/PBService/services/getFirstListItem.ts b/apps/api/src/core/functions/database/PBService/services/getFirstListItem.ts similarity index 100% rename from server/src/core/functions/database/PBService/services/getFirstListItem.ts rename to apps/api/src/core/functions/database/PBService/services/getFirstListItem.ts diff --git a/server/src/core/functions/database/PBService/services/getFullList.ts b/apps/api/src/core/functions/database/PBService/services/getFullList.ts similarity index 100% rename from server/src/core/functions/database/PBService/services/getFullList.ts rename to apps/api/src/core/functions/database/PBService/services/getFullList.ts diff --git a/server/src/core/functions/database/PBService/services/getList.ts b/apps/api/src/core/functions/database/PBService/services/getList.ts similarity index 100% rename from server/src/core/functions/database/PBService/services/getList.ts rename to apps/api/src/core/functions/database/PBService/services/getList.ts diff --git a/server/src/core/functions/database/PBService/services/getOne.ts b/apps/api/src/core/functions/database/PBService/services/getOne.ts similarity index 100% rename from server/src/core/functions/database/PBService/services/getOne.ts rename to apps/api/src/core/functions/database/PBService/services/getOne.ts diff --git a/server/src/core/functions/database/PBService/services/update.ts b/apps/api/src/core/functions/database/PBService/services/update.ts similarity index 100% rename from server/src/core/functions/database/PBService/services/update.ts rename to apps/api/src/core/functions/database/PBService/services/update.ts diff --git a/server/src/core/functions/database/PBService/utils/getFinalCollectionName.ts b/apps/api/src/core/functions/database/PBService/utils/getFinalCollectionName.ts similarity index 100% rename from server/src/core/functions/database/PBService/utils/getFinalCollectionName.ts rename to apps/api/src/core/functions/database/PBService/utils/getFinalCollectionName.ts diff --git a/server/src/core/functions/database/PBService/utils/recursivelyConstructFilter.ts b/apps/api/src/core/functions/database/PBService/utils/recursivelyConstructFilter.ts similarity index 100% rename from server/src/core/functions/database/PBService/utils/recursivelyConstructFilter.ts rename to apps/api/src/core/functions/database/PBService/utils/recursivelyConstructFilter.ts diff --git a/server/src/core/functions/database/dbUtils.ts b/apps/api/src/core/functions/database/dbUtils.ts similarity index 100% rename from server/src/core/functions/database/dbUtils.ts rename to apps/api/src/core/functions/database/dbUtils.ts diff --git a/server/src/core/functions/database/getAPIKey.ts b/apps/api/src/core/functions/database/getAPIKey.ts similarity index 99% rename from server/src/core/functions/database/getAPIKey.ts rename to apps/api/src/core/functions/database/getAPIKey.ts index 28cb13bce..2c2b27a74 100644 --- a/server/src/core/functions/database/getAPIKey.ts +++ b/apps/api/src/core/functions/database/getAPIKey.ts @@ -21,7 +21,7 @@ export async function validateCallerAccess( const packageJSONPath = path.resolve( ROOT_DIR, - 'apps', + 'modules', callerModule.id, 'package.json' ) diff --git a/server/src/core/functions/database/index.ts b/apps/api/src/core/functions/database/index.ts similarity index 100% rename from server/src/core/functions/database/index.ts rename to apps/api/src/core/functions/database/index.ts diff --git a/server/src/core/functions/database/validation.ts b/apps/api/src/core/functions/database/validation.ts similarity index 100% rename from server/src/core/functions/database/validation.ts rename to apps/api/src/core/functions/database/validation.ts diff --git a/server/src/core/functions/encryption/constants.ts b/apps/api/src/core/functions/encryption/constants.ts similarity index 100% rename from server/src/core/functions/encryption/constants.ts rename to apps/api/src/core/functions/encryption/constants.ts diff --git a/server/src/core/functions/encryption/functions/decryptAESKey.ts b/apps/api/src/core/functions/encryption/functions/decryptAESKey.ts similarity index 100% rename from server/src/core/functions/encryption/functions/decryptAESKey.ts rename to apps/api/src/core/functions/encryption/functions/decryptAESKey.ts diff --git a/server/src/core/functions/encryption/functions/decryptPayload.ts b/apps/api/src/core/functions/encryption/functions/decryptPayload.ts similarity index 100% rename from server/src/core/functions/encryption/functions/decryptPayload.ts rename to apps/api/src/core/functions/encryption/functions/decryptPayload.ts diff --git a/server/src/core/functions/encryption/functions/encryptResponse.ts b/apps/api/src/core/functions/encryption/functions/encryptResponse.ts similarity index 100% rename from server/src/core/functions/encryption/functions/encryptResponse.ts rename to apps/api/src/core/functions/encryption/functions/encryptResponse.ts diff --git a/server/src/core/functions/encryption/functions/ensureKeyExists.ts b/apps/api/src/core/functions/encryption/functions/ensureKeyExists.ts similarity index 100% rename from server/src/core/functions/encryption/functions/ensureKeyExists.ts rename to apps/api/src/core/functions/encryption/functions/ensureKeyExists.ts diff --git a/server/src/core/functions/encryption/functions/getPublicKey.ts b/apps/api/src/core/functions/encryption/functions/getPublicKey.ts similarity index 100% rename from server/src/core/functions/encryption/functions/getPublicKey.ts rename to apps/api/src/core/functions/encryption/functions/getPublicKey.ts diff --git a/server/src/core/functions/encryption/index.ts b/apps/api/src/core/functions/encryption/index.ts similarity index 100% rename from server/src/core/functions/encryption/index.ts rename to apps/api/src/core/functions/encryption/index.ts diff --git a/server/src/core/functions/encryption/types.ts b/apps/api/src/core/functions/encryption/types.ts similarity index 100% rename from server/src/core/functions/encryption/types.ts rename to apps/api/src/core/functions/encryption/types.ts diff --git a/server/src/core/functions/external/ai/index.ts b/apps/api/src/core/functions/external/ai/index.ts similarity index 100% rename from server/src/core/functions/external/ai/index.ts rename to apps/api/src/core/functions/external/ai/index.ts diff --git a/server/src/core/functions/external/ai/providers/deepseek.provider.ts b/apps/api/src/core/functions/external/ai/providers/deepseek.provider.ts similarity index 100% rename from server/src/core/functions/external/ai/providers/deepseek.provider.ts rename to apps/api/src/core/functions/external/ai/providers/deepseek.provider.ts diff --git a/server/src/core/functions/external/ai/providers/groq.provider.ts b/apps/api/src/core/functions/external/ai/providers/groq.provider.ts similarity index 100% rename from server/src/core/functions/external/ai/providers/groq.provider.ts rename to apps/api/src/core/functions/external/ai/providers/groq.provider.ts diff --git a/server/src/core/functions/external/ai/providers/index.ts b/apps/api/src/core/functions/external/ai/providers/index.ts similarity index 100% rename from server/src/core/functions/external/ai/providers/index.ts rename to apps/api/src/core/functions/external/ai/providers/index.ts diff --git a/server/src/core/functions/external/ai/providers/ollama.provider.ts b/apps/api/src/core/functions/external/ai/providers/ollama.provider.ts similarity index 100% rename from server/src/core/functions/external/ai/providers/ollama.provider.ts rename to apps/api/src/core/functions/external/ai/providers/ollama.provider.ts diff --git a/server/src/core/functions/external/ai/providers/openai.provider.ts b/apps/api/src/core/functions/external/ai/providers/openai.provider.ts similarity index 100% rename from server/src/core/functions/external/ai/providers/openai.provider.ts rename to apps/api/src/core/functions/external/ai/providers/openai.provider.ts diff --git a/server/src/core/functions/external/location.ts b/apps/api/src/core/functions/external/location.ts similarity index 100% rename from server/src/core/functions/external/location.ts rename to apps/api/src/core/functions/external/location.ts diff --git a/server/src/core/functions/external/ocr.ts b/apps/api/src/core/functions/external/ocr.ts similarity index 100% rename from server/src/core/functions/external/ocr.ts rename to apps/api/src/core/functions/external/ocr.ts diff --git a/server/src/core/functions/initialization/ensureCredentials.ts b/apps/api/src/core/functions/initialization/ensureCredentials.ts similarity index 100% rename from server/src/core/functions/initialization/ensureCredentials.ts rename to apps/api/src/core/functions/initialization/ensureCredentials.ts diff --git a/server/src/core/functions/initialization/localeService.ts b/apps/api/src/core/functions/initialization/localeService.ts similarity index 100% rename from server/src/core/functions/initialization/localeService.ts rename to apps/api/src/core/functions/initialization/localeService.ts diff --git a/server/src/core/functions/logging.ts b/apps/api/src/core/functions/logging.ts similarity index 100% rename from server/src/core/functions/logging.ts rename to apps/api/src/core/functions/logging.ts diff --git a/server/src/core/functions/media/convertPDFToImage.ts b/apps/api/src/core/functions/media/convertPDFToImage.ts similarity index 100% rename from server/src/core/functions/media/convertPDFToImage.ts rename to apps/api/src/core/functions/media/convertPDFToImage.ts diff --git a/server/src/core/functions/media/retrieveMedia.ts b/apps/api/src/core/functions/media/retrieveMedia.ts similarity index 100% rename from server/src/core/functions/media/retrieveMedia.ts rename to apps/api/src/core/functions/media/retrieveMedia.ts diff --git a/server/src/core/functions/modules/loadModuleRoutes.ts b/apps/api/src/core/functions/modules/loadModuleRoutes.ts similarity index 97% rename from server/src/core/functions/modules/loadModuleRoutes.ts rename to apps/api/src/core/functions/modules/loadModuleRoutes.ts index 8cee7a2c9..da3f7f256 100644 --- a/server/src/core/functions/modules/loadModuleRoutes.ts +++ b/apps/api/src/core/functions/modules/loadModuleRoutes.ts @@ -23,7 +23,7 @@ export async function loadModuleRoutes(): Promise> { `Detected ${chalk.blue(process.env.NODE_ENV === 'production' ? 'production' : 'development')} environment, loading ${IS_PRODUCTION ? chalk.green('bundled') : chalk.yellow('source')} routes` ) - const appsDir = path.join(ROOT_DIR, 'apps') + const appsDir = path.join(ROOT_DIR, 'modules') if (!fs.existsSync(appsDir)) { logger.warn('Apps directory not found, no module routes loaded') diff --git a/server/src/core/functions/routes/functions/controllerLogic.ts b/apps/api/src/core/functions/routes/functions/controllerLogic.ts similarity index 100% rename from server/src/core/functions/routes/functions/controllerLogic.ts rename to apps/api/src/core/functions/routes/functions/controllerLogic.ts diff --git a/server/src/core/functions/routes/functions/forgeRouter.ts b/apps/api/src/core/functions/routes/functions/forgeRouter.ts similarity index 100% rename from server/src/core/functions/routes/functions/forgeRouter.ts rename to apps/api/src/core/functions/routes/functions/forgeRouter.ts diff --git a/server/src/core/functions/routes/utils/checkRecordExistence.ts b/apps/api/src/core/functions/routes/utils/checkRecordExistence.ts similarity index 100% rename from server/src/core/functions/routes/utils/checkRecordExistence.ts rename to apps/api/src/core/functions/routes/utils/checkRecordExistence.ts diff --git a/server/src/core/functions/routes/utils/coreContext.ts b/apps/api/src/core/functions/routes/utils/coreContext.ts similarity index 100% rename from server/src/core/functions/routes/utils/coreContext.ts rename to apps/api/src/core/functions/routes/utils/coreContext.ts diff --git a/server/src/core/functions/routes/utils/getAESKey.ts b/apps/api/src/core/functions/routes/utils/getAESKey.ts similarity index 100% rename from server/src/core/functions/routes/utils/getAESKey.ts rename to apps/api/src/core/functions/routes/utils/getAESKey.ts diff --git a/server/src/core/functions/routes/utils/parsePayload.ts b/apps/api/src/core/functions/routes/utils/parsePayload.ts similarity index 100% rename from server/src/core/functions/routes/utils/parsePayload.ts rename to apps/api/src/core/functions/routes/utils/parsePayload.ts diff --git a/server/src/core/functions/routes/utils/parseQuery.ts b/apps/api/src/core/functions/routes/utils/parseQuery.ts similarity index 100% rename from server/src/core/functions/routes/utils/parseQuery.ts rename to apps/api/src/core/functions/routes/utils/parseQuery.ts diff --git a/server/src/core/functions/routes/utils/response.ts b/apps/api/src/core/functions/routes/utils/response.ts similarity index 100% rename from server/src/core/functions/routes/utils/response.ts rename to apps/api/src/core/functions/routes/utils/response.ts diff --git a/server/src/core/functions/routes/utils/restoreDataType.ts b/apps/api/src/core/functions/routes/utils/restoreDataType.ts similarity index 100% rename from server/src/core/functions/routes/utils/restoreDataType.ts rename to apps/api/src/core/functions/routes/utils/restoreDataType.ts diff --git a/server/src/core/functions/routes/utils/splitMediaAndData.ts b/apps/api/src/core/functions/routes/utils/splitMediaAndData.ts similarity index 100% rename from server/src/core/functions/routes/utils/splitMediaAndData.ts rename to apps/api/src/core/functions/routes/utils/splitMediaAndData.ts diff --git a/server/src/core/functions/routes/utils/uploadMiddleware.ts b/apps/api/src/core/functions/routes/utils/uploadMiddleware.ts similarity index 100% rename from server/src/core/functions/routes/utils/uploadMiddleware.ts rename to apps/api/src/core/functions/routes/utils/uploadMiddleware.ts diff --git a/server/src/core/functions/routes/utils/validateAuthToken.ts b/apps/api/src/core/functions/routes/utils/validateAuthToken.ts similarity index 100% rename from server/src/core/functions/routes/utils/validateAuthToken.ts rename to apps/api/src/core/functions/routes/utils/validateAuthToken.ts diff --git a/server/src/core/functions/socketio/createSocketServer.ts b/apps/api/src/core/functions/socketio/createSocketServer.ts similarity index 100% rename from server/src/core/functions/socketio/createSocketServer.ts rename to apps/api/src/core/functions/socketio/createSocketServer.ts diff --git a/server/src/core/functions/socketio/setupSocket.ts b/apps/api/src/core/functions/socketio/setupSocket.ts similarity index 100% rename from server/src/core/functions/socketio/setupSocket.ts rename to apps/api/src/core/functions/socketio/setupSocket.ts diff --git a/server/src/core/functions/socketio/taskPool.ts b/apps/api/src/core/functions/socketio/taskPool.ts similarity index 100% rename from server/src/core/functions/socketio/taskPool.ts rename to apps/api/src/core/functions/socketio/taskPool.ts diff --git a/server/src/core/functions/utils/checkModulesAvailability.ts b/apps/api/src/core/functions/utils/checkModulesAvailability.ts similarity index 82% rename from server/src/core/functions/utils/checkModulesAvailability.ts rename to apps/api/src/core/functions/utils/checkModulesAvailability.ts index 7d6e0c86d..d1eaa793d 100644 --- a/server/src/core/functions/utils/checkModulesAvailability.ts +++ b/apps/api/src/core/functions/utils/checkModulesAvailability.ts @@ -3,7 +3,7 @@ import fs from 'fs' export async function checkModulesAvailability( moduleId: string ): Promise { - const modulePath = `../apps/${moduleId}/` + const modulePath = `../modules/${moduleId}/` try { fs.accessSync(modulePath, fs.constants.R_OK) diff --git a/server/src/core/functions/utils/tempFileManager.ts b/apps/api/src/core/functions/utils/tempFileManager.ts similarity index 100% rename from server/src/core/functions/utils/tempFileManager.ts rename to apps/api/src/core/functions/utils/tempFileManager.ts diff --git a/server/src/core/functions/utils/zodResponseFormat.ts b/apps/api/src/core/functions/utils/zodResponseFormat.ts similarity index 100% rename from server/src/core/functions/utils/zodResponseFormat.ts rename to apps/api/src/core/functions/utils/zodResponseFormat.ts diff --git a/server/src/core/middlewares/morganMiddleware.ts b/apps/api/src/core/middlewares/morganMiddleware.ts similarity index 100% rename from server/src/core/middlewares/morganMiddleware.ts rename to apps/api/src/core/middlewares/morganMiddleware.ts diff --git a/server/src/core/middlewares/rateLimitingMiddleware.ts b/apps/api/src/core/middlewares/rateLimitingMiddleware.ts similarity index 100% rename from server/src/core/middlewares/rateLimitingMiddleware.ts rename to apps/api/src/core/middlewares/rateLimitingMiddleware.ts diff --git a/server/src/core/models/digits.traineddata b/apps/api/src/core/models/digits.traineddata similarity index 100% rename from server/src/core/models/digits.traineddata rename to apps/api/src/core/models/digits.traineddata diff --git a/server/src/core/models/eng.traineddata b/apps/api/src/core/models/eng.traineddata similarity index 100% rename from server/src/core/models/eng.traineddata rename to apps/api/src/core/models/eng.traineddata diff --git a/server/src/core/routes/constants/corsAllowedOrigins.ts b/apps/api/src/core/routes/constants/corsAllowedOrigins.ts similarity index 100% rename from server/src/core/routes/constants/corsAllowedOrigins.ts rename to apps/api/src/core/routes/constants/corsAllowedOrigins.ts diff --git a/server/src/core/routes/core.routes.ts b/apps/api/src/core/routes/core.routes.ts similarity index 94% rename from server/src/core/routes/core.routes.ts rename to apps/api/src/core/routes/core.routes.ts index 6ea29dfbd..658687ea9 100644 --- a/server/src/core/routes/core.routes.ts +++ b/apps/api/src/core/routes/core.routes.ts @@ -128,16 +128,17 @@ const coreRoutes = forgeRouter({ writeContractFileToClient( coreRoutes, - path.resolve(import.meta.dirname, '../../..') + path.resolve(import.meta.dirname, '../../../../web'), + 'src' ) writeContractFileToClient( coreRoutes, - path.resolve(import.meta.dirname, '../../../../packages/ui'), + path.resolve(import.meta.dirname, '../../../../../packages/ui'), '.' ) writeContractFileToClient( coreRoutes, - path.resolve(import.meta.dirname, '../../../../packages/api'), + path.resolve(import.meta.dirname, '../../../../../packages/api'), '.' ) diff --git a/server/src/core/routes/forge.ts b/apps/api/src/core/routes/forge.ts similarity index 100% rename from server/src/core/routes/forge.ts rename to apps/api/src/core/routes/forge.ts diff --git a/server/src/core/routes/index.ts b/apps/api/src/core/routes/index.ts similarity index 99% rename from server/src/core/routes/index.ts rename to apps/api/src/core/routes/index.ts index d8d3d4ce1..4c92aa5ed 100644 --- a/server/src/core/routes/index.ts +++ b/apps/api/src/core/routes/index.ts @@ -38,7 +38,7 @@ router.use('/modules/:moduleName/*', (req, res, next) => { const moduleDistPath = path.join( ROOT_DIR, - 'apps', + 'modules', moduleName, 'client', distDir diff --git a/server/src/express.d.ts b/apps/api/src/express.d.ts similarity index 100% rename from server/src/express.d.ts rename to apps/api/src/express.d.ts diff --git a/server/src/index.ts b/apps/api/src/index.ts similarity index 100% rename from server/src/index.ts rename to apps/api/src/index.ts diff --git a/server/src/lib/ai/index.ts b/apps/api/src/lib/ai/index.ts similarity index 100% rename from server/src/lib/ai/index.ts rename to apps/api/src/lib/ai/index.ts diff --git a/server/src/lib/ai/routes/imageGeneration.ts b/apps/api/src/lib/ai/routes/imageGeneration.ts similarity index 100% rename from server/src/lib/ai/routes/imageGeneration.ts rename to apps/api/src/lib/ai/routes/imageGeneration.ts diff --git a/server/src/lib/apiKeys/forge.ts b/apps/api/src/lib/apiKeys/forge.ts similarity index 100% rename from server/src/lib/apiKeys/forge.ts rename to apps/api/src/lib/apiKeys/forge.ts diff --git a/server/src/lib/apiKeys/index.ts b/apps/api/src/lib/apiKeys/index.ts similarity index 100% rename from server/src/lib/apiKeys/index.ts rename to apps/api/src/lib/apiKeys/index.ts diff --git a/server/src/lib/apiKeys/routes/entries.ts b/apps/api/src/lib/apiKeys/routes/entries.ts similarity index 100% rename from server/src/lib/apiKeys/routes/entries.ts rename to apps/api/src/lib/apiKeys/routes/entries.ts diff --git a/server/src/lib/apiKeys/schema.ts b/apps/api/src/lib/apiKeys/schema.ts similarity index 100% rename from server/src/lib/apiKeys/schema.ts rename to apps/api/src/lib/apiKeys/schema.ts diff --git a/server/src/lib/backups/index.ts b/apps/api/src/lib/backups/index.ts similarity index 100% rename from server/src/lib/backups/index.ts rename to apps/api/src/lib/backups/index.ts diff --git a/server/src/lib/corsAnywhere/index.ts b/apps/api/src/lib/corsAnywhere/index.ts similarity index 100% rename from server/src/lib/corsAnywhere/index.ts rename to apps/api/src/lib/corsAnywhere/index.ts diff --git a/server/src/lib/database/index.ts b/apps/api/src/lib/database/index.ts similarity index 100% rename from server/src/lib/database/index.ts rename to apps/api/src/lib/database/index.ts diff --git a/server/src/lib/database/routes/collections.ts b/apps/api/src/lib/database/routes/collections.ts similarity index 100% rename from server/src/lib/database/routes/collections.ts rename to apps/api/src/lib/database/routes/collections.ts diff --git a/server/src/lib/locales/index.ts b/apps/api/src/lib/locales/index.ts similarity index 98% rename from server/src/lib/locales/index.ts rename to apps/api/src/lib/locales/index.ts index b48730c3f..88e86636d 100644 --- a/server/src/lib/locales/index.ts +++ b/apps/api/src/lib/locales/index.ts @@ -12,7 +12,7 @@ import { createForge, forgeRouter } from '@lifeforge/server-utils' const forge = createForge({}, 'locales') -const appsDir = path.join(ROOT_DIR, 'apps') +const appsDir = path.join(ROOT_DIR, 'modules') function getModulesWithLocales(): string[] { if (!fs.existsSync(appsDir)) return [] diff --git a/server/src/lib/locations/index.ts b/apps/api/src/lib/locations/index.ts similarity index 100% rename from server/src/lib/locations/index.ts rename to apps/api/src/lib/locations/index.ts diff --git a/server/src/lib/modules/forge.ts b/apps/api/src/lib/modules/forge.ts similarity index 100% rename from server/src/lib/modules/forge.ts rename to apps/api/src/lib/modules/forge.ts diff --git a/server/src/lib/modules/index.ts b/apps/api/src/lib/modules/index.ts similarity index 100% rename from server/src/lib/modules/index.ts rename to apps/api/src/lib/modules/index.ts diff --git a/server/src/lib/modules/routes/categories.ts b/apps/api/src/lib/modules/routes/categories.ts similarity index 100% rename from server/src/lib/modules/routes/categories.ts rename to apps/api/src/lib/modules/routes/categories.ts diff --git a/server/src/lib/modules/routes/devMode.ts b/apps/api/src/lib/modules/routes/devMode.ts similarity index 100% rename from server/src/lib/modules/routes/devMode.ts rename to apps/api/src/lib/modules/routes/devMode.ts diff --git a/server/src/lib/modules/routes/modules.ts b/apps/api/src/lib/modules/routes/modules.ts similarity index 97% rename from server/src/lib/modules/routes/modules.ts rename to apps/api/src/lib/modules/routes/modules.ts index 54e9f8194..f88f6df1d 100644 --- a/server/src/lib/modules/routes/modules.ts +++ b/apps/api/src/lib/modules/routes/modules.ts @@ -11,7 +11,7 @@ import scanFederatedModules, { type ModuleManifestEntry } from '../utils/scanFederatedModules' -const APPS_DIR = path.join(ROOT_DIR, 'apps') +const APPS_DIR = path.join(ROOT_DIR, 'modules') export const manifest = forge .query({ @@ -54,7 +54,7 @@ export const manifest = forge scanFederatedModules(APPS_DIR, modules, false, '/modules', devModeModules) - const internalAppsDir = path.join(ROOT_DIR, 'client', 'src', 'apps') + const internalAppsDir = path.join(ROOT_DIR, 'apps', 'web', 'src', 'modules') scanFederatedModules(internalAppsDir, modules, true, '/internal-modules') diff --git a/server/src/lib/modules/utils/scanFederatedModules.ts b/apps/api/src/lib/modules/utils/scanFederatedModules.ts similarity index 100% rename from server/src/lib/modules/utils/scanFederatedModules.ts rename to apps/api/src/lib/modules/utils/scanFederatedModules.ts diff --git a/server/src/lib/pixabay/index.ts b/apps/api/src/lib/pixabay/index.ts similarity index 100% rename from server/src/lib/pixabay/index.ts rename to apps/api/src/lib/pixabay/index.ts diff --git a/server/src/lib/user/forge.ts b/apps/api/src/lib/user/forge.ts similarity index 100% rename from server/src/lib/user/forge.ts rename to apps/api/src/lib/user/forge.ts diff --git a/server/src/lib/user/index.ts b/apps/api/src/lib/user/index.ts similarity index 100% rename from server/src/lib/user/index.ts rename to apps/api/src/lib/user/index.ts diff --git a/server/src/lib/user/routes/auth.ts b/apps/api/src/lib/user/routes/auth.ts similarity index 100% rename from server/src/lib/user/routes/auth.ts rename to apps/api/src/lib/user/routes/auth.ts diff --git a/server/src/lib/user/routes/customFonts.ts b/apps/api/src/lib/user/routes/customFonts.ts similarity index 100% rename from server/src/lib/user/routes/customFonts.ts rename to apps/api/src/lib/user/routes/customFonts.ts diff --git a/server/src/lib/user/routes/oauth.ts b/apps/api/src/lib/user/routes/oauth.ts similarity index 100% rename from server/src/lib/user/routes/oauth.ts rename to apps/api/src/lib/user/routes/oauth.ts diff --git a/server/src/lib/user/routes/personalization.ts b/apps/api/src/lib/user/routes/personalization.ts similarity index 100% rename from server/src/lib/user/routes/personalization.ts rename to apps/api/src/lib/user/routes/personalization.ts diff --git a/server/src/lib/user/routes/qrLogin.ts b/apps/api/src/lib/user/routes/qrLogin.ts similarity index 100% rename from server/src/lib/user/routes/qrLogin.ts rename to apps/api/src/lib/user/routes/qrLogin.ts diff --git a/server/src/lib/user/routes/settings.ts b/apps/api/src/lib/user/routes/settings.ts similarity index 100% rename from server/src/lib/user/routes/settings.ts rename to apps/api/src/lib/user/routes/settings.ts diff --git a/server/src/lib/user/routes/twoFA.ts b/apps/api/src/lib/user/routes/twoFA.ts similarity index 100% rename from server/src/lib/user/routes/twoFA.ts rename to apps/api/src/lib/user/routes/twoFA.ts diff --git a/server/src/lib/user/schema.ts b/apps/api/src/lib/user/schema.ts similarity index 100% rename from server/src/lib/user/schema.ts rename to apps/api/src/lib/user/schema.ts diff --git a/server/src/lib/user/utils/auth.ts b/apps/api/src/lib/user/utils/auth.ts similarity index 100% rename from server/src/lib/user/utils/auth.ts rename to apps/api/src/lib/user/utils/auth.ts diff --git a/server/src/lib/user/utils/otp.ts b/apps/api/src/lib/user/utils/otp.ts similarity index 100% rename from server/src/lib/user/utils/otp.ts rename to apps/api/src/lib/user/utils/otp.ts diff --git a/server/tsconfig.json b/apps/api/tsconfig.json similarity index 76% rename from server/tsconfig.json rename to apps/api/tsconfig.json index 091b269ec..ec576accc 100644 --- a/server/tsconfig.json +++ b/apps/api/tsconfig.json @@ -7,13 +7,13 @@ "emitDecoratorMetadata": true, "useDefineForClassFields": false, "noUnusedLocals": true, - "rootDir": "../", + "rootDir": "../../", "paths": { "@constants": ["./src/core/constants"], "@functions/*": ["./src/core/functions/*"], "@schema": ["./src/core/schema"], - "@lib/*": ["./src/lib/*", "../apps/*"] + "@lib/*": ["./src/lib/*", "../../modules/*"] } }, - "include": ["./src/**/*", "../apps/**/server/**/*"] + "include": ["./src/**/*", "../../modules/**/server/**/*"] } diff --git a/server/vitest.config.ts b/apps/api/vitest.config.ts similarity index 100% rename from server/vitest.config.ts rename to apps/api/vitest.config.ts diff --git a/client/index.html b/apps/web/index.html similarity index 100% rename from client/index.html rename to apps/web/index.html diff --git a/client/package.json b/apps/web/package.json similarity index 100% rename from client/package.json rename to apps/web/package.json diff --git a/client/public/_redirects b/apps/web/public/_redirects similarity index 100% rename from client/public/_redirects rename to apps/web/public/_redirects diff --git a/client/public/assets/apps/CFOPAlgorithms/landing-f2l.webp b/apps/web/public/assets/apps/CFOPAlgorithms/landing-f2l.webp similarity index 100% rename from client/public/assets/apps/CFOPAlgorithms/landing-f2l.webp rename to apps/web/public/assets/apps/CFOPAlgorithms/landing-f2l.webp diff --git a/client/public/assets/apps/CFOPAlgorithms/landing-oll.webp b/apps/web/public/assets/apps/CFOPAlgorithms/landing-oll.webp similarity index 100% rename from client/public/assets/apps/CFOPAlgorithms/landing-oll.webp rename to apps/web/public/assets/apps/CFOPAlgorithms/landing-oll.webp diff --git a/client/public/assets/apps/CFOPAlgorithms/landing-pll.webp b/apps/web/public/assets/apps/CFOPAlgorithms/landing-pll.webp similarity index 100% rename from client/public/assets/apps/CFOPAlgorithms/landing-pll.webp rename to apps/web/public/assets/apps/CFOPAlgorithms/landing-pll.webp diff --git a/client/public/assets/apps/RailwayMap/fonts/LTAIdentity-Medium.woff b/apps/web/public/assets/apps/RailwayMap/fonts/LTAIdentity-Medium.woff similarity index 100% rename from client/public/assets/apps/RailwayMap/fonts/LTAIdentity-Medium.woff rename to apps/web/public/assets/apps/RailwayMap/fonts/LTAIdentity-Medium.woff diff --git a/client/public/assets/apps/RailwayMap/fonts/LTAIdentity-Medium.woff2 b/apps/web/public/assets/apps/RailwayMap/fonts/LTAIdentity-Medium.woff2 similarity index 100% rename from client/public/assets/apps/RailwayMap/fonts/LTAIdentity-Medium.woff2 rename to apps/web/public/assets/apps/RailwayMap/fonts/LTAIdentity-Medium.woff2 diff --git a/client/public/assets/icons/icon-1024x1024.png b/apps/web/public/assets/icons/icon-1024x1024.png similarity index 100% rename from client/public/assets/icons/icon-1024x1024.png rename to apps/web/public/assets/icons/icon-1024x1024.png diff --git a/client/public/assets/icons/icon-128x128.png b/apps/web/public/assets/icons/icon-128x128.png similarity index 100% rename from client/public/assets/icons/icon-128x128.png rename to apps/web/public/assets/icons/icon-128x128.png diff --git a/client/public/assets/icons/icon-144x144.png b/apps/web/public/assets/icons/icon-144x144.png similarity index 100% rename from client/public/assets/icons/icon-144x144.png rename to apps/web/public/assets/icons/icon-144x144.png diff --git a/client/public/assets/icons/icon-152x152.png b/apps/web/public/assets/icons/icon-152x152.png similarity index 100% rename from client/public/assets/icons/icon-152x152.png rename to apps/web/public/assets/icons/icon-152x152.png diff --git a/client/public/assets/icons/icon-192x192.png b/apps/web/public/assets/icons/icon-192x192.png similarity index 100% rename from client/public/assets/icons/icon-192x192.png rename to apps/web/public/assets/icons/icon-192x192.png diff --git a/client/public/assets/icons/icon-256x256.png b/apps/web/public/assets/icons/icon-256x256.png similarity index 100% rename from client/public/assets/icons/icon-256x256.png rename to apps/web/public/assets/icons/icon-256x256.png diff --git a/client/public/assets/icons/icon-512x512.png b/apps/web/public/assets/icons/icon-512x512.png similarity index 100% rename from client/public/assets/icons/icon-512x512.png rename to apps/web/public/assets/icons/icon-512x512.png diff --git a/client/public/assets/icons/icon-72x72.png b/apps/web/public/assets/icons/icon-72x72.png similarity index 100% rename from client/public/assets/icons/icon-72x72.png rename to apps/web/public/assets/icons/icon-72x72.png diff --git a/client/public/assets/icons/icon-96x96.png b/apps/web/public/assets/icons/icon-96x96.png similarity index 100% rename from client/public/assets/icons/icon-96x96.png rename to apps/web/public/assets/icons/icon-96x96.png diff --git a/client/public/assets/login.jpg b/apps/web/public/assets/login.jpg similarity index 100% rename from client/public/assets/login.jpg rename to apps/web/public/assets/login.jpg diff --git a/client/public/assets/mockup/dark.png b/apps/web/public/assets/mockup/dark.png similarity index 100% rename from client/public/assets/mockup/dark.png rename to apps/web/public/assets/mockup/dark.png diff --git a/client/public/assets/mockup/light.png b/apps/web/public/assets/mockup/light.png similarity index 100% rename from client/public/assets/mockup/light.png rename to apps/web/public/assets/mockup/light.png diff --git a/client/public/assets/mockup/system.png b/apps/web/public/assets/mockup/system.png similarity index 100% rename from client/public/assets/mockup/system.png rename to apps/web/public/assets/mockup/system.png diff --git a/client/public/icon.svg b/apps/web/public/icon.svg similarity index 100% rename from client/public/icon.svg rename to apps/web/public/icon.svg diff --git a/client/public/manifest.json b/apps/web/public/manifest.json similarity index 100% rename from client/public/manifest.json rename to apps/web/public/manifest.json diff --git a/client/src/App.tsx b/apps/web/src/App.tsx similarity index 100% rename from client/src/App.tsx rename to apps/web/src/App.tsx diff --git a/client/src/bootstrap.tsx b/apps/web/src/bootstrap.tsx similarity index 100% rename from client/src/bootstrap.tsx rename to apps/web/src/bootstrap.tsx diff --git a/client/contract.ts b/apps/web/src/contract.ts similarity index 100% rename from client/contract.ts rename to apps/web/src/contract.ts diff --git a/client/src/core/accountSettings/components/AvatarColumn.tsx b/apps/web/src/core/accountSettings/components/AvatarColumn.tsx similarity index 100% rename from client/src/core/accountSettings/components/AvatarColumn.tsx rename to apps/web/src/core/accountSettings/components/AvatarColumn.tsx diff --git a/client/src/core/accountSettings/components/OrdinaryColumn.tsx b/apps/web/src/core/accountSettings/components/OrdinaryColumn.tsx similarity index 100% rename from client/src/core/accountSettings/components/OrdinaryColumn.tsx rename to apps/web/src/core/accountSettings/components/OrdinaryColumn.tsx diff --git a/client/src/core/accountSettings/components/PasswordColumn.tsx b/apps/web/src/core/accountSettings/components/PasswordColumn.tsx similarity index 100% rename from client/src/core/accountSettings/components/PasswordColumn.tsx rename to apps/web/src/core/accountSettings/components/PasswordColumn.tsx diff --git a/client/src/core/accountSettings/components/QRLoginColumn.tsx b/apps/web/src/core/accountSettings/components/QRLoginColumn.tsx similarity index 100% rename from client/src/core/accountSettings/components/QRLoginColumn.tsx rename to apps/web/src/core/accountSettings/components/QRLoginColumn.tsx diff --git a/client/src/core/accountSettings/components/TwoFAColumn.tsx b/apps/web/src/core/accountSettings/components/TwoFAColumn.tsx similarity index 100% rename from client/src/core/accountSettings/components/TwoFAColumn.tsx rename to apps/web/src/core/accountSettings/components/TwoFAColumn.tsx diff --git a/client/src/core/accountSettings/index.tsx b/apps/web/src/core/accountSettings/index.tsx similarity index 100% rename from client/src/core/accountSettings/index.tsx rename to apps/web/src/core/accountSettings/index.tsx diff --git a/client/src/core/accountSettings/manifest.ts b/apps/web/src/core/accountSettings/manifest.ts similarity index 100% rename from client/src/core/accountSettings/manifest.ts rename to apps/web/src/core/accountSettings/manifest.ts diff --git a/client/src/core/accountSettings/modals/DisableTwoFAModal.tsx b/apps/web/src/core/accountSettings/modals/DisableTwoFAModal.tsx similarity index 100% rename from client/src/core/accountSettings/modals/DisableTwoFAModal.tsx rename to apps/web/src/core/accountSettings/modals/DisableTwoFAModal.tsx diff --git a/client/src/core/accountSettings/modals/EnableTwoFAModal/components/OTPConfirmScreen.tsx b/apps/web/src/core/accountSettings/modals/EnableTwoFAModal/components/OTPConfirmScreen.tsx similarity index 100% rename from client/src/core/accountSettings/modals/EnableTwoFAModal/components/OTPConfirmScreen.tsx rename to apps/web/src/core/accountSettings/modals/EnableTwoFAModal/components/OTPConfirmScreen.tsx diff --git a/client/src/core/accountSettings/modals/EnableTwoFAModal/components/QRCodeDisplay.tsx b/apps/web/src/core/accountSettings/modals/EnableTwoFAModal/components/QRCodeDisplay.tsx similarity index 100% rename from client/src/core/accountSettings/modals/EnableTwoFAModal/components/QRCodeDisplay.tsx rename to apps/web/src/core/accountSettings/modals/EnableTwoFAModal/components/QRCodeDisplay.tsx diff --git a/client/src/core/accountSettings/modals/EnableTwoFAModal/components/TwoFAEnableProcedure.tsx b/apps/web/src/core/accountSettings/modals/EnableTwoFAModal/components/TwoFAEnableProcedure.tsx similarity index 100% rename from client/src/core/accountSettings/modals/EnableTwoFAModal/components/TwoFAEnableProcedure.tsx rename to apps/web/src/core/accountSettings/modals/EnableTwoFAModal/components/TwoFAEnableProcedure.tsx diff --git a/client/src/core/accountSettings/modals/EnableTwoFAModal/index.tsx b/apps/web/src/core/accountSettings/modals/EnableTwoFAModal/index.tsx similarity index 100% rename from client/src/core/accountSettings/modals/EnableTwoFAModal/index.tsx rename to apps/web/src/core/accountSettings/modals/EnableTwoFAModal/index.tsx diff --git a/client/src/core/accountSettings/modals/ModifyModal.tsx b/apps/web/src/core/accountSettings/modals/ModifyModal.tsx similarity index 100% rename from client/src/core/accountSettings/modals/ModifyModal.tsx rename to apps/web/src/core/accountSettings/modals/ModifyModal.tsx diff --git a/client/src/core/accountSettings/modals/QRLoginScannerModal/components/ConfirmScreen.tsx b/apps/web/src/core/accountSettings/modals/QRLoginScannerModal/components/ConfirmScreen.tsx similarity index 100% rename from client/src/core/accountSettings/modals/QRLoginScannerModal/components/ConfirmScreen.tsx rename to apps/web/src/core/accountSettings/modals/QRLoginScannerModal/components/ConfirmScreen.tsx diff --git a/client/src/core/accountSettings/modals/QRLoginScannerModal/components/ErrorScreen.tsx b/apps/web/src/core/accountSettings/modals/QRLoginScannerModal/components/ErrorScreen.tsx similarity index 100% rename from client/src/core/accountSettings/modals/QRLoginScannerModal/components/ErrorScreen.tsx rename to apps/web/src/core/accountSettings/modals/QRLoginScannerModal/components/ErrorScreen.tsx diff --git a/client/src/core/accountSettings/modals/QRLoginScannerModal/components/InnerContent.tsx b/apps/web/src/core/accountSettings/modals/QRLoginScannerModal/components/InnerContent.tsx similarity index 100% rename from client/src/core/accountSettings/modals/QRLoginScannerModal/components/InnerContent.tsx rename to apps/web/src/core/accountSettings/modals/QRLoginScannerModal/components/InnerContent.tsx diff --git a/client/src/core/accountSettings/modals/QRLoginScannerModal/components/SuccessScreen.tsx b/apps/web/src/core/accountSettings/modals/QRLoginScannerModal/components/SuccessScreen.tsx similarity index 100% rename from client/src/core/accountSettings/modals/QRLoginScannerModal/components/SuccessScreen.tsx rename to apps/web/src/core/accountSettings/modals/QRLoginScannerModal/components/SuccessScreen.tsx diff --git a/client/src/core/accountSettings/modals/QRLoginScannerModal/hooks/useQRLoginApproval.ts b/apps/web/src/core/accountSettings/modals/QRLoginScannerModal/hooks/useQRLoginApproval.ts similarity index 100% rename from client/src/core/accountSettings/modals/QRLoginScannerModal/hooks/useQRLoginApproval.ts rename to apps/web/src/core/accountSettings/modals/QRLoginScannerModal/hooks/useQRLoginApproval.ts diff --git a/client/src/core/accountSettings/modals/QRLoginScannerModal/index.tsx b/apps/web/src/core/accountSettings/modals/QRLoginScannerModal/index.tsx similarity index 100% rename from client/src/core/accountSettings/modals/QRLoginScannerModal/index.tsx rename to apps/web/src/core/accountSettings/modals/QRLoginScannerModal/index.tsx diff --git a/client/src/core/apiKeys/components/EntryItem.tsx b/apps/web/src/core/apiKeys/components/EntryItem.tsx similarity index 100% rename from client/src/core/apiKeys/components/EntryItem.tsx rename to apps/web/src/core/apiKeys/components/EntryItem.tsx diff --git a/client/src/core/apiKeys/index.tsx b/apps/web/src/core/apiKeys/index.tsx similarity index 100% rename from client/src/core/apiKeys/index.tsx rename to apps/web/src/core/apiKeys/index.tsx diff --git a/client/src/core/apiKeys/manifest.ts b/apps/web/src/core/apiKeys/manifest.ts similarity index 100% rename from client/src/core/apiKeys/manifest.ts rename to apps/web/src/core/apiKeys/manifest.ts diff --git a/client/src/core/apiKeys/modals/ModifyAPIKeyModal.tsx b/apps/web/src/core/apiKeys/modals/ModifyAPIKeyModal.tsx similarity index 100% rename from client/src/core/apiKeys/modals/ModifyAPIKeyModal.tsx rename to apps/web/src/core/apiKeys/modals/ModifyAPIKeyModal.tsx diff --git a/client/src/core/apiKeys/modals/ModulesRequiredListModal.tsx b/apps/web/src/core/apiKeys/modals/ModulesRequiredListModal.tsx similarity index 100% rename from client/src/core/apiKeys/modals/ModulesRequiredListModal.tsx rename to apps/web/src/core/apiKeys/modals/ModulesRequiredListModal.tsx diff --git a/client/src/core/auth/components/AuthFooter.tsx b/apps/web/src/core/auth/components/AuthFooter.tsx similarity index 100% rename from client/src/core/auth/components/AuthFooter.tsx rename to apps/web/src/core/auth/components/AuthFooter.tsx diff --git a/client/src/core/auth/components/AuthForm.tsx b/apps/web/src/core/auth/components/AuthForm.tsx similarity index 100% rename from client/src/core/auth/components/AuthForm.tsx rename to apps/web/src/core/auth/components/AuthForm.tsx diff --git a/client/src/core/auth/components/AuthHeader.tsx b/apps/web/src/core/auth/components/AuthHeader.tsx similarity index 100% rename from client/src/core/auth/components/AuthHeader.tsx rename to apps/web/src/core/auth/components/AuthHeader.tsx diff --git a/client/src/core/auth/components/AuthSideImage.tsx b/apps/web/src/core/auth/components/AuthSideImage.tsx similarity index 100% rename from client/src/core/auth/components/AuthSideImage.tsx rename to apps/web/src/core/auth/components/AuthSideImage.tsx diff --git a/client/src/core/auth/components/AuthSignInButtons/components/SignInButton.tsx b/apps/web/src/core/auth/components/AuthSignInButtons/components/SignInButton.tsx similarity index 100% rename from client/src/core/auth/components/AuthSignInButtons/components/SignInButton.tsx rename to apps/web/src/core/auth/components/AuthSignInButtons/components/SignInButton.tsx diff --git a/client/src/core/auth/components/AuthSignInButtons/components/SigninWithProviderButton.tsx b/apps/web/src/core/auth/components/AuthSignInButtons/components/SigninWithProviderButton.tsx similarity index 100% rename from client/src/core/auth/components/AuthSignInButtons/components/SigninWithProviderButton.tsx rename to apps/web/src/core/auth/components/AuthSignInButtons/components/SigninWithProviderButton.tsx diff --git a/client/src/core/auth/components/AuthSignInButtons/index.tsx b/apps/web/src/core/auth/components/AuthSignInButtons/index.tsx similarity index 100% rename from client/src/core/auth/components/AuthSignInButtons/index.tsx rename to apps/web/src/core/auth/components/AuthSignInButtons/index.tsx diff --git a/client/src/core/auth/components/OrAuthWithDivider.tsx b/apps/web/src/core/auth/components/OrAuthWithDivider.tsx similarity index 100% rename from client/src/core/auth/components/OrAuthWithDivider.tsx rename to apps/web/src/core/auth/components/OrAuthWithDivider.tsx diff --git a/client/src/core/auth/components/passkeyLoginTodo.ts.txt b/apps/web/src/core/auth/components/passkeyLoginTodo.ts.txt similarity index 100% rename from client/src/core/auth/components/passkeyLoginTodo.ts.txt rename to apps/web/src/core/auth/components/passkeyLoginTodo.ts.txt diff --git a/client/src/core/auth/index.tsx b/apps/web/src/core/auth/index.tsx similarity index 100% rename from client/src/core/auth/index.tsx rename to apps/web/src/core/auth/index.tsx diff --git a/client/src/core/auth/modals/QRLoginModal/components/QRByStatus.tsx b/apps/web/src/core/auth/modals/QRLoginModal/components/QRByStatus.tsx similarity index 100% rename from client/src/core/auth/modals/QRLoginModal/components/QRByStatus.tsx rename to apps/web/src/core/auth/modals/QRLoginModal/components/QRByStatus.tsx diff --git a/client/src/core/auth/modals/QRLoginModal/components/QRContent.tsx b/apps/web/src/core/auth/modals/QRLoginModal/components/QRContent.tsx similarity index 100% rename from client/src/core/auth/modals/QRLoginModal/components/QRContent.tsx rename to apps/web/src/core/auth/modals/QRLoginModal/components/QRContent.tsx diff --git a/client/src/core/auth/modals/QRLoginModal/hooks/useQRLoginSession.ts b/apps/web/src/core/auth/modals/QRLoginModal/hooks/useQRLoginSession.ts similarity index 100% rename from client/src/core/auth/modals/QRLoginModal/hooks/useQRLoginSession.ts rename to apps/web/src/core/auth/modals/QRLoginModal/hooks/useQRLoginSession.ts diff --git a/client/src/core/auth/modals/QRLoginModal/index.tsx b/apps/web/src/core/auth/modals/QRLoginModal/index.tsx similarity index 100% rename from client/src/core/auth/modals/QRLoginModal/index.tsx rename to apps/web/src/core/auth/modals/QRLoginModal/index.tsx diff --git a/client/src/core/auth/modals/QRLoginModal/utils/QRSessionMngr.ts b/apps/web/src/core/auth/modals/QRLoginModal/utils/QRSessionMngr.ts similarity index 100% rename from client/src/core/auth/modals/QRLoginModal/utils/QRSessionMngr.ts rename to apps/web/src/core/auth/modals/QRLoginModal/utils/QRSessionMngr.ts diff --git a/client/src/core/auth/modals/QRLoginModal/utils/getBrowserInfo.ts b/apps/web/src/core/auth/modals/QRLoginModal/utils/getBrowserInfo.ts similarity index 100% rename from client/src/core/auth/modals/QRLoginModal/utils/getBrowserInfo.ts rename to apps/web/src/core/auth/modals/QRLoginModal/utils/getBrowserInfo.ts diff --git a/client/src/core/auth/modals/TwoFAModal/components/ResendOTPButton.tsx b/apps/web/src/core/auth/modals/TwoFAModal/components/ResendOTPButton.tsx similarity index 100% rename from client/src/core/auth/modals/TwoFAModal/components/ResendOTPButton.tsx rename to apps/web/src/core/auth/modals/TwoFAModal/components/ResendOTPButton.tsx diff --git a/client/src/core/auth/modals/TwoFAModal/components/UsingAuthApp.tsx b/apps/web/src/core/auth/modals/TwoFAModal/components/UsingAuthApp.tsx similarity index 100% rename from client/src/core/auth/modals/TwoFAModal/components/UsingAuthApp.tsx rename to apps/web/src/core/auth/modals/TwoFAModal/components/UsingAuthApp.tsx diff --git a/client/src/core/auth/modals/TwoFAModal/components/UsingEmail.tsx b/apps/web/src/core/auth/modals/TwoFAModal/components/UsingEmail.tsx similarity index 100% rename from client/src/core/auth/modals/TwoFAModal/components/UsingEmail.tsx rename to apps/web/src/core/auth/modals/TwoFAModal/components/UsingEmail.tsx diff --git a/client/src/core/auth/modals/TwoFAModal/index.tsx b/apps/web/src/core/auth/modals/TwoFAModal/index.tsx similarity index 100% rename from client/src/core/auth/modals/TwoFAModal/index.tsx rename to apps/web/src/core/auth/modals/TwoFAModal/index.tsx diff --git a/client/src/core/auth/pages/LoginPage.tsx b/apps/web/src/core/auth/pages/LoginPage.tsx similarity index 100% rename from client/src/core/auth/pages/LoginPage.tsx rename to apps/web/src/core/auth/pages/LoginPage.tsx diff --git a/client/src/core/auth/pages/UserCreationPage.tsx b/apps/web/src/core/auth/pages/UserCreationPage.tsx similarity index 100% rename from client/src/core/auth/pages/UserCreationPage.tsx rename to apps/web/src/core/auth/pages/UserCreationPage.tsx diff --git a/client/src/core/backups/components/BackupItem.tsx b/apps/web/src/core/backups/components/BackupItem.tsx similarity index 100% rename from client/src/core/backups/components/BackupItem.tsx rename to apps/web/src/core/backups/components/BackupItem.tsx diff --git a/client/src/core/backups/components/CreateBackupModal.tsx b/apps/web/src/core/backups/components/CreateBackupModal.tsx similarity index 100% rename from client/src/core/backups/components/CreateBackupModal.tsx rename to apps/web/src/core/backups/components/CreateBackupModal.tsx diff --git a/client/src/core/backups/index.tsx b/apps/web/src/core/backups/index.tsx similarity index 100% rename from client/src/core/backups/index.tsx rename to apps/web/src/core/backups/index.tsx diff --git a/client/src/core/backups/manifest.ts b/apps/web/src/core/backups/manifest.ts similarity index 100% rename from client/src/core/backups/manifest.ts rename to apps/web/src/core/backups/manifest.ts diff --git a/client/src/core/dashboard/components/DashboardGrid.tsx b/apps/web/src/core/dashboard/components/DashboardGrid.tsx similarity index 100% rename from client/src/core/dashboard/components/DashboardGrid.tsx rename to apps/web/src/core/dashboard/components/DashboardGrid.tsx diff --git a/client/src/core/dashboard/components/NotFoundWidget.tsx b/apps/web/src/core/dashboard/components/NotFoundWidget.tsx similarity index 100% rename from client/src/core/dashboard/components/NotFoundWidget.tsx rename to apps/web/src/core/dashboard/components/NotFoundWidget.tsx diff --git a/client/src/core/dashboard/components/SaveButtonPopup.tsx b/apps/web/src/core/dashboard/components/SaveButtonPopup.tsx similarity index 100% rename from client/src/core/dashboard/components/SaveButtonPopup.tsx rename to apps/web/src/core/dashboard/components/SaveButtonPopup.tsx diff --git a/client/src/core/dashboard/index.css b/apps/web/src/core/dashboard/index.css similarity index 100% rename from client/src/core/dashboard/index.css rename to apps/web/src/core/dashboard/index.css diff --git a/client/src/core/dashboard/index.tsx b/apps/web/src/core/dashboard/index.tsx similarity index 100% rename from client/src/core/dashboard/index.tsx rename to apps/web/src/core/dashboard/index.tsx diff --git a/client/src/core/dashboard/manifest.ts b/apps/web/src/core/dashboard/manifest.ts similarity index 100% rename from client/src/core/dashboard/manifest.ts rename to apps/web/src/core/dashboard/manifest.ts diff --git a/client/src/core/dashboard/modals/ManageWidgetsModal/components/ComponentItem.tsx b/apps/web/src/core/dashboard/modals/ManageWidgetsModal/components/ComponentItem.tsx similarity index 100% rename from client/src/core/dashboard/modals/ManageWidgetsModal/components/ComponentItem.tsx rename to apps/web/src/core/dashboard/modals/ManageWidgetsModal/components/ComponentItem.tsx diff --git a/client/src/core/dashboard/modals/ManageWidgetsModal/index.tsx b/apps/web/src/core/dashboard/modals/ManageWidgetsModal/index.tsx similarity index 100% rename from client/src/core/dashboard/modals/ManageWidgetsModal/index.tsx rename to apps/web/src/core/dashboard/modals/ManageWidgetsModal/index.tsx diff --git a/client/src/core/dashboard/providers/WidgetProvider.tsx b/apps/web/src/core/dashboard/providers/WidgetProvider.tsx similarity index 100% rename from client/src/core/dashboard/providers/WidgetProvider.tsx rename to apps/web/src/core/dashboard/providers/WidgetProvider.tsx diff --git a/client/src/core/documentation/index.tsx b/apps/web/src/core/documentation/index.tsx similarity index 100% rename from client/src/core/documentation/index.tsx rename to apps/web/src/core/documentation/index.tsx diff --git a/client/src/core/documentation/manifest.ts b/apps/web/src/core/documentation/manifest.ts similarity index 100% rename from client/src/core/documentation/manifest.ts rename to apps/web/src/core/documentation/manifest.ts diff --git a/client/src/core/moduleManager/manifest.ts b/apps/web/src/core/moduleManager/manifest.ts similarity index 100% rename from client/src/core/moduleManager/manifest.ts rename to apps/web/src/core/moduleManager/manifest.ts diff --git a/client/src/core/moduleManager/pages/Categories/components/CategoryItem.tsx b/apps/web/src/core/moduleManager/pages/Categories/components/CategoryItem.tsx similarity index 100% rename from client/src/core/moduleManager/pages/Categories/components/CategoryItem.tsx rename to apps/web/src/core/moduleManager/pages/Categories/components/CategoryItem.tsx diff --git a/client/src/core/moduleManager/pages/Categories/components/ModifyCategoryModal.tsx b/apps/web/src/core/moduleManager/pages/Categories/components/ModifyCategoryModal.tsx similarity index 100% rename from client/src/core/moduleManager/pages/Categories/components/ModifyCategoryModal.tsx rename to apps/web/src/core/moduleManager/pages/Categories/components/ModifyCategoryModal.tsx diff --git a/client/src/core/moduleManager/pages/Categories/components/ModifyTranslationKeyModal.tsx b/apps/web/src/core/moduleManager/pages/Categories/components/ModifyTranslationKeyModal.tsx similarity index 100% rename from client/src/core/moduleManager/pages/Categories/components/ModifyTranslationKeyModal.tsx rename to apps/web/src/core/moduleManager/pages/Categories/components/ModifyTranslationKeyModal.tsx diff --git a/client/src/core/moduleManager/pages/Categories/index.tsx b/apps/web/src/core/moduleManager/pages/Categories/index.tsx similarity index 100% rename from client/src/core/moduleManager/pages/Categories/index.tsx rename to apps/web/src/core/moduleManager/pages/Categories/index.tsx diff --git a/client/src/core/moduleManager/pages/Modules/components/ModuleItem.tsx b/apps/web/src/core/moduleManager/pages/Modules/components/ModuleItem.tsx similarity index 100% rename from client/src/core/moduleManager/pages/Modules/components/ModuleItem.tsx rename to apps/web/src/core/moduleManager/pages/Modules/components/ModuleItem.tsx diff --git a/client/src/core/moduleManager/pages/Modules/index.tsx b/apps/web/src/core/moduleManager/pages/Modules/index.tsx similarity index 100% rename from client/src/core/moduleManager/pages/Modules/index.tsx rename to apps/web/src/core/moduleManager/pages/Modules/index.tsx diff --git a/client/src/core/personalization/components/BgImageSelector/index.tsx b/apps/web/src/core/personalization/components/BgImageSelector/index.tsx similarity index 100% rename from client/src/core/personalization/components/BgImageSelector/index.tsx rename to apps/web/src/core/personalization/components/BgImageSelector/index.tsx diff --git a/client/src/core/personalization/components/BgImageSelector/modals/AdjustBgImageModal/components/AdjustmentColumn.tsx b/apps/web/src/core/personalization/components/BgImageSelector/modals/AdjustBgImageModal/components/AdjustmentColumn.tsx similarity index 100% rename from client/src/core/personalization/components/BgImageSelector/modals/AdjustBgImageModal/components/AdjustmentColumn.tsx rename to apps/web/src/core/personalization/components/BgImageSelector/modals/AdjustBgImageModal/components/AdjustmentColumn.tsx diff --git a/client/src/core/personalization/components/BgImageSelector/modals/AdjustBgImageModal/components/ResultShowcase.tsx b/apps/web/src/core/personalization/components/BgImageSelector/modals/AdjustBgImageModal/components/ResultShowcase.tsx similarity index 100% rename from client/src/core/personalization/components/BgImageSelector/modals/AdjustBgImageModal/components/ResultShowcase.tsx rename to apps/web/src/core/personalization/components/BgImageSelector/modals/AdjustBgImageModal/components/ResultShowcase.tsx diff --git a/client/src/core/personalization/components/BgImageSelector/modals/AdjustBgImageModal/constants/bg_blurs.ts b/apps/web/src/core/personalization/components/BgImageSelector/modals/AdjustBgImageModal/constants/bg_blurs.ts similarity index 100% rename from client/src/core/personalization/components/BgImageSelector/modals/AdjustBgImageModal/constants/bg_blurs.ts rename to apps/web/src/core/personalization/components/BgImageSelector/modals/AdjustBgImageModal/constants/bg_blurs.ts diff --git a/client/src/core/personalization/components/BgImageSelector/modals/AdjustBgImageModal/index.tsx b/apps/web/src/core/personalization/components/BgImageSelector/modals/AdjustBgImageModal/index.tsx similarity index 100% rename from client/src/core/personalization/components/BgImageSelector/modals/AdjustBgImageModal/index.tsx rename to apps/web/src/core/personalization/components/BgImageSelector/modals/AdjustBgImageModal/index.tsx diff --git a/client/src/core/personalization/components/BgTempSelector/components/DefaultBgTempSelector.tsx b/apps/web/src/core/personalization/components/BgTempSelector/components/DefaultBgTempSelector.tsx similarity index 100% rename from client/src/core/personalization/components/BgTempSelector/components/DefaultBgTempSelector.tsx rename to apps/web/src/core/personalization/components/BgTempSelector/components/DefaultBgTempSelector.tsx diff --git a/client/src/core/personalization/components/BgTempSelector/index.tsx b/apps/web/src/core/personalization/components/BgTempSelector/index.tsx similarity index 100% rename from client/src/core/personalization/components/BgTempSelector/index.tsx rename to apps/web/src/core/personalization/components/BgTempSelector/index.tsx diff --git a/client/src/core/personalization/components/BorderRadiusSelector/components/BorderRadiusIcon.tsx b/apps/web/src/core/personalization/components/BorderRadiusSelector/components/BorderRadiusIcon.tsx similarity index 100% rename from client/src/core/personalization/components/BorderRadiusSelector/components/BorderRadiusIcon.tsx rename to apps/web/src/core/personalization/components/BorderRadiusSelector/components/BorderRadiusIcon.tsx diff --git a/client/src/core/personalization/components/BorderRadiusSelector/index.tsx b/apps/web/src/core/personalization/components/BorderRadiusSelector/index.tsx similarity index 100% rename from client/src/core/personalization/components/BorderRadiusSelector/index.tsx rename to apps/web/src/core/personalization/components/BorderRadiusSelector/index.tsx diff --git a/client/src/core/personalization/components/BorderedSelector.tsx b/apps/web/src/core/personalization/components/BorderedSelector.tsx similarity index 100% rename from client/src/core/personalization/components/BorderedSelector.tsx rename to apps/web/src/core/personalization/components/BorderedSelector.tsx diff --git a/client/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/index.tsx b/apps/web/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/index.tsx similarity index 100% rename from client/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/index.tsx rename to apps/web/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/index.tsx diff --git a/client/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/custom/components/CustomFontCard.tsx b/apps/web/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/custom/components/CustomFontCard.tsx similarity index 100% rename from client/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/custom/components/CustomFontCard.tsx rename to apps/web/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/custom/components/CustomFontCard.tsx diff --git a/client/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/custom/components/CustomFontUploadModal.tsx b/apps/web/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/custom/components/CustomFontUploadModal.tsx similarity index 100% rename from client/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/custom/components/CustomFontUploadModal.tsx rename to apps/web/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/custom/components/CustomFontUploadModal.tsx diff --git a/client/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/custom/index.tsx b/apps/web/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/custom/index.tsx similarity index 100% rename from client/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/custom/index.tsx rename to apps/web/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/custom/index.tsx diff --git a/client/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/google/components/FontListItem.tsx b/apps/web/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/google/components/FontListItem.tsx similarity index 100% rename from client/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/google/components/FontListItem.tsx rename to apps/web/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/google/components/FontListItem.tsx diff --git a/client/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/google/components/GoogleFontFilter.tsx b/apps/web/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/google/components/GoogleFontFilter.tsx similarity index 100% rename from client/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/google/components/GoogleFontFilter.tsx rename to apps/web/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/google/components/GoogleFontFilter.tsx diff --git a/client/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/google/components/GoogleFontList.tsx b/apps/web/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/google/components/GoogleFontList.tsx similarity index 100% rename from client/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/google/components/GoogleFontList.tsx rename to apps/web/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/google/components/GoogleFontList.tsx diff --git a/client/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/google/contexts/GoogleFontContext.tsx b/apps/web/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/google/contexts/GoogleFontContext.tsx similarity index 100% rename from client/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/google/contexts/GoogleFontContext.tsx rename to apps/web/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/google/contexts/GoogleFontContext.tsx diff --git a/client/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/google/index.tsx b/apps/web/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/google/index.tsx similarity index 100% rename from client/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/google/index.tsx rename to apps/web/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/google/index.tsx diff --git a/client/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/google/utils/stylesheet.ts b/apps/web/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/google/utils/stylesheet.ts similarity index 100% rename from client/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/google/utils/stylesheet.ts rename to apps/web/src/core/personalization/components/FontFamilySelector/components/FontFamilySelectorModal/tabs/google/utils/stylesheet.ts diff --git a/client/src/core/personalization/components/FontFamilySelector/index.tsx b/apps/web/src/core/personalization/components/FontFamilySelector/index.tsx similarity index 100% rename from client/src/core/personalization/components/FontFamilySelector/index.tsx rename to apps/web/src/core/personalization/components/FontFamilySelector/index.tsx diff --git a/client/src/core/personalization/components/FontFamilySelector/utils/detectFontMetadata.ts b/apps/web/src/core/personalization/components/FontFamilySelector/utils/detectFontMetadata.ts similarity index 100% rename from client/src/core/personalization/components/FontFamilySelector/utils/detectFontMetadata.ts rename to apps/web/src/core/personalization/components/FontFamilySelector/utils/detectFontMetadata.ts diff --git a/client/src/core/personalization/components/FontScaleSelector.tsx b/apps/web/src/core/personalization/components/FontScaleSelector.tsx similarity index 100% rename from client/src/core/personalization/components/FontScaleSelector.tsx rename to apps/web/src/core/personalization/components/FontScaleSelector.tsx diff --git a/client/src/core/personalization/components/LanguageSelector.tsx b/apps/web/src/core/personalization/components/LanguageSelector.tsx similarity index 100% rename from client/src/core/personalization/components/LanguageSelector.tsx rename to apps/web/src/core/personalization/components/LanguageSelector.tsx diff --git a/client/src/core/personalization/components/ThemeColorSelector/components/DefaultThemeColorSelector.tsx b/apps/web/src/core/personalization/components/ThemeColorSelector/components/DefaultThemeColorSelector.tsx similarity index 100% rename from client/src/core/personalization/components/ThemeColorSelector/components/DefaultThemeColorSelector.tsx rename to apps/web/src/core/personalization/components/ThemeColorSelector/components/DefaultThemeColorSelector.tsx diff --git a/client/src/core/personalization/components/ThemeColorSelector/index.tsx b/apps/web/src/core/personalization/components/ThemeColorSelector/index.tsx similarity index 100% rename from client/src/core/personalization/components/ThemeColorSelector/index.tsx rename to apps/web/src/core/personalization/components/ThemeColorSelector/index.tsx diff --git a/client/src/core/personalization/components/ThemeSelector.tsx b/apps/web/src/core/personalization/components/ThemeSelector.tsx similarity index 100% rename from client/src/core/personalization/components/ThemeSelector.tsx rename to apps/web/src/core/personalization/components/ThemeSelector.tsx diff --git a/client/src/core/personalization/index.tsx b/apps/web/src/core/personalization/index.tsx similarity index 100% rename from client/src/core/personalization/index.tsx rename to apps/web/src/core/personalization/index.tsx diff --git a/client/src/core/personalization/manifest.ts b/apps/web/src/core/personalization/manifest.ts similarity index 100% rename from client/src/core/personalization/manifest.ts rename to apps/web/src/core/personalization/manifest.ts diff --git a/client/src/federation/providers/CoreFederationProvider.tsx b/apps/web/src/federation/providers/CoreFederationProvider.tsx similarity index 96% rename from client/src/federation/providers/CoreFederationProvider.tsx rename to apps/web/src/federation/providers/CoreFederationProvider.tsx index 77d33dd02..bdefaa550 100644 --- a/client/src/federation/providers/CoreFederationProvider.tsx +++ b/apps/web/src/federation/providers/CoreFederationProvider.tsx @@ -27,7 +27,7 @@ const coreModules = [ const devModeImports = import.meta.env.DEV ? import.meta.glob<{ default: ModuleConfig }>( - '../../../../apps/*/client/manifest.ts', + '../../../../modules/*/client/manifest.ts', { eager: false } ) : {} diff --git a/client/src/forgeAPI.tsx b/apps/web/src/forgeAPI.tsx similarity index 88% rename from client/src/forgeAPI.tsx rename to apps/web/src/forgeAPI.tsx index 33cadf13f..2a82422cd 100644 --- a/client/src/forgeAPI.tsx +++ b/apps/web/src/forgeAPI.tsx @@ -1,6 +1,6 @@ import { createForgeProxy, globalProxyRegistry } from '@lifeforge/api' -import contract from '../contract' +import contract from './contract' globalProxyRegistry.set(contract, { moduleId: '', diff --git a/client/src/i18n.ts b/apps/web/src/i18n.ts similarity index 100% rename from client/src/i18n.ts rename to apps/web/src/i18n.ts diff --git a/client/src/index.css b/apps/web/src/index.css similarity index 100% rename from client/src/index.css rename to apps/web/src/index.css diff --git a/client/src/index.tsx b/apps/web/src/index.tsx similarity index 100% rename from client/src/index.tsx rename to apps/web/src/index.tsx diff --git a/client/src/providers/features/APIKeyStatusProvider.tsx b/apps/web/src/providers/features/APIKeyStatusProvider.tsx similarity index 100% rename from client/src/providers/features/APIKeyStatusProvider.tsx rename to apps/web/src/providers/features/APIKeyStatusProvider.tsx diff --git a/client/src/providers/features/ExternalModuleProviders.tsx b/apps/web/src/providers/features/ExternalModuleProviders.tsx similarity index 100% rename from client/src/providers/features/ExternalModuleProviders.tsx rename to apps/web/src/providers/features/ExternalModuleProviders.tsx diff --git a/client/src/providers/features/I18nInitProvider.tsx b/apps/web/src/providers/features/I18nInitProvider.tsx similarity index 100% rename from client/src/providers/features/I18nInitProvider.tsx rename to apps/web/src/providers/features/I18nInitProvider.tsx diff --git a/client/src/providers/features/UserPersonalizationProvider.tsx b/apps/web/src/providers/features/UserPersonalizationProvider.tsx similarity index 100% rename from client/src/providers/features/UserPersonalizationProvider.tsx rename to apps/web/src/providers/features/UserPersonalizationProvider.tsx diff --git a/client/src/providers/index.tsx b/apps/web/src/providers/index.tsx similarity index 100% rename from client/src/providers/index.tsx rename to apps/web/src/providers/index.tsx diff --git a/client/src/providers/utils/providerUtils.tsx b/apps/web/src/providers/utils/providerUtils.tsx similarity index 100% rename from client/src/providers/utils/providerUtils.tsx rename to apps/web/src/providers/utils/providerUtils.tsx diff --git a/client/src/routes/components/RootLayout.tsx b/apps/web/src/routes/components/RootLayout.tsx similarity index 100% rename from client/src/routes/components/RootLayout.tsx rename to apps/web/src/routes/components/RootLayout.tsx diff --git a/client/src/routes/components/RouteErrorScreen.tsx b/apps/web/src/routes/components/RouteErrorScreen.tsx similarity index 100% rename from client/src/routes/components/RouteErrorScreen.tsx rename to apps/web/src/routes/components/RouteErrorScreen.tsx diff --git a/client/src/routes/components/Sidebar/MainSidebarTitle.tsx b/apps/web/src/routes/components/Sidebar/MainSidebarTitle.tsx similarity index 100% rename from client/src/routes/components/Sidebar/MainSidebarTitle.tsx rename to apps/web/src/routes/components/Sidebar/MainSidebarTitle.tsx diff --git a/client/src/routes/components/Sidebar/Sidebar.tsx b/apps/web/src/routes/components/Sidebar/Sidebar.tsx similarity index 100% rename from client/src/routes/components/Sidebar/Sidebar.tsx rename to apps/web/src/routes/components/Sidebar/Sidebar.tsx diff --git a/client/src/routes/components/Sidebar/SidebarBottomBar.tsx b/apps/web/src/routes/components/Sidebar/SidebarBottomBar.tsx similarity index 100% rename from client/src/routes/components/Sidebar/SidebarBottomBar.tsx rename to apps/web/src/routes/components/Sidebar/SidebarBottomBar.tsx diff --git a/client/src/routes/components/Sidebar/SidebarEventBanner.tsx b/apps/web/src/routes/components/Sidebar/SidebarEventBanner.tsx similarity index 100% rename from client/src/routes/components/Sidebar/SidebarEventBanner.tsx rename to apps/web/src/routes/components/Sidebar/SidebarEventBanner.tsx diff --git a/client/src/routes/components/Sidebar/SidebarHeader.tsx b/apps/web/src/routes/components/Sidebar/SidebarHeader.tsx similarity index 100% rename from client/src/routes/components/Sidebar/SidebarHeader.tsx rename to apps/web/src/routes/components/Sidebar/SidebarHeader.tsx diff --git a/client/src/routes/components/Sidebar/SidebarItems.tsx b/apps/web/src/routes/components/Sidebar/SidebarItems.tsx similarity index 100% rename from client/src/routes/components/Sidebar/SidebarItems.tsx rename to apps/web/src/routes/components/Sidebar/SidebarItems.tsx diff --git a/client/src/routes/hooks/useAppRouter.ts b/apps/web/src/routes/hooks/useAppRouter.ts similarity index 100% rename from client/src/routes/hooks/useAppRouter.ts rename to apps/web/src/routes/hooks/useAppRouter.ts diff --git a/client/src/routes/hooks/useTitleEffect.ts b/apps/web/src/routes/hooks/useTitleEffect.ts similarity index 100% rename from client/src/routes/hooks/useTitleEffect.ts rename to apps/web/src/routes/hooks/useTitleEffect.ts diff --git a/client/src/routes/providers/AppRoutesProvider.tsx b/apps/web/src/routes/providers/AppRoutesProvider.tsx similarity index 100% rename from client/src/routes/providers/AppRoutesProvider.tsx rename to apps/web/src/routes/providers/AppRoutesProvider.tsx diff --git a/client/src/routes/utils/routeBuilder.tsx b/apps/web/src/routes/utils/routeBuilder.tsx similarity index 100% rename from client/src/routes/utils/routeBuilder.tsx rename to apps/web/src/routes/utils/routeBuilder.tsx diff --git a/client/src/routes/utils/routerFactory.tsx b/apps/web/src/routes/utils/routerFactory.tsx similarity index 100% rename from client/src/routes/utils/routerFactory.tsx rename to apps/web/src/routes/utils/routerFactory.tsx diff --git a/client/src/vite-env.d.ts b/apps/web/src/vite-env.d.ts similarity index 100% rename from client/src/vite-env.d.ts rename to apps/web/src/vite-env.d.ts diff --git a/client/tsconfig.json b/apps/web/tsconfig.json similarity index 92% rename from client/tsconfig.json rename to apps/web/tsconfig.json index aceccb063..9d3567fdb 100644 --- a/client/tsconfig.json +++ b/apps/web/tsconfig.json @@ -19,10 +19,10 @@ "noFallthroughCasesInSwitch": true, "verbatimModuleSyntax": true, "composite": true, - "rootDir": "../", + "rootDir": "../../", "paths": { "@/*": ["./src/*"], - "@core/*": ["../core/*"] + "@core/*": ["../../core/*"] } }, "include": ["./src/**/*", "./vite.config.ts", "./contract.ts"] diff --git a/client/vercel.json b/apps/web/vercel.json similarity index 100% rename from client/vercel.json rename to apps/web/vercel.json diff --git a/client/vite.config.ts b/apps/web/vite.config.ts similarity index 100% rename from client/vite.config.ts rename to apps/web/vite.config.ts diff --git a/bun.lock b/bun.lock index 2c5958545..a2ccbc736 100644 --- a/bun.lock +++ b/bun.lock @@ -60,90 +60,57 @@ "vite": "^7.1.9", }, }, - "apps/lifeforge--achievements": { - "name": "@lifeforge/lifeforge--achievements", - "version": "0.0.11", - "peerDependencies": { - "@lifeforge/api": "workspace:*", - "@lifeforge/configs": "workspace:*", - "@lifeforge/federation": "workspace:*", - "@lifeforge/server-utils": "workspace:*", - "@lifeforge/ui": "workspace:*", - }, - }, - "apps/lifeforge--api--endpoint-explorer": { - "name": "@lifeforge/lifeforge--api-endpoint-explorer", - "version": "0.0.5", - "peerDependencies": { - "@lifeforge/api": "workspace:*", - "@lifeforge/configs": "workspace:*", - "@lifeforge/federation": "workspace:*", - "@lifeforge/server-utils": "workspace:*", - "@lifeforge/ui": "workspace:*", - }, - }, - "apps/lifeforge--utility-widgets": { - "name": "@lifeforge/lifeforge--utility-widgets", - "version": "0.0.1", - "devDependencies": { - "@types/react": "^19.2.0", - "@types/react-dom": "^19.2.0", - "vite": "^7.1.9", - }, - "peerDependencies": { - "@lifeforge/api": "workspace:*", - "@lifeforge/configs": "workspace:*", - "@lifeforge/federation": "workspace:*", - "@lifeforge/server-utils": "workspace:*", - "@lifeforge/ui": "workspace:*", - }, - }, - "apps/lifeforge--wallet": { - "name": "@lifeforge/lifeforge--wallet", - "version": "0.0.5", + "apps/api": { + "name": "@lifeforge/server", + "version": "0.0.0", "dependencies": { - "@vis.gl/react-google-maps": "^1.5.5", - "chart.js": "^4.5.0", - "moment": "^2.30.1", - "moment-range": "^4.0.2", - "react-chartjs-2": "^5.3.0", - "react-to-print": "^3.1.1", - "react-virtualized": "^9.22.6", - "recharts": "^2.15.0", - "zustand": "^5.0.8", + "@lifeforge/log": "workspace:*", + "@lifeforge/server-utils": "workspace:*", + "bcryptjs": "^3.0.2", + "chalk": "^5.4.1", + "commander": "^14.0.2", + "cors": "^2.8.5", + "crypto": "^1.0.1", + "crypto-js": "^4.2.0", + "express": "^4.21.2", + "express-rate-limit": "^7.4.1", + "groq-sdk": "^0.5.0", + "helmet": "^7.2.0", + "morgan": "^1.10.0", + "multer": "^1.4.5-lts.1", + "node-cache": "^5.1.2", + "openai": "^6.7.0", + "pdf2pic": "^3.2.0", + "pocketbase": "^0.26.2", + "request": "^2.88.2", + "socket.io": "^4.8.1", + "speakeasy": "^2.0.0", + "tesseract.js": "^6.0.1", + "uuid": "^9.0.1", }, "devDependencies": { - "@types/react-virtualized": "^9.22.3", - }, - "peerDependencies": { - "@lifeforge/api": "workspace:*", - "@lifeforge/configs": "workspace:*", - "@lifeforge/federation": "workspace:*", - "@lifeforge/server-utils": "workspace:*", - "@lifeforge/ui": "workspace:*", + "@eslint/js": "^9.31.0", + "@types/bcrypt": "^5.0.2", + "@types/cors": "^2.8.17", + "@types/crypto-js": "^4.2.2", + "@types/express": "^4.17.23", + "@types/express-serve-static-core": "4.19.6", + "@types/jsdom": "^21.1.7", + "@types/lodash": "^4.17.21", + "@types/morgan": "^1.9.9", + "@types/multer": "^1.4.12", + "@types/node-cache": "^4.2.5", + "@types/request": "^2.48.12", + "@types/speakeasy": "^2.0.10", + "@types/uuid": "^10.0.0", + "@vitest/ui": "^4.0.2", + "eslint": "^9.31.0", + "forever": "^4.0.3", + "tsx": "^4.19.1", + "vitest": "^4.0.2", }, }, - "apps/melvinchia3636--modrinth": { - "name": "@lifeforge/melvinchia3636--modrinth", - "version": "0.0.5", - "dependencies": { - "human-readable": "^0.2.1", - "jsdom": "^27.2.0", - "react-markdown": "^10.1.0", - "rehype-raw": "^7.0.0", - }, - "devDependencies": { - "@types/jsdom": "^27.0.0", - }, - "peerDependencies": { - "@lifeforge/api": "workspace:*", - "@lifeforge/configs": "workspace:*", - "@lifeforge/federation": "workspace:*", - "@lifeforge/server-utils": "workspace:*", - "@lifeforge/ui": "workspace:*", - }, - }, - "client": { + "apps/web": { "name": "@lifeforge/client", "version": "0.0.0", "dependencies": { @@ -236,6 +203,89 @@ "name": "@lifeforge/lifeforge--lang-en", "version": "0.0.1", }, + "modules/lifeforge--achievements": { + "name": "@lifeforge/lifeforge--achievements", + "version": "0.0.11", + "peerDependencies": { + "@lifeforge/api": "workspace:*", + "@lifeforge/configs": "workspace:*", + "@lifeforge/federation": "workspace:*", + "@lifeforge/server-utils": "workspace:*", + "@lifeforge/ui": "workspace:*", + }, + }, + "modules/lifeforge--api--endpoint-explorer": { + "name": "@lifeforge/lifeforge--api-endpoint-explorer", + "version": "0.0.5", + "peerDependencies": { + "@lifeforge/api": "workspace:*", + "@lifeforge/configs": "workspace:*", + "@lifeforge/federation": "workspace:*", + "@lifeforge/server-utils": "workspace:*", + "@lifeforge/ui": "workspace:*", + }, + }, + "modules/lifeforge--utility-widgets": { + "name": "@lifeforge/lifeforge--utility-widgets", + "version": "0.0.1", + "devDependencies": { + "@types/react": "^19.2.0", + "@types/react-dom": "^19.2.0", + "vite": "^7.1.9", + }, + "peerDependencies": { + "@lifeforge/api": "workspace:*", + "@lifeforge/configs": "workspace:*", + "@lifeforge/federation": "workspace:*", + "@lifeforge/server-utils": "workspace:*", + "@lifeforge/ui": "workspace:*", + }, + }, + "modules/lifeforge--wallet": { + "name": "@lifeforge/lifeforge--wallet", + "version": "0.0.5", + "dependencies": { + "@vis.gl/react-google-maps": "^1.5.5", + "chart.js": "^4.5.0", + "moment": "^2.30.1", + "moment-range": "^4.0.2", + "react-chartjs-2": "^5.3.0", + "react-to-print": "^3.1.1", + "react-virtualized": "^9.22.6", + "recharts": "^2.15.0", + "zustand": "^5.0.8", + }, + "devDependencies": { + "@types/react-virtualized": "^9.22.3", + }, + "peerDependencies": { + "@lifeforge/api": "workspace:*", + "@lifeforge/configs": "workspace:*", + "@lifeforge/federation": "workspace:*", + "@lifeforge/server-utils": "workspace:*", + "@lifeforge/ui": "workspace:*", + }, + }, + "modules/melvinchia3636--modrinth": { + "name": "@lifeforge/melvinchia3636--modrinth", + "version": "0.0.5", + "dependencies": { + "human-readable": "^0.2.1", + "jsdom": "^27.2.0", + "react-markdown": "^10.1.0", + "rehype-raw": "^7.0.0", + }, + "devDependencies": { + "@types/jsdom": "^27.0.0", + }, + "peerDependencies": { + "@lifeforge/api": "workspace:*", + "@lifeforge/configs": "workspace:*", + "@lifeforge/federation": "workspace:*", + "@lifeforge/server-utils": "workspace:*", + "@lifeforge/ui": "workspace:*", + }, + }, "packages/api": { "name": "@lifeforge/api", "version": "0.0.1", @@ -406,56 +456,6 @@ "react-dom": "^19.2.0", }, }, - "server": { - "name": "@lifeforge/server", - "version": "0.0.0", - "dependencies": { - "@lifeforge/log": "workspace:*", - "@lifeforge/server-utils": "workspace:*", - "bcryptjs": "^3.0.2", - "chalk": "^5.4.1", - "commander": "^14.0.2", - "cors": "^2.8.5", - "crypto": "^1.0.1", - "crypto-js": "^4.2.0", - "express": "^4.21.2", - "express-rate-limit": "^7.4.1", - "groq-sdk": "^0.5.0", - "helmet": "^7.2.0", - "morgan": "^1.10.0", - "multer": "^1.4.5-lts.1", - "node-cache": "^5.1.2", - "openai": "^6.7.0", - "pdf2pic": "^3.2.0", - "pocketbase": "^0.26.2", - "request": "^2.88.2", - "socket.io": "^4.8.1", - "speakeasy": "^2.0.0", - "tesseract.js": "^6.0.1", - "uuid": "^9.0.1", - }, - "devDependencies": { - "@eslint/js": "^9.31.0", - "@types/bcrypt": "^5.0.2", - "@types/cors": "^2.8.17", - "@types/crypto-js": "^4.2.2", - "@types/express": "^4.17.23", - "@types/express-serve-static-core": "4.19.6", - "@types/jsdom": "^21.1.7", - "@types/lodash": "^4.17.21", - "@types/morgan": "^1.9.9", - "@types/multer": "^1.4.12", - "@types/node-cache": "^4.2.5", - "@types/request": "^2.48.12", - "@types/speakeasy": "^2.0.10", - "@types/uuid": "^10.0.0", - "@vitest/ui": "^4.0.2", - "eslint": "^9.31.0", - "forever": "^4.0.3", - "tsx": "^4.19.1", - "vitest": "^4.0.2", - }, - }, "tools": { "name": "lifeforge-cli", "version": "0.0.0", @@ -756,27 +756,27 @@ "@lifeforge/api": ["@lifeforge/api@workspace:packages/api"], - "@lifeforge/client": ["@lifeforge/client@workspace:client"], + "@lifeforge/client": ["@lifeforge/client@workspace:apps/web"], "@lifeforge/configs": ["@lifeforge/configs@workspace:packages/configs"], "@lifeforge/federation": ["@lifeforge/federation@workspace:packages/federation"], - "@lifeforge/lifeforge--achievements": ["@lifeforge/lifeforge--achievements@workspace:apps/lifeforge--achievements"], + "@lifeforge/lifeforge--achievements": ["@lifeforge/lifeforge--achievements@workspace:modules/lifeforge--achievements"], - "@lifeforge/lifeforge--api-endpoint-explorer": ["@lifeforge/lifeforge--api-endpoint-explorer@workspace:apps/lifeforge--api--endpoint-explorer"], + "@lifeforge/lifeforge--api-endpoint-explorer": ["@lifeforge/lifeforge--api-endpoint-explorer@workspace:modules/lifeforge--api--endpoint-explorer"], "@lifeforge/lifeforge--lang-en": ["@lifeforge/lifeforge--lang-en@workspace:locales/lifeforge--lang-en"], - "@lifeforge/lifeforge--utility-widgets": ["@lifeforge/lifeforge--utility-widgets@workspace:apps/lifeforge--utility-widgets"], + "@lifeforge/lifeforge--utility-widgets": ["@lifeforge/lifeforge--utility-widgets@workspace:modules/lifeforge--utility-widgets"], - "@lifeforge/lifeforge--wallet": ["@lifeforge/lifeforge--wallet@workspace:apps/lifeforge--wallet"], + "@lifeforge/lifeforge--wallet": ["@lifeforge/lifeforge--wallet@workspace:modules/lifeforge--wallet"], "@lifeforge/log": ["@lifeforge/log@workspace:packages/log"], - "@lifeforge/melvinchia3636--modrinth": ["@lifeforge/melvinchia3636--modrinth@workspace:apps/melvinchia3636--modrinth"], + "@lifeforge/melvinchia3636--modrinth": ["@lifeforge/melvinchia3636--modrinth@workspace:modules/melvinchia3636--modrinth"], - "@lifeforge/server": ["@lifeforge/server@workspace:server"], + "@lifeforge/server": ["@lifeforge/server@workspace:apps/api"], "@lifeforge/server-utils": ["@lifeforge/server-utils@workspace:packages/server-utils"], diff --git a/docker-compose.yaml b/docker-compose.yaml index dee787c84..34d2c2c65 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -35,7 +35,7 @@ services: - PB_HOST=http://0.0.0.0:8090 volumes: - ./database/pb_data:/pb_data - - ./apps:/app/apps + - ./modules:/app/modules - ./locales:/app/locales depends_on: db: @@ -56,7 +56,7 @@ services: expose: - '3636' volumes: - - ./apps:/lifeforge/apps + - ./modules:/lifeforge/modules - ./locales:/lifeforge/locales depends_on: db-init: diff --git a/docker/client/Dockerfile b/docker/client/Dockerfile index 4b0a92ed6..0da3308b1 100644 --- a/docker/client/Dockerfile +++ b/docker/client/Dockerfile @@ -28,7 +28,7 @@ RUN cd /app/shared && bun run build RUN cd /app/packages/server-utils && bun run build # Build client -RUN cd /app/client && bun run build +RUN cd /app/apps/web && bun run build # ============================================ # Production stage - Nginx static server @@ -42,7 +42,7 @@ RUN apk add --no-cache curl COPY docker/client/nginx.conf /etc/nginx/conf.d/default.conf # Copy built client from builder -COPY --from=builder /app/client/dist /usr/share/nginx/html +COPY --from=builder /app/apps/web/dist /usr/share/nginx/html EXPOSE 80 diff --git a/docker/server/Dockerfile b/docker/server/Dockerfile index ddb04e6b9..df2d02689 100644 --- a/docker/server/Dockerfile +++ b/docker/server/Dockerfile @@ -26,15 +26,15 @@ RUN cd /lifeforge/packages/log && bun run build RUN cd /lifeforge/packages/server-utils && bun run build # Build server bundle -RUN cd /lifeforge/server && bun run build +RUN cd /lifeforge/apps/api && bun run build # Create cleaned package.json without workspace deps for production install -RUN bun -e "const pkg = require('./server/package.json'); \ +RUN bun -e "const pkg = require('./apps/api/package.json'); \ delete pkg.dependencies.shared; \ delete pkg.dependencies['@lifeforge/log']; \ delete pkg.dependencies['@lifeforge/server-utils']; \ delete pkg.devDependencies; \ - require('fs').writeFileSync('./server/package.docker.json', JSON.stringify(pkg, null, 2))" + require('fs').writeFileSync('./apps/api/package.docker.json', JSON.stringify(pkg, null, 2))" # ============================================ # Production stage - core server only (no modules) @@ -47,7 +47,7 @@ RUN apk add --no-cache curl WORKDIR /lifeforge # Copy bundled server -COPY --from=builder /lifeforge/server/dist ./server/dist +COPY --from=builder /lifeforge/apps/api/dist ./apps/api/dist # Copy shared package COPY --from=builder /lifeforge/shared/dist ./shared/dist @@ -62,11 +62,11 @@ COPY --from=builder /lifeforge/packages/server-utils/dist ./packages/server-util COPY --from=builder /lifeforge/packages/server-utils/package.json ./packages/server-utils/package.json # Install server dependencies -COPY --from=builder /lifeforge/server/package.docker.json ./package.json +COPY --from=builder /lifeforge/apps/api/package.docker.json ./package.json RUN bun install --production # Create apps directory for module mounting -RUN mkdir -p /lifeforge/apps +RUN mkdir -p /lifeforge/modules # Copy entrypoint COPY docker/server/entrypoint.sh /entrypoint.sh @@ -79,8 +79,8 @@ EXPOSE 3636 HEALTHCHECK --interval=30s --timeout=3s --start-period=10s --retries=3 \ CMD curl -f http://localhost:3636/ || exit 1 -# Modules should be mounted to /lifeforge/apps at runtime: -# docker run -v /path/to/modules:/lifeforge/apps lifeforge-server +# Modules should be mounted to /lifeforge/modules at runtime: +# docker run -v /path/to/modules:/lifeforge/modules lifeforge-server ENTRYPOINT ["/entrypoint.sh"] diff --git a/docker/server/entrypoint.sh b/docker/server/entrypoint.sh index 4e107645c..341c2cb0e 100644 --- a/docker/server/entrypoint.sh +++ b/docker/server/entrypoint.sh @@ -21,13 +21,13 @@ ln -sf /lifeforge/packages/log /lifeforge/node_modules/@lifeforge/log ln -sf /lifeforge/packages/server-utils /lifeforge/node_modules/@lifeforge/server-utils # Check if modules are mounted -if [ -d "/lifeforge/apps" ] && [ "$(ls -A /lifeforge/apps 2>/dev/null)" ]; then - module_count=$(ls -d /lifeforge/apps/*/ 2>/dev/null | wc -l | tr -d ' ') - echo "Found $module_count module(s) mounted at /lifeforge/apps" +if [ -d "/lifeforge/modules" ] && [ "$(ls -A /lifeforge/modules 2>/dev/null)" ]; then + module_count=$(ls -d /lifeforge/modules/*/ 2>/dev/null | wc -l | tr -d ' ') + echo "Found $module_count module(s) mounted at /lifeforge/modules" else - echo "No modules mounted. Mount modules to /lifeforge/apps to enable them." + echo "No modules mounted. Mount modules to /lifeforge/modules to enable them." fi echo "Starting server..." -cd /lifeforge/server +cd /lifeforge/apps/api exec bun dist/server.js diff --git a/docs/package.json b/docs/package.json index fa9472290..e4e4fbba8 100644 --- a/docs/package.json +++ b/docs/package.json @@ -9,7 +9,7 @@ "repository": { "type": "git", "url": "https://github.com/LifeForge-app/lifeforge.git", - "directory": "apps/docs" + "directory": "docs" }, "type": "module", "scripts": { diff --git a/apps/.gitkeep b/modules/.gitkeep similarity index 100% rename from apps/.gitkeep rename to modules/.gitkeep diff --git a/apps/package.json b/modules/package.json similarity index 71% rename from apps/package.json rename to modules/package.json index 747729fb3..df0464166 100644 --- a/apps/package.json +++ b/modules/package.json @@ -1,5 +1,5 @@ { - "name": "@lifeforge/apps", + "name": "@lifeforge/modules", "private": true, "description": "LifeForge modules", "dependencies": {} diff --git a/package.json b/package.json index 645ba756f..91785cfe4 100644 --- a/package.json +++ b/package.json @@ -13,11 +13,11 @@ "url": "https://github.com/LifeForge-app/lifeforge.git" }, "workspaces": [ - "./server", - "./client", + "./apps/api", + "./apps/web", "./docs", "./packages/*", - "./apps/*", + "./modules/*", "./locales/*", "./tools" ], diff --git a/packages/configs/src/resolvers/alias-resolver.ts b/packages/configs/src/resolvers/alias-resolver.ts index f60325709..a4d0c9f95 100644 --- a/packages/configs/src/resolvers/alias-resolver.ts +++ b/packages/configs/src/resolvers/alias-resolver.ts @@ -16,7 +16,7 @@ export function aliasResolver( let rootDir: string - const clientMatch = importer.match(/(.+\/client)/) + const clientMatch = importer.match(/(.+\/(?:client|web))/) if (clientMatch) { const clientDir = clientMatch[1] diff --git a/packages/configs/src/vite/client-vite.config.ts b/packages/configs/src/vite/client-vite.config.ts index c83eddfa9..fb6982ece 100644 --- a/packages/configs/src/vite/client-vite.config.ts +++ b/packages/configs/src/vite/client-vite.config.ts @@ -16,10 +16,10 @@ export function defineClientConfig(dirname: string) { ...Object.entries(SHARED_PACKAGES).map( ([, { aliasRegex, entryPoint }]) => ({ find: aliasRegex, - replacement: path.resolve(dirname, entryPoint) + replacement: path.resolve(dirname, '../', entryPoint) }) ), - { find: '@modules', replacement: path.resolve(dirname, '../apps') }, + { find: '@modules', replacement: path.resolve(dirname, '../../modules') }, { find: '@', replacement: '@', @@ -39,7 +39,7 @@ export function defineClientConfig(dirname: string) { : aliasList.filter(a => !sharedAliases.has(a.find.toString())) return { - envDir: path.resolve(dirname, '../env'), + envDir: path.resolve(dirname, '../../env'), plugins: [ // MillionLint.vite({}), react({ diff --git a/packages/federation/src/loaders/loadModuleConfig.ts b/packages/federation/src/loaders/loadModuleConfig.ts index fd3f133be..c1aaccb22 100644 --- a/packages/federation/src/loaders/loadModuleConfig.ts +++ b/packages/federation/src/loaders/loadModuleConfig.ts @@ -48,11 +48,11 @@ function getDevModeImport( devModeImports: Record Promise<{ default: ModuleConfig }>> ): (() => Promise<{ default: ModuleConfig }>) | null { // Module names are like "lifeforge--music" or "jiahuiiiii--stock" - // The glob path is "../../apps/lifeforge--music/client/manifest.ts" + // The glob path is "../../modules/lifeforge--music/client/manifest.ts" const shortName = moduleName.replace('@lifeforge/', '') for (const [path, importFn] of Object.entries(devModeImports)) { - if (path.includes(`/apps/${shortName}/`)) { + if (path.includes(`/modules/${shortName}/`)) { return importFn as () => Promise<{ default: ModuleConfig }> } } diff --git a/packages/server-utils/src/utils/extractProjectRoot.ts b/packages/server-utils/src/utils/extractProjectRoot.ts index ab9a2faf0..e24c85166 100644 --- a/packages/server-utils/src/utils/extractProjectRoot.ts +++ b/packages/server-utils/src/utils/extractProjectRoot.ts @@ -2,21 +2,21 @@ import path from 'path' /** * Gets the project root directory name from a file path. - * Supports both app modules (/apps/) and core modules (/server/). + * Supports both app modules (/modules/) and core modules (/server/). */ export default function getProjectRootDir( filePath: string ): string | undefined { - // For app modules: /path/to/projectRoot/apps/moduleId/server/... - const appsIndex = filePath.indexOf('/apps/') + // For app modules: /path/to/projectRoot/modules/moduleId/server/... + const appsIndex = filePath.indexOf('/modules/') if (appsIndex !== -1) { const pathBeforeApps = filePath.substring(0, appsIndex) return path.basename(pathBeforeApps) } else { - // For core modules: /path/to/projectRoot/server/src/... - const serverIndex = filePath.indexOf('/server/') + // For core modules: /path/to/projectRoot/apps/api/src/... + const serverIndex = filePath.indexOf('/apps/api/') if (serverIndex !== -1) { const pathBeforeServer = filePath.substring(0, serverIndex) diff --git a/packages/server-utils/src/utils/getCallerModuleId.ts b/packages/server-utils/src/utils/getCallerModuleId.ts index 1847487d3..f86ab4fe8 100644 --- a/packages/server-utils/src/utils/getCallerModuleId.ts +++ b/packages/server-utils/src/utils/getCallerModuleId.ts @@ -23,9 +23,9 @@ export default function getCallerModuleId(): if (!projectRoot) return undefined - // Try external app module: /{projectRoot}/apps/{moduleId}/server/ + // Try external app module: /{projectRoot}/modules/{moduleId}/server/ const appMatch = filePath.match( - new RegExp(`${projectRoot}\\/apps\\/([^/]+)\\/server\\/`) + new RegExp(`${projectRoot}\\/modules\\/([^/]+)\\/server\\/`) ) if (appMatch) @@ -35,10 +35,10 @@ export default function getCallerModuleId(): } // Try core module: - // - /{projectRoot}/server/src/lib/{coreModuleId}/ - // - /{projectRoot}/server/src/core/{coreModuleId}/ + // - /{projectRoot}/apps/api/src/lib/{coreModuleId}/ + // - /{projectRoot}/apps/api/src/core/{coreModuleId}/ const coreMatch = filePath.match( - new RegExp(`${projectRoot}\\/server\\/src\\/(?:lib|core)\\/([^/]+)\\/`) + new RegExp(`${projectRoot}\\/apps\\/api\\/src\\/(?:lib|core)\\/([^/]+)\\/`) ) if (coreMatch) diff --git a/packages/ui/tsup.config.ts b/packages/ui/tsup.config.ts index eea9d8764..47409f39c 100644 --- a/packages/ui/tsup.config.ts +++ b/packages/ui/tsup.config.ts @@ -3,7 +3,7 @@ import { defineConfig } from 'tsup' export default defineConfig({ outDir: 'dist', format: ['esm', 'cjs'], - external: ['../../server/src/core/routes/routes.type'], + external: ['../../apps/api/src/core/routes/routes.type'], minify: true, clean: true }) diff --git a/scripts/commit-all-modules.sh b/scripts/commit-all-modules.sh index 4c7721b64..bd9d81f2a 100755 --- a/scripts/commit-all-modules.sh +++ b/scripts/commit-all-modules.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Script to loop through all modules in apps directory and commit changes +# Script to loop through all modules in modules directory and commit changes # Usage: ./scripts/commit-all-modules.sh "Your commit message here" set -e # Exit on any error @@ -20,7 +20,7 @@ GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color -echo -e "${YELLOW}Starting git operations for all modules in apps directory...${NC}" +echo -e "${YELLOW}Starting git operations for all modules in modules directory...${NC}" echo -e "${YELLOW}Commit message: \"$COMMIT_MESSAGE\"${NC}" # Get the script directory and navigate to project root @@ -34,7 +34,7 @@ successful_modules=0 failed_modules=() # First, count total modules (excluding non-directories) -for module_dir in apps/*/; do +for module_dir in modules/*/; do if [ -d "$module_dir" ]; then ((total_modules++)) fi @@ -43,8 +43,8 @@ done echo -e "${YELLOW}Found $total_modules modules to process${NC}" echo "" -# Loop through each directory in apps/ -for module_dir in apps/*/; do +# Loop through each directory in modules/ +for module_dir in modules/*/; do if [ -d "$module_dir" ]; then module_name=$(basename "$module_dir") diff --git a/scripts/publish-all-modules.sh b/scripts/publish-all-modules.sh index 11dc9a81f..7023f88ca 100644 --- a/scripts/publish-all-modules.sh +++ b/scripts/publish-all-modules.sh @@ -1,23 +1,23 @@ #!/bin/bash -# Publish all modules in the apps/ directory +# Publish all modules in the modules/ directory # Usage: bash scripts/publish-all-modules.sh [--official] SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" ROOT_DIR="$(dirname "$SCRIPT_DIR")" -APPS_DIR="$ROOT_DIR/apps" +MODULES_DIR="$ROOT_DIR/modules" OFFICIAL_FLAG="" if [[ "$1" == "--official" ]]; then OFFICIAL_FLAG="--official" fi -echo "📦 Publishing all modules from apps/..." +echo "📦 Publishing all modules from modules/..." echo "" cd "$ROOT_DIR" -for module_dir in "$APPS_DIR"/*/; do +for module_dir in "$MODULES_DIR"/*/; do module_name=$(basename "$module_dir") # Skip hidden directories and non-module directories diff --git a/server/src/core/constants.ts b/server/src/core/constants.ts deleted file mode 100644 index 732895342..000000000 --- a/server/src/core/constants.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const PORT = process.env.PORT || 3636 - -export const ROOT_DIR = import.meta.dirname.split('server')[0] diff --git a/tools/src/commands/db/functions/schema-generation/listSchemaPaths.ts b/tools/src/commands/db/functions/schema-generation/listSchemaPaths.ts index 0a584dfb1..08b85685c 100644 --- a/tools/src/commands/db/functions/schema-generation/listSchemaPaths.ts +++ b/tools/src/commands/db/functions/schema-generation/listSchemaPaths.ts @@ -9,7 +9,7 @@ import logger from '@/utils/logger' * * Scans two locations for `schema.ts` files: * 1. Core modules: `server/src/lib/**\/schema.ts` (built-in features like users, apiKeys) - * 2. App modules: `apps\**\/server/schema.ts` (installed/created modules) + * 2. App modules: `modules/**\/server/schema.ts` (installed/created modules) * * Returns the parent directory of each schema file, which represents the module root. * For app modules, strips the trailing `/server` to get the actual module directory. @@ -20,14 +20,14 @@ import logger from '@/utils/logger' * // Returns paths like: * // [ * // '/project/server/src/lib/user', - * // '/project/apps/lifeforge--calendar', - * // '/project/apps/melvinchia3636--invoice-maker' + * // '/project/modules/lifeforge--calendar', + * // '/project/modules/melvinchia3636--invoice-maker' * // ] */ export function listSchemaPaths(): string[] { const modulesDirs = [ - './server/src/lib/**/schema.ts', - './apps/**/server/schema.ts' + './apps/api/src/lib/**/schema.ts', + './modules/**/server/schema.ts' ] let allModules: string[] = [] diff --git a/tools/src/commands/db/functions/schema-generation/matchCollectionToModule.ts b/tools/src/commands/db/functions/schema-generation/matchCollectionToModule.ts index 5efaff004..890dcc9d8 100644 --- a/tools/src/commands/db/functions/schema-generation/matchCollectionToModule.ts +++ b/tools/src/commands/db/functions/schema-generation/matchCollectionToModule.ts @@ -24,8 +24,8 @@ import logger from '@/utils/logger' * @returns Matching module directory path, or undefined if no match found * * @example - * // Collection 'events' matches module at '/apps/lifeforge--calendar' - * // Collection 'melvinchia3636___clients' matches '/apps/melvinchia3636--invoice-maker' + * // Collection 'events' matches module at '/modules/lifeforge--calendar' + * // Collection 'melvinchia3636___clients' matches '/modules/melvinchia3636--invoice-maker' */ export async function matchCollectionToModule( modulesWithSchema: string[], @@ -49,7 +49,7 @@ export async function matchCollectionToModule( const matchingModule = modulesWithSchema.find(module => { const { username, moduleName } = parsePackageName( path.basename(module), - path.dirname(module).endsWith('/server/src/lib') + path.dirname(module).endsWith('/apps/api/src/lib') ) const expectedPrefix = username @@ -73,7 +73,7 @@ export async function matchCollectionToModule( if (targetModule) { const schemaPath = path.resolve( ROOT_DIR, - 'apps', + 'modules', path.basename(targetModule), 'server', 'schema.ts' diff --git a/tools/src/commands/db/utils/constants.ts b/tools/src/commands/db/utils/constants.ts index 7152199b0..19316e1a6 100644 --- a/tools/src/commands/db/utils/constants.ts +++ b/tools/src/commands/db/utils/constants.ts @@ -18,6 +18,6 @@ export const PRETTIER_OPTIONS = { * Paths to scan for schema files */ export const SCHEMA_PATTERNS = [ - './server/src/lib/**/schema.ts', - './apps/**/server/schema.ts' + './apps/api/src/lib/**/schema.ts', + './modules/**/server/schema.ts' ] diff --git a/tools/src/commands/db/utils/file-utils.ts b/tools/src/commands/db/utils/file-utils.ts index 11ef5d362..88ace9cfc 100644 --- a/tools/src/commands/db/utils/file-utils.ts +++ b/tools/src/commands/db/utils/file-utils.ts @@ -49,8 +49,8 @@ function getModuleName(schemaPath: string): string | null { */ export function getSchemaFiles(targetModule?: string): string[] { const allSchemas = [ - ...fs.globSync(path.resolve(ROOT_DIR, './server/src/lib/**/schema.ts')), - ...fs.globSync(path.resolve(ROOT_DIR, './apps/**/server/schema.ts')) + ...fs.globSync(path.resolve(ROOT_DIR, './apps/api/src/lib/**/schema.ts')), + ...fs.globSync(path.resolve(ROOT_DIR, './modules/**/server/schema.ts')) ] const filteredSchemas = targetModule diff --git a/tools/src/commands/dev/config/commands.ts b/tools/src/commands/dev/config/commands.ts index b0a54af9e..e6d2dd96f 100644 --- a/tools/src/commands/dev/config/commands.ts +++ b/tools/src/commands/dev/config/commands.ts @@ -50,7 +50,7 @@ export const SERVICE_COMMANDS: Record = { server: { command: async () => { const killedProcess = killExistingProcess( - 'lifeforge/server/node_modules/.bin/tsx' + 'lifeforge/apps/api/node_modules/.bin/tsx' ) if (killedProcess) { @@ -66,7 +66,7 @@ export const SERVICE_COMMANDS: Record = { return 'bun run dev' }, - cwd: 'server' + cwd: 'apps/api' }, docs: { command: () => { @@ -78,14 +78,15 @@ export const SERVICE_COMMANDS: Record = { }, client: { command: () => { - killExistingProcess('lifeforge/client/node_modules/.bin/vite') + killExistingProcess('lifeforge/apps/web/node_modules/.bin/vite') if (!fs.existsSync('packages/ui/dist')) { executeCommand('bun forge build ui') } - return 'cd client && bun run dev' - } + return 'bun run dev' + }, + cwd: 'apps/web' }, ui: { command: () => { diff --git a/tools/src/commands/locales/handlers/installLocaleHandler.ts b/tools/src/commands/locales/handlers/installLocaleHandler.ts index e64329108..51314c757 100644 --- a/tools/src/commands/locales/handlers/installLocaleHandler.ts +++ b/tools/src/commands/locales/handlers/installLocaleHandler.ts @@ -32,7 +32,7 @@ export async function installLocaleHandler(langCode: string): Promise { logger.info(`Installing ${chalk.blue(fullName)}...`) try { - installPackage(fullName, targetDir) + installPackage(fullName, targetDir, 'locales') initGitRepository(targetDir) await setFirstLangInDB(shortName) diff --git a/tools/src/commands/locales/handlers/upgradeLocalesHandler.ts b/tools/src/commands/locales/handlers/upgradeLocalesHandler.ts index 7e4d6ef06..2eb218d11 100644 --- a/tools/src/commands/locales/handlers/upgradeLocalesHandler.ts +++ b/tools/src/commands/locales/handlers/upgradeLocalesHandler.ts @@ -26,7 +26,8 @@ export async function upgradeLocaleHandler(langCode?: string): Promise { try { installPackage( upgrade.name, - normalizePackage(upgrade.name, 'locale').targetDir + normalizePackage(upgrade.name, 'locale').targetDir, + 'locales' ) logger.success(`Upgraded ${chalk.blue(upgrade.name)}`) diff --git a/tools/src/commands/modules/functions/listModules.ts b/tools/src/commands/modules/functions/listModules.ts index 9a1c3a445..e13f4b8a6 100644 --- a/tools/src/commands/modules/functions/listModules.ts +++ b/tools/src/commands/modules/functions/listModules.ts @@ -24,7 +24,7 @@ interface ModuleBasicInfo { export default function listModules( exitIfNoModule = false ): Record { - const appsPackageJson = readPackageJson('apps') + const appsPackageJson = readPackageJson('modules') const allModules = Object.keys(appsPackageJson.dependencies ?? {}) .filter(dep => dep.startsWith('@lifeforge/')) diff --git a/tools/src/commands/modules/functions/templates/copy-template.ts b/tools/src/commands/modules/functions/templates/copy-template.ts index ce3032b47..338139fa4 100644 --- a/tools/src/commands/modules/functions/templates/copy-template.ts +++ b/tools/src/commands/modules/functions/templates/copy-template.ts @@ -76,7 +76,7 @@ export function renameTsConfigFile(moduleDir: string): void { export function copyTemplateFiles(moduleMetadata: ModuleMetadata): void { const templateDir = `${ROOT_DIR}/tools/src/templates/${moduleMetadata.moduleType}` - const destinationDir = `${ROOT_DIR}/apps/${_.camelCase(moduleMetadata.moduleName.en)}` + const destinationDir = `${ROOT_DIR}/modules/${_.camelCase(moduleMetadata.moduleName.en)}` fs.mkdirSync(destinationDir) diff --git a/tools/src/commands/modules/handlers/createModuleHandler.ts b/tools/src/commands/modules/handlers/createModuleHandler.ts index 33a655b8c..10d9412fd 100644 --- a/tools/src/commands/modules/handlers/createModuleHandler.ts +++ b/tools/src/commands/modules/handlers/createModuleHandler.ts @@ -29,13 +29,13 @@ export async function createModuleHandler(moduleName?: string): Promise { // } // const camelizedModuleName = _.camelCase(moduleMetadata.moduleName.en) // copyTemplateFiles(moduleMetadata) - // initializeGitRepository(`${process.cwd()}/apps/${camelizedModuleName}`) - // installDependencies(`${process.cwd()}/apps`) + // initializeGitRepository(`${process.cwd()}/modules/${camelizedModuleName}`) + // installDependencies(`${process.cwd()}/modules`) // // Regenerate registries to include the new module // generateModuleRegistries() // if ( // fs.existsSync( - // `${process.cwd()}/apps/${camelizedModuleName}/server/schema.ts` + // `${process.cwd()}/modules/${camelizedModuleName}/server/schema.ts` // ) // ) { // runDatabaseMigrations() diff --git a/tools/src/commands/modules/handlers/installModuleHandler.ts b/tools/src/commands/modules/handlers/installModuleHandler.ts index 19bd0c45e..a3d17ec29 100644 --- a/tools/src/commands/modules/handlers/installModuleHandler.ts +++ b/tools/src/commands/modules/handlers/installModuleHandler.ts @@ -23,7 +23,7 @@ interface InstallOptions { * For each module: * 1. Validates it doesn't already exist locally * 2. Checks it exists in the registry - * 3. Downloads and extracts to apps/ + * 3. Downloads and extracts to modules/ * 4. Initializes git repository (if --dev) * 5. Builds both dist and dist-docker bundles * 6. Removes source code (unless --dev is passed) @@ -51,7 +51,7 @@ export async function installModuleHandler( } if (fs.existsSync(targetDir)) { - logger.error(`Module already exists at apps/${shortName}`) + logger.error(`Module already exists at modules/${shortName}`) continue } @@ -62,7 +62,7 @@ export async function installModuleHandler( logger.debug(`Installing ${chalk.blue(fullName)}...`) - installPackage(fullName, targetDir, 'apps') + installPackage(fullName, targetDir, 'modules') // Restore gitignore to .gitignore (npm excludes .gitignore during publish) const gitignorePath = path.join(targetDir, 'gitignore') diff --git a/tools/src/commands/modules/handlers/publishModuleHandler.ts b/tools/src/commands/modules/handlers/publishModuleHandler.ts index 51e042752..342ed6ec9 100644 --- a/tools/src/commands/modules/handlers/publishModuleHandler.ts +++ b/tools/src/commands/modules/handlers/publishModuleHandler.ts @@ -57,10 +57,10 @@ function restoreGitignoreAfterPublish(modulePath: string): void { * 7. Reverts version on failure */ export async function publishModuleHandler(moduleName: string): Promise { - const modulePath = path.join(ROOT_DIR, 'apps', moduleName) + const modulePath = path.join(ROOT_DIR, 'modules', moduleName) if (!fs.existsSync(modulePath)) { - logger.error(`Module ${chalk.blue(moduleName)} not found in apps/`) + logger.error(`Module ${chalk.blue(moduleName)} not found in modules/`) process.exit(1) } diff --git a/tools/src/commands/modules/handlers/uninstallModuleHandler.ts b/tools/src/commands/modules/handlers/uninstallModuleHandler.ts index 7a990a886..0196e0716 100644 --- a/tools/src/commands/modules/handlers/uninstallModuleHandler.ts +++ b/tools/src/commands/modules/handlers/uninstallModuleHandler.ts @@ -15,7 +15,7 @@ import { findPackageName, removeDependency } from '@/utils/packageJson' * For each module: * 1. Validates it exists in package.json * 2. Removes symlink from node_modules - * 3. Removes module directory from apps/ + * 3. Removes module directory from modules/ * 4. Removes from package.json dependencies * * After uninstallation: @@ -30,16 +30,16 @@ export async function uninstallModuleHandler( for (const moduleName of moduleNames) { const { targetDir, fullName } = normalizePackage(moduleName) - if (!findPackageName(fullName, 'apps')) { + if (!findPackageName(fullName, 'modules')) { logger.error( - `Module ${chalk.blue(fullName)} not found in apps/package.json` + `Module ${chalk.blue(fullName)} not found in modules/package.json` ) continue } logger.debug(`Uninstalling ${chalk.blue(fullName)}...`) - removeDependency(fullName, 'apps') + removeDependency(fullName, 'modules') const symlinkPath = path.join(ROOT_DIR, 'node_modules', fullName) diff --git a/tools/src/commands/modules/handlers/upgradeModuleHandler.ts b/tools/src/commands/modules/handlers/upgradeModuleHandler.ts index faa2f3d71..f77029df4 100644 --- a/tools/src/commands/modules/handlers/upgradeModuleHandler.ts +++ b/tools/src/commands/modules/handlers/upgradeModuleHandler.ts @@ -107,7 +107,7 @@ export async function upgradeModuleHandler(moduleName?: string): Promise { if (!mod) { logger.error( - `Module ${chalk.blue(moduleName)} not found in apps/package.json` + `Module ${chalk.blue(moduleName)} not found in modules/package.json` ) process.exit(1) } diff --git a/tools/src/commands/modules/index.ts b/tools/src/commands/modules/index.ts index da1c87b22..8c84e3180 100644 --- a/tools/src/commands/modules/index.ts +++ b/tools/src/commands/modules/index.ts @@ -74,7 +74,7 @@ export default function setup(program: Command): void { command .command('publish') .description('Publish a LifeFordge module to the registry') - .argument('', 'Module to publish from apps/') + .argument('', 'Module to publish from modules/') .option( '--official', 'Publish as official module (requires maintainer access)' diff --git a/tools/src/utils/commands.ts b/tools/src/utils/commands.ts index 692235f78..c549c543b 100644 --- a/tools/src/utils/commands.ts +++ b/tools/src/utils/commands.ts @@ -105,12 +105,12 @@ export function bunInstall() { * * @param fullName - The full package name (e.g., `@lifeforge/lifeforge--calendar`) * @param targetDir - The absolute path to copy the package to - * @param target - The package.json target to add the dependency to (defaults to 'apps') + * @param target - The package.json target to add the dependency to (defaults to 'modules') */ export function installPackage( fullName: string, targetDir: string, - target: 'apps' | 'locales' = 'apps' + target: 'modules' | 'locales' = 'modules' ) { if (fs.existsSync(targetDir)) { fs.rmSync(targetDir, { recursive: true, force: true }) diff --git a/tools/src/utils/normalizePackage.ts b/tools/src/utils/normalizePackage.ts index 9c7217eb6..2abbbff38 100644 --- a/tools/src/utils/normalizePackage.ts +++ b/tools/src/utils/normalizePackage.ts @@ -7,7 +7,7 @@ type PackageType = 'module' | 'locale' const TYPE_CONFIG = { module: { - dir: 'apps' + dir: 'modules' }, locale: { dir: 'locales' @@ -30,7 +30,7 @@ const TYPE_CONFIG = { * @example * // Module example * normalizePackage('movies') - * // { fullName: '@lifeforge/movies', shortName: 'movies', targetDir: '/path/to/apps/movies' } + * // { fullName: '@lifeforge/movies', shortName: 'movies', targetDir: '/path/to/modules/movies' } * * @example * // Locale example diff --git a/tools/src/utils/packageJson.ts b/tools/src/utils/packageJson.ts index 3035ce281..3b2d85cf7 100644 --- a/tools/src/utils/packageJson.ts +++ b/tools/src/utils/packageJson.ts @@ -12,10 +12,10 @@ interface PackageJson { [key: string]: unknown } -export type PackageJsonTarget = 'apps' | 'locales' | 'root' +export type PackageJsonTarget = 'modules' | 'locales' | 'root' const PACKAGE_JSON_PATHS: Record = { - apps: path.join(ROOT_DIR, 'apps', 'package.json'), + modules: path.join(ROOT_DIR, 'modules', 'package.json'), locales: path.join(ROOT_DIR, 'locales', 'package.json'), root: path.join(ROOT_DIR, 'package.json') } @@ -24,8 +24,8 @@ const DEFAULT_PACKAGE_JSON: Record< Exclude, PackageJson > = { - apps: { - name: '@lifeforge/apps', + modules: { + name: '@lifeforge/modules', private: true, description: 'LifeForge modules', dependencies: {} @@ -103,7 +103,7 @@ export function writePackageJson( */ export function addDependency( packageName: string, - target: PackageJsonTarget = 'apps', + target: PackageJsonTarget = 'modules', version = 'workspace:*' ): void { logger.debug(`Adding dependency ${packageName} to ${target}`) @@ -126,7 +126,7 @@ export function addDependency( */ export function removeDependency( packageName: string, - target: PackageJsonTarget = 'apps' + target: PackageJsonTarget = 'modules' ): void { logger.debug(`Removing dependency ${packageName} from ${target}`) @@ -145,7 +145,7 @@ export function removeDependency( */ export function findPackageName( name: string, - target: PackageJsonTarget = 'apps' + target: PackageJsonTarget = 'modules' ): string | null { logger.debug(`Finding package ${name} in ${target}`) @@ -171,7 +171,7 @@ export function findPackageName( */ export function hasDependency( packageName: string, - target: PackageJsonTarget = 'apps' + target: PackageJsonTarget = 'modules' ): boolean { const packageJson = readPackageJson(target) @@ -182,7 +182,7 @@ export function hasDependency( * Gets all dependencies from the specified package.json. */ export function getDependencies( - target: PackageJsonTarget = 'apps' + target: PackageJsonTarget = 'modules' ): Record { const packageJson = readPackageJson(target) diff --git a/tsconfig.eslint.json b/tsconfig.eslint.json index 645012a37..531dd274e 100644 --- a/tsconfig.eslint.json +++ b/tsconfig.eslint.json @@ -1,10 +1,10 @@ { "extends": "./tsconfig.json", "include": [ - "apps/**/*", + "modules/**/*", "packages/**/*", - "client/**/*", - "server/**/*", + "apps/web/**/*", + "apps/api/**/*", "docs/**/*", "scripts/**/*", "tools/**/*"