{ "$schema": "./schemas/app-config-schema.json", "app": { "name": "CodeForge", "title": "CodeForge - Low-Code Development Platform", "description": "Comprehensive low-code platform for rapid application development", "version": "6.0.0", "themeColor": "#8b5cf6" }, "branding": { "fonts": { "body": { "family": "IBM Plex Sans", "weights": [400, 500, 600], "url": "https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600&display=swap" }, "heading": { "family": "JetBrains Mono", "weights": [400, 500, 700], "url": "https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;700&display=swap" }, "code": { "family": "JetBrains Mono", "weights": [400, 500, 700], "url": "https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;700&display=swap" } }, "favicon": { "default": "/favicon.ico", "svg": "/favicon.svg", "appleTouchIcon": "/apple-touch-icon.png", "sizes": [16, 32, 192, 512] } }, "server": { "development": { "host": "0.0.0.0", "port": 5000, "strictPort": false }, "production": { "host": "0.0.0.0", "port": 80, "strictPort": false, "basePath": "./" } }, "build": { "outDir": "dist", "emptyOutDir": true, "sourcemap": false, "minify": "terser", "chunkSizeWarningLimit": 1000, "terserOptions": { "compress": { "drop_console": true, "drop_debugger": true, "pure_funcs": ["console.log", "console.time", "console.timeEnd"] } }, "chunks": { "react-vendor": ["react", "react-dom"], "ui-core": [ "@radix-ui/react-dialog", "@radix-ui/react-dropdown-menu", "@radix-ui/react-tabs", "@radix-ui/react-select", "@radix-ui/react-popover" ], "ui-extended": [ "@radix-ui/react-accordion", "@radix-ui/react-alert-dialog", "@radix-ui/react-context-menu", "@radix-ui/react-hover-card", "@radix-ui/react-menubar", "@radix-ui/react-navigation-menu", "@radix-ui/react-scroll-area" ], "form-components": ["react-hook-form", "@hookform/resolvers", "zod"], "code-editor": ["@monaco-editor/react"], "data-viz": ["d3", "recharts"], "workflow": ["reactflow"], "icons": ["@phosphor-icons/react", "lucide-react"], "utils": ["clsx", "tailwind-merge", "date-fns", "uuid"] }, "optimizeDeps": { "include": [ "react", "react-dom", "@radix-ui/react-dialog", "@radix-ui/react-tabs" ], "exclude": ["@github/spark"] } }, "features": { "useRouter": false, "routerBasedNavigation": false, "preloadCriticalComponents": true, "bundleMetrics": true, "enablePreloading": true }, "performance": { "preloadDelay": 100, "seedDataTimeout": 100, "logLevel": "info" }, "docker": { "baseImage": "node:lts-alpine", "workdir": "/app", "port": 80, "healthCheck": { "enabled": true, "endpoint": "/health", "interval": "30s", "timeout": "3s", "retries": 3, "startPeriod": "5s" } }, "nginx": { "enabled": false, "port": 80, "serverName": "_", "rootDir": "/usr/share/nginx/html", "gzip": { "enabled": true, "minLength": 1024, "types": [ "text/plain", "text/css", "text/xml", "text/javascript", "application/javascript", "application/json", "application/xml+rss" ] }, "cache": { "staticAssets": { "extensions": ["js", "css", "png", "jpg", "jpeg", "gif", "ico", "svg", "woff", "woff2", "ttf", "eot"], "expires": "1y", "cacheControl": "public, immutable" } } }, "pwa": { "enabled": true, "registerType": "autoUpdate", "workbox": { "globPatterns": ["**/*.{js,css,html,ico,png,svg,woff,woff2}"], "runtimeCaching": [ { "urlPattern": "/api/.*", "handler": "NetworkFirst" }, { "urlPattern": "/.*", "handler": "NetworkFirst" } ] } }, "ci": { "github": { "enabled": true, "workflows": ["build", "test", "deploy"], "nodeVersion": "20.x" }, "gitlab": { "enabled": true, "stages": ["build", "test", "deploy"], "dockerImage": "node:20-alpine" }, "jenkins": { "enabled": true, "agent": "docker", "nodeVersion": "20" }, "circleci": { "enabled": true, "dockerImage": "cimg/node:20.11", "workflowName": "build-test-deploy" } }, "atomicComponents": { "maxLOC": 150, "categories": { "atoms": [ "AppLogo", "StatusIcon", "ErrorBadge", "LoadingState", "EmptyState", "DataList", "StatCard", "ActionButton" ], "molecules": [ "SaveIndicator", "ToolbarButton", "SearchBar", "DataCard", "FormField", "TabNavigation", "NotificationBadge", "ProgressIndicator", "PreloadIndicator", "LoadingFallback" ], "organisms": [ "AppHeader", "NavigationMenu", "PageHeader", "ErrorBoundary" ] } }, "theme": { "configFile": "./theme.json", "cssVariables": true, "darkMode": ["selector", "[data-appearance=\"dark\"]"] }, "testing": { "e2e": { "framework": "playwright", "browsers": ["chromium", "firefox", "webkit"], "baseURL": "http://localhost:5000", "timeout": 30000, "retries": 2 }, "unit": { "framework": "vitest", "coverage": { "enabled": true, "threshold": 80 } } }, "deployment": { "platforms": { "caprover": { "enabled": true, "port": 80, "healthCheck": "/health" }, "heroku": { "enabled": false, "buildpack": "heroku/nodejs" }, "vercel": { "enabled": false, "framework": "vite" }, "netlify": { "enabled": false, "publish": "dist" } } }, "paths": { "src": "./src", "components": "./src/components", "pages": "./src/config/pages", "config": "./src/config", "public": "./public", "dist": "./dist" } }