Skip to content

Stage 5: Code - Generate Runnable Code

What You'll Learn

After completing this lesson, you will be able to:

  • One-click full-stack code generation: Automatically generate runnable frontend and backend applications from UI Schema and Tech designs
  • Understand code generation workflow: Master how Code Agent transforms design documents into production-ready code
  • Validate code quality: Learn to check the completeness, test coverage, and security standards of generated code
  • Debug common issues: Resolve dependency installation, type checking, and API connection problems

Your Current Struggle

You have completed structured product ideation, PRD generation, UI design, and technical architecture design. Now the most challenging part is:

  • How to transform designs into code: UI Schema and Tech designs are in documents, but how to implement them?
  • Full-stack development is too complex: Backend requires Express + Prisma, frontend requires React Native—where to start?
  • Code quality is hard to guarantee: How to ensure generated code has tests, documentation, and meets security standards?
  • Not enough time: Writing an MVP takes several days—is there a faster way?

The Code stage is designed to solve these problems—it automatically generates production-ready full-stack code based on designs from previous stages.

When to Use This Approach

When you need to:

  • Quickly validate ideas: Use code to validate product ideas instead of directly investing in development
  • Create application skeleton: Provide a runnable foundation for subsequent development instead of starting from scratch
  • Unify tech stack: Ensure frontend and backend code follow unified architecture and standards
  • Save development time: Complete MVP framework from design to code in minutes

Core Concept

Code Agent is a full-stack engineer whose task is to transform design documents from previous stages into runnable code. Its core characteristics:

Input/Output

TypeContent
InputUI Schema (interface structure), Tech Design (technical solution), Prisma Schema (data model)
Outputartifacts/backend/ (backend code), artifacts/client/ (frontend code)

Tech Stack

PartTech Stack
BackendExpress + Prisma + TypeScript
FrontendReact Native Web + Expo + TypeScript
DatabaseSQLite (development) / PostgreSQL (production)

Execution Constraints

Strict Scope

Code Agent only implements features confirmed in PRD and UI Schema, does not add:

  • Authentication and authorization systems
  • Complex state management (like Redux)
  • Non-core feature attributes

Follow Along

Step 1: Enter Code Stage

Assume you have completed the Tech stage and are ready to start generating code.

bash
# If in the pipeline, proceed to the next stage
factory run code

# Or restart from a specific stage
factory run code

You should see: CLI will display Code stage information, including input files and expected outputs.

Step 2: AI Assistant Executes Code Agent

The AI assistant will load agents/code.agent.md and skills/code/skill.md, then start execution.

Code Agent execution flow:

mermaid
graph TD
    A[Read input files] --> B[Read template files]
    B --> C[Generate backend code]
    C --> D[Generate frontend code]
    D --> E[Validate checklist]
    E --> F[Output artifacts]

What the AI assistant will do:

  1. Read template files (skills/code/references/backend-template.md and frontend-template.md)

    • Understand project structure and code organization
    • Learn how to organize directories and configuration files
  2. Analyze input files

    • Understand page structure and components from ui.schema.yaml
    • Understand technical architecture and API design from tech.md
    • Understand data model from schema.prisma
  3. Generate backend code

    • Create Express + Prisma project structure
    • Generate API routes and controllers
    • Implement data validation and error handling
    • Add tests and documentation
  4. Generate frontend code

    • Create React Native + Expo project structure
    • Generate page components and UI components
    • Implement data state management and API calls
    • Add tests and navigation configuration
  5. Validate checklist

    • Compare against checklist in Code Skill
    • Ensure all mandatory items are completed
  6. Output artifacts

    • Generate artifacts/backend/ and artifacts/client/ directories

Step 3: Verify Generated Code

After Code Agent completes, it will generate a complete code directory structure.

Backend directory structure:

backend/
├── package.json          # Dependencies and scripts
├── tsconfig.json         # TypeScript configuration
├── .env.example          # Environment variable template
├── .gitignore            # Git ignore file
├── README.md             # Project description
├── GETTING_STARTED.md    # Quick start guide
├── prisma/
│   ├── schema.prisma     # Data model (copied from Tech stage)
│   └── seed.ts           # Seed data
└── src/
    ├── index.ts          # Application entry point
    ├── app.ts            # Express app configuration
    ├── config/           # Environment variable configuration
    ├── lib/              # Prisma client
    ├── middleware/       # Error handling, logging
    ├── routes/           # API routes
    ├── controllers/      # Controllers
    ├── services/         # Business logic
    ├── validators/       # Input validation (Zod)
    └── __tests__/        # Test files

Frontend directory structure:

client/
├── package.json          # Dependencies and scripts
├── tsconfig.json         # TypeScript configuration
├── app.json              # Expo configuration
├── babel.config.js       # Babel configuration
├── .env.example          # Environment variable template
├── .gitignore            # Git ignore file
├── README.md             # Project description
├── GETTING_STARTED.md    # Quick start guide
├── App.tsx               # Application entry point
└── src/
    ├── config/           # Environment variable configuration
    ├── api/              # API client
    ├── components/       # UI components
    ├── hooks/            # Custom Hooks
    ├── navigation/       # Navigation configuration
    ├── screens/          # Page components
    ├── styles/           # Theme and styles
    └── types/            # Type definitions

Checkpoint ✅: Confirm that the following files exist:

FileBackendFrontend
package.json
tsconfig.json
.env.example
README.md
GETTING_STARTED.md
Test files
Prisma Schema-

Step 4: Start Backend Service

Follow the guide in backend/GETTING_STARTED.md to start the service.

bash
# Enter backend directory
cd artifacts/backend

# Install dependencies
npm install

# Configure environment variables
cp .env.example .env

# Initialize database
npx prisma generate
npx prisma migrate dev
npm run db:seed

# Start development server
npm run dev

You should see:

Server running on http://localhost:3000
Environment: development
Database connected

Checkpoint ✅: Visit the health check endpoint to confirm the service is running.

bash
curl http://localhost:3000/health

Should return:

json
{
  "status": "ok",
  "timestamp": "2024-01-29T12:00:00.000Z"
}

Step 5: Start Frontend Application

Follow the guide in client/GETTING_STARTED.md to start the application.

bash
# Open a new terminal, enter frontend directory
cd artifacts/client

# Install dependencies
npm install

# Configure environment variables
cp .env.example .env

# Start development server
npm start

You should see: Metro Bundler starts, displaying run options.

› Metro waiting on exp://192.168.x.x:19000
› Scan the QR code above with Expo Go (Android) or the Camera app (iOS)
› Press a │ open Android
› Press i │ open iOS simulator
› Press w │ open web

Logs for your project will appear below.

Select platform:

  • Press w - Open in browser (most convenient for testing)

Checkpoint ✅: Application can open in browser and display the frontend interface.

Step 6: Test Frontend and Backend Integration

  1. Visit API documentation: http://localhost:3000/api-docs

    • View Swagger UI documentation
    • Confirm all endpoints are defined
  2. Test frontend functionality:

    • Create new data
    • Edit data
    • Delete data
    • List refresh
  3. Check console logs:

    • Frontend API call errors
    • Backend request logs
    • Unhandled exceptions

Step 7: Confirm Checkpoint

When the AI assistant confirms Code stage completion, you should see:

✅ Code stage completed

Generated files:
- Backend: artifacts/backend/ (Express + Prisma + TypeScript)
- Frontend: artifacts/client/ (React Native + Expo + TypeScript)

Checkpoint options:
[1] Continue - Enter Validation stage
[2] Retry - Regenerate code
[3] Pause - Save current state

Select Continue to proceed to the next stage.

Checkpoint ✅

After completing the Code stage, you should:

  • [ ] Backend code can start normally (npm run dev)
  • [ ] Frontend application can open in browser
  • [ ] Health check endpoint returns normally
  • [ ] API documentation is accessible (/api-docs)
  • [ ] Frontend can call backend API
  • [ ] Frontend handles Loading and Error states
  • [ ] Test files exist and are runnable (npm test)

Pitfall Alerts

Issue 1: Dependency Installation Failure

Symptom: npm install reports error

Solution:

bash
# Clear cache and retry
rm -rf node_modules package-lock.json
npm cache clean --force
npm install

Issue 2: Prisma Migration Failure

Symptom: npx prisma migrate dev reports error

Solution:

bash
# Reset database
npx prisma migrate reset

# Or manually delete database file
rm prisma/dev.db
npx prisma migrate dev

Issue 3: Frontend Cannot Connect to Backend

Symptom: Frontend reports Network Error or ECONNREFUSED

Checklist:

  1. Confirm backend is started: curl http://localhost:3000/health
  2. Check frontend .env configuration: EXPO_PUBLIC_API_URL=http://localhost:3000/api
  3. If testing on real device, change to LAN IP (e.g., http://192.168.1.100:3000/api)

Issue 4: Test Failure

Symptom: npm test reports error

Solution:

  • Confirm test files exist: src/__tests__/
  • Check if test dependencies are installed: npm install --save-dev vitest @testing-library/react-native
  • Review error messages and fix issues in the code

Code Agent Special Requirements

Code Agent has some special constraints and requirements that require particular attention:

1. Must Read Template Files

Before generating code, Code Agent must completely read:

  • skills/code/references/backend-template.md
  • skills/code/references/frontend-template.md

These two template files demonstrate production-ready project structures and example code.

2. Prohibit Adding Authentication and Authorization

Scope Limitation

Code Agent absolutely prohibits adding:

  • Login/registration functionality
  • Token authentication
  • Permission control
  • Complex state management (like Redux)

These features will be added in subsequent iterations. MVP stage only focuses on core business logic.

3. Code Quality Requirements

Generated code must meet:

RequirementDescription
TypeScriptStrict mode, no any types
TestingHealth check, CRUD endpoints, input validation tests
API DocumentationSwagger/OpenAPI specification (/api-docs)
Error HandlingUnified error handling middleware
LoggingStructured logging (winston/pino)
SecurityZod validation, helmet, CORS whitelist
DocumentationREADME and quick start guide

Code Generation Checklist

Code Agent will generate code against the following checklist.

Backend Mandatory Items

  • [ ] Environment variable support (dotenv)
  • [ ] Dependency version locking (Prisma 5.x)
  • [ ] Type definitions (JSON field handling)
  • [ ] Core dependencies: Express + Prisma + Zod + Helmet
  • [ ] API endpoints: Health check + CRUD
  • [ ] Unified response format
  • [ ] Input validation (Zod Schema)
  • [ ] Error handling middleware
  • [ ] Test files (health check + CRUD + validation)
  • [ ] Swagger API documentation
  • [ ] Seed data (prisma/seed.ts)

Frontend Mandatory Items

  • [ ] Core dependencies: React Native Web + Expo + React Navigation
  • [ ] Persistent storage (AsyncStorage)
  • [ ] Navigation configuration (React Navigation 6+)
  • [ ] Safe area (SafeAreaView)
  • [ ] API Client (Axios + interceptors)
  • [ ] Custom Hooks (data management)
  • [ ] Basic UI components (Button, Input, Card, Loading)
  • [ ] Page components (at least home page and detail page)
  • [ ] Loading and Error state handling
  • [ ] Pull-to-refresh (RefreshControl)
  • [ ] Test files (page rendering + components + Hooks)

Testing and Quality Assurance

Even in the MVP stage, Code Agent will generate basic test code.

Backend Test Example

typescript
// src/__tests__/items.test.ts
import { describe, it, expect } from 'vitest';
import request from 'supertest';
import app from '../app';

describe('Items API', () => {
  it('should return health check', async () => {
    const res = await request(app).get('/health');
    expect(res.status).toBe(200);
  });

  it('should create a new item', async () => {
    const res = await request(app)
      .post('/api/items')
      .send({ title: 'Test Item', amount: 100 });

    expect(res.status).toBe(201);
    expect(res.body.data).toHaveProperty('id');
  });

  it('should reject invalid item', async () => {
    const res = await request(app)
      .post('/api/items')
      .send({ title: '' }); // Missing required field

    expect(res.status).toBe(400);
  });
});

Frontend Test Example

typescript
// src/screens/__tests__/HomeScreen.test.tsx
import React from 'react';
import { render, screen } from '@testing-library/react-native';
import HomeScreen from '../HomeScreen';

describe('HomeScreen', () => {
  it('should render without crashing', () => {
    render(<HomeScreen />);
    expect(screen.getByText(/home/i)).toBeTruthy();
  });

  it('should show loading state initially', () => {
    render(<HomeScreen />);
    expect(screen.getByTestId('loading-indicator')).toBeTruthy();
  });
});

Quick Start Guide

Each generated project will include GETTING_STARTED.md to help you run the project within 5 minutes.

Backend Quick Start

bash
# 1. Clone project
cd artifacts/backend

# 2. Install dependencies
npm install

# 3. Configure environment variables
cp .env.example .env

# 4. Initialize database
npx prisma generate
npx prisma migrate dev
npm run db:seed

# 5. Start service
npm run dev

Frontend Quick Start

bash
# 1. Clone project
cd artifacts/client

# 2. Install dependencies
npm install

# 3. Configure environment variables
cp .env.example .env

# 4. Start application
npm start

Note: Ensure the backend is started, otherwise the frontend cannot connect to the API.

Lesson Summary

The Code stage is one of the core links in the pipeline, transforming designs from previous stages into runnable code.

Key Points:

  1. Input/Output: Code Agent generates frontend and backend code based on UI Schema, Tech Design, and Prisma Schema
  2. Tech Stack: Backend uses Express + Prisma, frontend uses React Native Web + Expo
  3. Scope Control: Only implements features in PRD and UI Schema, does not add authentication and authorization
  4. Quality Assurance: Generates tests, API documentation, and quick start guides
  5. Validation Standards: Backend can start, frontend can render, API can be called

Next Lesson Preview

In the next lesson, we'll learn Validation Stage.

You'll learn:

  • How to validate generated code quality
  • Dependency installation and type checking
  • Prisma Schema validation
  • Generate validation report

Appendix: Source Code Reference

Click to expand source code locations

Last updated: 2026-01-29

FeatureFile PathLine Range
Code Agent definitionagents/code.agent.md1-82
Code Skillskills/code/skill.md1-1488
Backend templateskills/code/references/backend-template.md1-670
Frontend templateskills/code/references/frontend-template.md1-1231
Pipeline definitionpipeline.yaml63-77

Key constraints:

  • Only implement features in PRD and UI Schema (code.agent.md:25)
  • Prohibit adding authentication, authorization, or complex state management (code.agent.md:28)
  • Must completely read template files (code/skill.md:1476)
  • All database operations go through Service layer (backend-template.md:665)
  • All inputs must be validated through Zod (backend-template.md:666)

Key checklists:

  • Backend mandatory items: Environment variables, dependency locking, type definitions (code.agent.md:37-47)
  • Frontend mandatory items: Core dependencies, import paths, configuration files (code.agent.md:50-64)
  • Common error prevention (code.agent.md:65-74)