mirror of
https://github.com/johndoe6345789/low-code-react-app-b.git
synced 2026-04-25 06:04:54 +00:00
554 lines
14 KiB
JSON
554 lines
14 KiB
JSON
{
|
|
"project-files": [
|
|
{
|
|
"id": "file-1",
|
|
"name": "page.tsx",
|
|
"path": "/src/app/page.tsx",
|
|
"content": "'use client'\n\nimport { ThemeProvider } from '@mui/material/styles'\nimport CssBaseline from '@mui/material/CssBaseline'\nimport { theme } from '@/theme'\nimport { Box, Typography, Button } from '@mui/material'\n\nexport default function Home() {\n return (\n <ThemeProvider theme={theme}>\n <CssBaseline />\n <Box sx={{ p: 4 }}>\n <Typography variant=\"h3\" gutterBottom>\n Welcome to Your App\n </Typography>\n <Button variant=\"contained\" color=\"primary\">\n Get Started\n </Button>\n </Box>\n </ThemeProvider>\n )\n}",
|
|
"language": "typescript"
|
|
},
|
|
{
|
|
"id": "file-2",
|
|
"name": "layout.tsx",
|
|
"path": "/src/app/layout.tsx",
|
|
"content": "export const metadata = {\n title: 'My Next.js App',\n description: 'Generated with CodeForge',\n}\n\nexport default function RootLayout({\n children,\n}: {\n children: React.ReactNode\n}) {\n return (\n <html lang=\"en\">\n <body>{children}</body>\n </html>\n )\n}",
|
|
"language": "typescript"
|
|
}
|
|
],
|
|
"project-models": [
|
|
{
|
|
"id": "model-1",
|
|
"name": "User",
|
|
"fields": [
|
|
{
|
|
"id": "field-1",
|
|
"name": "id",
|
|
"type": "String",
|
|
"isRequired": true,
|
|
"isUnique": true,
|
|
"isArray": false,
|
|
"defaultValue": "uuid()"
|
|
},
|
|
{
|
|
"id": "field-2",
|
|
"name": "email",
|
|
"type": "String",
|
|
"isRequired": true,
|
|
"isUnique": true,
|
|
"isArray": false
|
|
},
|
|
{
|
|
"id": "field-3",
|
|
"name": "name",
|
|
"type": "String",
|
|
"isRequired": false,
|
|
"isUnique": false,
|
|
"isArray": false
|
|
},
|
|
{
|
|
"id": "field-4",
|
|
"name": "createdAt",
|
|
"type": "DateTime",
|
|
"isRequired": true,
|
|
"isUnique": false,
|
|
"isArray": false,
|
|
"defaultValue": "now()"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "model-2",
|
|
"name": "Post",
|
|
"fields": [
|
|
{
|
|
"id": "field-5",
|
|
"name": "id",
|
|
"type": "String",
|
|
"isRequired": true,
|
|
"isUnique": true,
|
|
"isArray": false,
|
|
"defaultValue": "uuid()"
|
|
},
|
|
{
|
|
"id": "field-6",
|
|
"name": "title",
|
|
"type": "String",
|
|
"isRequired": true,
|
|
"isUnique": false,
|
|
"isArray": false
|
|
},
|
|
{
|
|
"id": "field-7",
|
|
"name": "content",
|
|
"type": "String",
|
|
"isRequired": false,
|
|
"isUnique": false,
|
|
"isArray": false
|
|
},
|
|
{
|
|
"id": "field-8",
|
|
"name": "published",
|
|
"type": "Boolean",
|
|
"isRequired": true,
|
|
"isUnique": false,
|
|
"isArray": false,
|
|
"defaultValue": "false"
|
|
},
|
|
{
|
|
"id": "field-9",
|
|
"name": "authorId",
|
|
"type": "String",
|
|
"isRequired": true,
|
|
"isUnique": false,
|
|
"isArray": false,
|
|
"relation": "User"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"project-components": [
|
|
{
|
|
"id": "comp-1",
|
|
"type": "Button",
|
|
"name": "PrimaryButton",
|
|
"props": {
|
|
"variant": "contained",
|
|
"color": "primary"
|
|
},
|
|
"children": []
|
|
},
|
|
{
|
|
"id": "comp-2",
|
|
"type": "Card",
|
|
"name": "UserCard",
|
|
"props": {
|
|
"elevation": 2
|
|
},
|
|
"children": [
|
|
{
|
|
"id": "comp-3",
|
|
"type": "CardContent",
|
|
"name": "CardContent",
|
|
"props": {},
|
|
"children": []
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"project-workflows": [
|
|
{
|
|
"id": "workflow-1",
|
|
"name": "User Registration Flow",
|
|
"description": "Complete user registration and onboarding workflow",
|
|
"nodes": [
|
|
{
|
|
"id": "node-1",
|
|
"type": "trigger",
|
|
"name": "Form Submit",
|
|
"position": { "x": 100, "y": 100 },
|
|
"data": {
|
|
"label": "Registration Form Submitted"
|
|
},
|
|
"config": {
|
|
"triggerType": "event"
|
|
}
|
|
},
|
|
{
|
|
"id": "node-2",
|
|
"type": "action",
|
|
"name": "Validate Input",
|
|
"position": { "x": 300, "y": 100 },
|
|
"data": {
|
|
"label": "Validate User Data"
|
|
}
|
|
},
|
|
{
|
|
"id": "node-3",
|
|
"type": "database",
|
|
"name": "Create User",
|
|
"position": { "x": 500, "y": 100 },
|
|
"data": {
|
|
"label": "Insert User Record"
|
|
},
|
|
"config": {
|
|
"databaseQuery": "INSERT INTO users"
|
|
}
|
|
}
|
|
],
|
|
"connections": [
|
|
{
|
|
"id": "conn-1",
|
|
"source": "node-1",
|
|
"target": "node-2"
|
|
},
|
|
{
|
|
"id": "conn-2",
|
|
"source": "node-2",
|
|
"target": "node-3"
|
|
}
|
|
],
|
|
"isActive": true,
|
|
"status": "success",
|
|
"lastRun": 1704153600000,
|
|
"createdAt": 1704067200000,
|
|
"updatedAt": 1704067200000
|
|
},
|
|
{
|
|
"id": "workflow-2",
|
|
"name": "Email Notification Pipeline",
|
|
"description": "Send automated email notifications to users",
|
|
"nodes": [
|
|
{
|
|
"id": "node-4",
|
|
"type": "trigger",
|
|
"name": "Schedule Trigger",
|
|
"position": { "x": 100, "y": 100 },
|
|
"data": {
|
|
"label": "Daily at 9 AM"
|
|
},
|
|
"config": {
|
|
"triggerType": "schedule",
|
|
"scheduleExpression": "0 9 * * *"
|
|
}
|
|
},
|
|
{
|
|
"id": "node-5",
|
|
"type": "database",
|
|
"name": "Fetch Users",
|
|
"position": { "x": 300, "y": 100 },
|
|
"data": {
|
|
"label": "Get Active Users"
|
|
},
|
|
"config": {
|
|
"databaseQuery": "SELECT * FROM users WHERE active = true"
|
|
}
|
|
},
|
|
{
|
|
"id": "node-6",
|
|
"type": "lambda",
|
|
"name": "Send Emails",
|
|
"position": { "x": 500, "y": 100 },
|
|
"data": {
|
|
"label": "Process Email Queue"
|
|
},
|
|
"config": {
|
|
"lambdaCode": "// Send email logic"
|
|
}
|
|
}
|
|
],
|
|
"connections": [
|
|
{
|
|
"id": "conn-3",
|
|
"source": "node-4",
|
|
"target": "node-5"
|
|
},
|
|
{
|
|
"id": "conn-4",
|
|
"source": "node-5",
|
|
"target": "node-6"
|
|
}
|
|
],
|
|
"isActive": true,
|
|
"status": "running",
|
|
"lastRun": 1704240000000,
|
|
"createdAt": 1704067200000,
|
|
"updatedAt": 1704240000000
|
|
},
|
|
{
|
|
"id": "workflow-3",
|
|
"name": "Payment Processing",
|
|
"description": "Handle payment transactions and update order status",
|
|
"nodes": [
|
|
{
|
|
"id": "node-7",
|
|
"type": "trigger",
|
|
"name": "Payment Event",
|
|
"position": { "x": 100, "y": 100 },
|
|
"data": {
|
|
"label": "Payment Received"
|
|
},
|
|
"config": {
|
|
"triggerType": "webhook"
|
|
}
|
|
},
|
|
{
|
|
"id": "node-8",
|
|
"type": "api",
|
|
"name": "Validate Payment",
|
|
"position": { "x": 300, "y": 100 },
|
|
"data": {
|
|
"label": "Check Payment Gateway"
|
|
},
|
|
"config": {
|
|
"httpMethod": "POST",
|
|
"apiEndpoint": "https://api.stripe.com/v1/charges"
|
|
}
|
|
},
|
|
{
|
|
"id": "node-9",
|
|
"type": "condition",
|
|
"name": "Payment Valid?",
|
|
"position": { "x": 500, "y": 100 },
|
|
"data": {
|
|
"label": "Check Status"
|
|
},
|
|
"config": {
|
|
"condition": "payment.status === 'succeeded'"
|
|
}
|
|
},
|
|
{
|
|
"id": "node-10",
|
|
"type": "database",
|
|
"name": "Update Order",
|
|
"position": { "x": 700, "y": 100 },
|
|
"data": {
|
|
"label": "Mark as Paid"
|
|
},
|
|
"config": {
|
|
"databaseQuery": "UPDATE orders SET status = 'paid'"
|
|
}
|
|
}
|
|
],
|
|
"connections": [
|
|
{
|
|
"id": "conn-5",
|
|
"source": "node-7",
|
|
"target": "node-8"
|
|
},
|
|
{
|
|
"id": "conn-6",
|
|
"source": "node-8",
|
|
"target": "node-9"
|
|
},
|
|
{
|
|
"id": "conn-7",
|
|
"source": "node-9",
|
|
"target": "node-10"
|
|
}
|
|
],
|
|
"isActive": true,
|
|
"status": "failed",
|
|
"lastRun": 1704226800000,
|
|
"createdAt": 1704067200000,
|
|
"updatedAt": 1704226800000
|
|
},
|
|
{
|
|
"id": "workflow-4",
|
|
"name": "Data Backup Task",
|
|
"description": "Automated database backup and archival",
|
|
"nodes": [
|
|
{
|
|
"id": "node-11",
|
|
"type": "trigger",
|
|
"name": "Nightly Backup",
|
|
"position": { "x": 100, "y": 100 },
|
|
"data": {
|
|
"label": "Every Night at 2 AM"
|
|
},
|
|
"config": {
|
|
"triggerType": "schedule",
|
|
"scheduleExpression": "0 2 * * *"
|
|
}
|
|
},
|
|
{
|
|
"id": "node-12",
|
|
"type": "database",
|
|
"name": "Export Data",
|
|
"position": { "x": 300, "y": 100 },
|
|
"data": {
|
|
"label": "Create Backup"
|
|
},
|
|
"config": {
|
|
"databaseQuery": "pg_dump database"
|
|
}
|
|
},
|
|
{
|
|
"id": "node-13",
|
|
"type": "lambda",
|
|
"name": "Upload to S3",
|
|
"position": { "x": 500, "y": 100 },
|
|
"data": {
|
|
"label": "Store Backup"
|
|
},
|
|
"config": {
|
|
"lambdaCode": "// S3 upload logic"
|
|
}
|
|
}
|
|
],
|
|
"connections": [
|
|
{
|
|
"id": "conn-8",
|
|
"source": "node-11",
|
|
"target": "node-12"
|
|
},
|
|
{
|
|
"id": "conn-9",
|
|
"source": "node-12",
|
|
"target": "node-13"
|
|
}
|
|
],
|
|
"isActive": false,
|
|
"status": "success",
|
|
"lastRun": 1704171600000,
|
|
"createdAt": 1704067200000,
|
|
"updatedAt": 1704171600000
|
|
}
|
|
],
|
|
"project-lambdas": [
|
|
{
|
|
"id": "lambda-1",
|
|
"name": "processUserData",
|
|
"description": "Process and transform user data",
|
|
"code": "export async function handler(event) {\n const { userId, data } = event;\n // Process user data\n return {\n statusCode: 200,\n body: JSON.stringify({ success: true })\n };\n}",
|
|
"language": "typescript",
|
|
"runtime": "nodejs20.x",
|
|
"handler": "index.handler",
|
|
"timeout": 30,
|
|
"memory": 256,
|
|
"environment": {
|
|
"NODE_ENV": "production"
|
|
},
|
|
"triggers": [
|
|
{
|
|
"id": "trigger-1",
|
|
"type": "http",
|
|
"config": {
|
|
"method": "POST",
|
|
"path": "/api/process-user"
|
|
}
|
|
}
|
|
],
|
|
"createdAt": 1704067200000,
|
|
"updatedAt": 1704067200000
|
|
}
|
|
],
|
|
"project-playwright-tests": [
|
|
{
|
|
"id": "test-1",
|
|
"name": "User Login Flow",
|
|
"description": "Test user authentication flow",
|
|
"pageUrl": "/login",
|
|
"steps": [
|
|
{
|
|
"id": "step-1",
|
|
"action": "navigate",
|
|
"value": "/login"
|
|
},
|
|
{
|
|
"id": "step-2",
|
|
"action": "fill",
|
|
"selector": "#email",
|
|
"value": "test@example.com"
|
|
},
|
|
{
|
|
"id": "step-3",
|
|
"action": "fill",
|
|
"selector": "#password",
|
|
"value": "password123"
|
|
},
|
|
{
|
|
"id": "step-4",
|
|
"action": "click",
|
|
"selector": "button[type='submit']"
|
|
},
|
|
{
|
|
"id": "step-5",
|
|
"action": "expect",
|
|
"selector": ".dashboard",
|
|
"assertion": "toBeVisible"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"project-storybook-stories": [
|
|
{
|
|
"id": "story-1",
|
|
"componentName": "Button",
|
|
"storyName": "Primary",
|
|
"args": {
|
|
"variant": "primary",
|
|
"children": "Click me",
|
|
"disabled": false
|
|
},
|
|
"description": "Primary button variant",
|
|
"category": "Components"
|
|
},
|
|
{
|
|
"id": "story-2",
|
|
"componentName": "Card",
|
|
"storyName": "Default",
|
|
"args": {
|
|
"title": "Card Title",
|
|
"description": "Card description",
|
|
"elevation": 2
|
|
},
|
|
"description": "Default card component",
|
|
"category": "Layout"
|
|
}
|
|
],
|
|
"project-unit-tests": [
|
|
{
|
|
"id": "test-1",
|
|
"name": "Button Component Tests",
|
|
"description": "Unit tests for Button component",
|
|
"testType": "component",
|
|
"targetFile": "/src/components/Button.tsx",
|
|
"testCases": [
|
|
{
|
|
"id": "case-1",
|
|
"description": "renders with correct text",
|
|
"assertions": [
|
|
"expect(screen.getByText('Click me')).toBeInTheDocument()"
|
|
]
|
|
},
|
|
{
|
|
"id": "case-2",
|
|
"description": "calls onClick handler when clicked",
|
|
"assertions": [
|
|
"expect(handleClick).toHaveBeenCalledTimes(1)"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"project-component-trees": [
|
|
{
|
|
"id": "tree-1",
|
|
"name": "Main App Layout",
|
|
"description": "Primary application layout tree",
|
|
"rootNodes": [
|
|
{
|
|
"id": "root-1",
|
|
"type": "Container",
|
|
"name": "AppContainer",
|
|
"props": {
|
|
"maxWidth": "xl"
|
|
},
|
|
"children": [
|
|
{
|
|
"id": "header-1",
|
|
"type": "AppBar",
|
|
"name": "Header",
|
|
"props": {
|
|
"position": "sticky"
|
|
},
|
|
"children": []
|
|
},
|
|
{
|
|
"id": "main-1",
|
|
"type": "Box",
|
|
"name": "MainContent",
|
|
"props": {
|
|
"sx": { "py": 4 }
|
|
},
|
|
"children": []
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"createdAt": 1704067200000,
|
|
"updatedAt": 1704067200000
|
|
}
|
|
]
|
|
}
|