> ## Documentation Index
> Fetch the complete documentation index at: https://docs.modelcode.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Defining Modernization Goals

> How to describe what you want to achieve with your migration

export const ProductName = "The Morph Platform";

export const productName = "the Morph Platform";

Modernization goals are your starting point. They tell {productName} what you want to accomplish, and everything else - the Project Spec, milestones, and the full roadmap - flows from this input.

{ProductName} is optimized for modernizing large codebases with 20,000 or more lines of code.

## Why This Matters

Your modernization goals become the foundation for the entire migration. {productName} uses them to:

* Analyze which parts of your repositories are relevant
* Determine the target technology stack
* Generate your Project Spec
* Plan the milestone sequence

Vague goals produce vague results. Specific goals produce a focused, actionable plan.

## Writing Effective Goals

### Be Specific About Technologies

Instead of general statements, name the specific technologies:

| Less Effective          | More Effective                                       |
| ----------------------- | ---------------------------------------------------- |
| "Modernize the backend" | "Migrate from Express.js to FastAPI"                 |
| "Update Python"         | "Upgrade from Python 2.7 to Python 3.12"             |
| "Use a modern frontend" | "Migrate from AngularJS to React 18 with TypeScript" |

### State the Transformation

Describe both where you're coming from and where you're going:

* "Translate the source code from **Ada** to **C++**"
* "Upgrade **Java 8 with Spring Boot 2** to **Java 21 with Spring Boot 3**"
* "Migrate from **jQuery** to **vanilla JavaScript ES2022**"

### Include Version Numbers When Relevant

Version specificity helps {productName} make the right choices:

* "Upgrade to **Python 3.12**" (not just "Python 3")
* "Use **React 18** with hooks" (not just "React")
* "Target **Java 21** LTS" (not just "latest Java")

## Using Advanced Options

Click **Advanced Options** to access additional fields.

### Additional Instructions

Use this for requirements that don't fit in the main goal:

**Examples:**

* "Use pytest for all tests with 80% coverage target"
* "Apply the repository pattern for database access"
* "Use our company's standard logging format"
* "Prefer functional components over class components"
* "Keep the existing API contracts unchanged"

This is where you encode specific technical decisions or constraints.

### Modernization Scope

By default, {productName} migrates all repositories in the project. Use this field to focus on specific parts:

**Examples:**

* `src/backend/` - Only migrate the backend folder
* `packages/core/` - Focus on a specific package
* `src/legacy-module/` - Target a legacy module

Leave empty to migrate everything. If your project includes multiple repositories, each repo's role (Modified, New, Reference Only, 1-to-1 Migration) is configured in the Project Overview as part of the Project Spec flow.

## Example Goals

### Language Translation

```
Translate the source code from Ada to C++
```

**Additional Instructions:**

```
- Use modern C++20 features where appropriate
- Maintain the same module structure
- Generate CMake build configuration
```

### Framework Migration

```
Migrate from AngularJS to React with TypeScript
```

**Additional Instructions:**

```
- Use functional components with hooks
- Implement state management with React Context
- Use CSS Modules for styling
- Maintain the same routing structure
```

### Language Upgrade

```
Upgrade Python 2.7 to Python 3.12
```

**Additional Instructions:**

```
- Use type hints throughout
- Replace deprecated libraries with modern equivalents
- Use pathlib instead of os.path
- Maintain backward compatibility for the public API
```

### Architecture Change

```
Refactor the monolithic application to use a service-oriented architecture
```

**Additional Instructions:**

```
- Create separate services for user management, orders, and inventory
- Use REST APIs for inter-service communication
- Implement shared types in a common package
- Generate Docker configurations for each service
```

## What Happens Next

After you click **Continue**, {productName} starts generating your **Project Spec** - goals, scope, and approach for your migration, including the Project Overview describing your repositories and their roles.

[**Project Knowledge**](/customization/project-knowledge) opens automatically on the Roadmap so you can review and approve the spec (with chat) before any migration begins. The spec is generated in the background and appears in the drawer shortly after. See [Reviewing the Project Spec](/setup/reviewing-project-spec) for details.
