diff --git a/content/modernizr/00-preparation/index.en.md b/content/modernizer/00-preparation/index.en.md similarity index 80% rename from content/modernizr/00-preparation/index.en.md rename to content/modernizer/00-preparation/index.en.md index 57d63c3..7d0a826 100644 --- a/content/modernizr/00-preparation/index.en.md +++ b/content/modernizer/00-preparation/index.en.md @@ -13,15 +13,15 @@ Before beginning the modernization process, you need to configure your developme Navigate to the workshop studio page and access the "Outputs" tab to retrieve your environment credentials: -![Workshop studio tab](/static/images/modernizr/0/setup-01.png) +![Workshop studio tab](/static/images/modernizer/0/setup-01.png) Locate these two important values: - **VSCodeServerPassword** - Authentication credential for your VS Code instance -- **VSCodeServerURLModernizr** - Direct endpoint to your cloud-based IDE +- **VSCodeServerURLModernizer** - Direct endpoint to your cloud-based IDE Your values are unique to you and will differ from the above example. -Click the `VSCodeServerURLModernizr` to launch your development environment. Enter the password when prompted and allow approximately 60 seconds for the environment to initialize. Any startup notifications can be safely dismissed. +Click the `VSCodeServerURLModernizer` to launch your development environment. Enter the password when prompted and allow approximately 60 seconds for the environment to initialize. Any startup notifications can be safely dismissed. ## Step 2: Configuring the Cline AI Agent @@ -29,13 +29,13 @@ Your workspace includes **Cline**, an autonomous AI coding agent that will assis Access the [Cline](https://cline.bot/) extension through the VS Code interface: -![Cline plugin](/static/images/modernizr/0/setup-02.png) +![Cline plugin](/static/images/modernizer/0/setup-02.png) ## Step 3: Establishing Bedrock Integration Configure Cline to use Amazon Bedrock as its foundation model provider. Select "Use your own API Key" and choose "Amazon Bedrock" from the dropdown: -![Cline plugin API config](/static/images/modernizr/0/setup-03.png) +![Cline plugin API config](/static/images/modernizer/0/setup-03.png) Apply the following configuration parameters: - **Authentication**: AWS Profile @@ -45,7 +45,7 @@ Apply the following configuration parameters: Confirm the settings and initialize the connection: -![Cline plugin config](/static/images/modernizr/0/setup-04.png) +![Cline plugin config](/static/images/modernizer/0/setup-04.png) ::alert[You are working in a lab environment, the foundational models have configured rate limiting, it is highly likely during the workshop you will get throttled and you will have to retry the operations. You have 4 request per minute using Claude 4 and 6 request per minute using Claude 3.7.]{type="info"} @@ -59,11 +59,11 @@ Verify the Bedrock connection is functioning correctly by sending the below test Hello and Welcome to this modernization project, can you confirm you can read and list all the files in the workspace? ``` -![Cline plugin testing](/static/images/modernizr/0/setup-05.png) +![Cline plugin testing](/static/images/modernizer/0/setup-05.png) This workshop provides access to two foundation models: `claude-sonnet-4` (latest generation with enhanced reasoning capabilities) and `claude-sonnet-3.7` (previous generation with proven reliability). -![Cline plugin response](/static/images/modernizr/0/setup-06.png) ![Cline plugin result](/static/images/modernizr/0/setup-07.png) +![Cline plugin response](/static/images/modernizer/0/setup-06.png) ![Cline plugin result](/static/images/modernizer/0/setup-07.png) ## Step 5: Configuring Auto-Approval Settings @@ -76,13 +76,13 @@ Enable the following capabilities: Increase the **Max requests** parameter from 20 to 40 to accommodate complex multi-step operations without interruption. -![Cline plugin auto-approve settings](/static/images/modernizr/0/setup-08.png) +![Cline plugin auto-approve settings](/static/images/modernizer/0/setup-08.png) ## Step 6: Verifying MCP Server Status Access the MCP server management interface (stacked server icon) to confirm all specialized AI tools are operational. You should observe 3 active servers with green status indicators, confirming proper connectivity. -![Cline plugin auto-approve settings](/static/images/modernizr/0/setup-09.png) +![Cline plugin auto-approve settings](/static/images/modernizer/0/setup-09.png) ## Step 7: MCP Integration Verification @@ -92,7 +92,7 @@ Test the MCP server functionality by querying existing DynamoDB resources: Please show me the DynamoDB tables that I have in this region ``` -![Task MCP Server](/static/images/modernizr/0/setup-10.png) +![Task MCP Server](/static/images/modernizer/0/setup-10.png) ## Environment Ready diff --git a/content/modernizr/01-modernization/index.en.md b/content/modernizer/01-modernization/index.en.md similarity index 95% rename from content/modernizr/01-modernization/index.en.md rename to content/modernizer/01-modernization/index.en.md index 0af8025..d04f56c 100644 --- a/content/modernizr/01-modernization/index.en.md +++ b/content/modernizer/01-modernization/index.en.md @@ -1,5 +1,5 @@ --- -title: "Database Modernizr Workflow" +title: "Database Modernizer Workflow" date: 2025-09-01T10:41:04-05:00 weight: 30 chapter: true @@ -13,7 +13,7 @@ Begin by reviewing the application documentation in the `README.md` file, which ::alert[You don't have to follow the `README.md` instructions as your environment is already pre-configured for you. ]{type="info"} -![README](/static/images/modernizr/1/workflow-01.png) +![README](/static/images/modernizer/1/workflow-01.png) ## Starting the Application Services @@ -28,7 +28,7 @@ While your application environment is already preconfigured, you'll still need t The backend API server manages all client requests and database transactions. Navigate to the `/backend` directory and open an integrated terminal (right-click > "Open in Integrated Terminal"). Grant any requested permissions when prompted. -![menu](/static/images/modernizr/1/workflow-02.png) +![menu](/static/images/modernizer/1/workflow-02.png) Build and start the backend service using these commands: @@ -87,7 +87,7 @@ Verify the API server is responding correctly by accessing the health endpoint: This endpoint should return status information confirming the backend is operational: -![Backend](/static/images/modernizr/1/workflow-03.png) +![Backend](/static/images/modernizer/1/workflow-03.png) Monitor your backend terminal for request logging, which demonstrates the API request flow. @@ -95,7 +95,7 @@ Monitor your backend terminal for request logging, which demonstrates the API re Access the e-commerce frontend by navigating to `[your-url]/store/`: -![Store](/static/images/modernizr/1/workflow-04.png) +![Store](/static/images/modernizer/1/workflow-04.png) ## System Interaction Analysis diff --git a/content/modernizr/01-modernization/workflow-00.en.md b/content/modernizer/01-modernization/workflow-00.en.md similarity index 98% rename from content/modernizr/01-modernization/workflow-00.en.md rename to content/modernizer/01-modernization/workflow-00.en.md index 7236a5c..fdbd0cb 100644 --- a/content/modernizr/01-modernization/workflow-00.en.md +++ b/content/modernizer/01-modernization/workflow-00.en.md @@ -12,7 +12,7 @@ Think of database modernization like renovating a house while people are still l Our process consists of seven carefully designed stages, each one building on the previous step. It's like following a recipe — each ingredient needs to be added at the right time and in the right order to get the perfect result. -![Modernization workflow](/static/images/modernizr/1/workflow-base-01.png) +![Modernization workflow](/static/images/modernizer/1/workflow-base-01.png) ## Stage 1: Understanding What You Have — Database Detective Work diff --git a/content/modernizr/01-modernization/workflow-01.en.md b/content/modernizer/01-modernization/workflow-01.en.md similarity index 97% rename from content/modernizr/01-modernization/workflow-01.en.md rename to content/modernizer/01-modernization/workflow-01.en.md index 511f526..9b283c0 100644 --- a/content/modernizr/01-modernization/workflow-01.en.md +++ b/content/modernizer/01-modernization/workflow-01.en.md @@ -10,7 +10,7 @@ chapter: false The `/prompts` directory implements a structured approach to AI-driven development through organized subfolders that correspond to each stage of the modernization workflow. Each subfolder contains three components: Requirements, Design, and Tasks documents. This architectural pattern creates a comprehensive framework that systematically guides the entire modernization process from initial analysis through final implementation. -![Prompts](/static/images/modernizr/1/workflow-prompt-01.png) +![Prompts](/static/images/modernizer/1/workflow-prompt-01.png) ### Requirements Documentation — Defining Objectives and Success Criteria @@ -32,4 +32,4 @@ The structured approach provides several advantages. The LLM receives explicit g To conceptualize this framework using a navigation analogy: the Requirements document defines the destination and the reasons for traveling there, the Design document provides the comprehensive route map showing all available paths and optimal strategies, and the Tasks document functions as turn-by-turn GPS navigation that guides execution through each specific step of the journey. This structured approach transforms complex modernization challenges into systematic, manageable processes that can be executed reliably through AI-assisted development workflows. -![Tasks](/static/images/modernizr/1/workflow-prompt-02.png) +![Tasks](/static/images/modernizer/1/workflow-prompt-02.png) diff --git a/content/modernizr/01-modernization/workflow-02.en.md b/content/modernizer/01-modernization/workflow-02.en.md similarity index 98% rename from content/modernizr/01-modernization/workflow-02.en.md rename to content/modernizer/01-modernization/workflow-02.en.md index b24b3c5..b81055e 100644 --- a/content/modernizr/01-modernization/workflow-02.en.md +++ b/content/modernizer/01-modernization/workflow-02.en.md @@ -14,7 +14,7 @@ Each stage generates "Artifacts" — deliverables that will be used in the futur Let's start exploring the artifacts available for the first stage `stage-01`. This stage is focused on capturing the data that is available from the source database and application backend logic. We use the MySQL MCP server to understand table structure, constraints and data. Next we use the MySQL query logs to identify the data . Finally, we explore the application logic to capture all the access patterns that we will need to modernize. -![Artifacts](/static/images/modernizr/1/workflow-artifacts-01.png) +![Artifacts](/static/images/modernizer/1/workflow-artifacts-01.png) DynamoDB is all about application the access patterns that we need to support. The secret to DynamoDB data modelling is to store data exactly in the format your application will consume it, structing your data in a way that can be read as efficiently as possible with the smallest number of queries. diff --git a/content/modernizr/01-mysql-mcp/index.en.md b/content/modernizer/01-mysql-mcp/index.en.md similarity index 100% rename from content/modernizr/01-mysql-mcp/index.en.md rename to content/modernizer/01-mysql-mcp/index.en.md diff --git a/content/modernizr/02-data-modeling/data-modeling-01.en.md b/content/modernizer/02-data-modeling/data-modeling-01.en.md similarity index 98% rename from content/modernizr/02-data-modeling/data-modeling-01.en.md rename to content/modernizer/02-data-modeling/data-modeling-01.en.md index ce97b0f..074b033 100644 --- a/content/modernizr/02-data-modeling/data-modeling-01.en.md +++ b/content/modernizer/02-data-modeling/data-modeling-01.en.md @@ -33,7 +33,7 @@ Rather than following prescriptive instructions, focus on understanding the core This picture is an Entity Relationship Mapping that will help you understand in detail what it needs to be modeled. -![Start conversation](/static/images/modernizr/2/stage02-10.png) +![Start conversation](/static/images/modernizer/2/stage02-10.png) ## Entity Relationship Mapping diff --git a/content/modernizr/02-data-modeling/data-modeling-02.en.md b/content/modernizer/02-data-modeling/data-modeling-02.en.md similarity index 96% rename from content/modernizr/02-data-modeling/data-modeling-02.en.md rename to content/modernizer/02-data-modeling/data-modeling-02.en.md index 6dd4df0..8d79fae 100644 --- a/content/modernizr/02-data-modeling/data-modeling-02.en.md +++ b/content/modernizer/02-data-modeling/data-modeling-02.en.md @@ -151,23 +151,23 @@ We will add two indexes, that are possible future hot partitions, but with the n - **Warning:** Monitor for hot partitions with high-volume sellers ``` -![User entitiy modifcation](/static/images/modernizr/2/stage02-11.png) +![User entitiy modifcation](/static/images/modernizer/2/stage02-11.png) Make sure all the modifications are stored in the `working_log.md` file! sometimes `Cline` ignores what you say!! -![Working Log](/static/images/modernizr/2/stage02-12.png) +![Working Log](/static/images/modernizer/2/stage02-12.png) In my specific scenario, `Cline` was having a hard time understanding it needed to create the GSIs and it wasn't including them in the data model. It is your responsibility to make sure every access patterns is properly identified and recorded, remember this is the base of data modeling and all the future steps depend on the decisions you make at this point. -![Working Log](/static/images/modernizr/2/stage02-13.png) +![Working Log](/static/images/modernizer/2/stage02-13.png) Even at some points it actually suggested me to have a different table for my shopping cart entity. -![Working Log](/static/images/modernizr/2/stage02-14.png) +![Working Log](/static/images/modernizer/2/stage02-14.png) But with a little patience, and making sure all the data is there I was able to guide `Cline` to obtain the outcome and table structure that we originally intended. -![Working Log](/static/images/modernizr/2/stage02-15.png) +![Working Log](/static/images/modernizer/2/stage02-15.png) Before completing this workshop section, make sure the content you approve is valid, we are trying to use one table with 3 different entities, one for User metadata, another for User cart items and finally one for User orders! If in your case you are still getting suggestions to have another table for orders or shopping cart items, make sure you tell `Cline` we don't need it anymore. diff --git a/content/modernizr/02-data-modeling/data-modeling-03.en.md b/content/modernizer/02-data-modeling/data-modeling-03.en.md similarity index 99% rename from content/modernizr/02-data-modeling/data-modeling-03.en.md rename to content/modernizer/02-data-modeling/data-modeling-03.en.md index df129c6..cf51888 100644 --- a/content/modernizr/02-data-modeling/data-modeling-03.en.md +++ b/content/modernizer/02-data-modeling/data-modeling-03.en.md @@ -135,6 +135,6 @@ We will add two indexes, that are possible future hot partitions, but with the n - **Warning:** Monitor for hot partitions with high-volume sellers ``` -![Working Log](/static/images/modernizr/2/stage02-16.png) +![Working Log](/static/images/modernizer/2/stage02-16.png) In my execution, I was getting throttled, please remember to be patient and just retry! but also review the changes made by `Cline`. \ No newline at end of file diff --git a/content/modernizr/02-data-modeling/data-modeling-04.en.md b/content/modernizer/02-data-modeling/data-modeling-04.en.md similarity index 97% rename from content/modernizr/02-data-modeling/data-modeling-04.en.md rename to content/modernizer/02-data-modeling/data-modeling-04.en.md index 9ad5c08..a72437d 100644 --- a/content/modernizr/02-data-modeling/data-modeling-04.en.md +++ b/content/modernizer/02-data-modeling/data-modeling-04.en.md @@ -170,12 +170,12 @@ GSI1: Category Hierarchy Lookup (Migration Support) Always remember to check if the input was added in the working log and the instructions were followed. -![Working Log](/static/images/modernizr/2/stage02-17.png) +![Working Log](/static/images/modernizer/2/stage02-17.png) Make sure that everything that is not needed, such other tables that might have been suggested before are not longer there, we don't need to send noise when we will re-generate the data model. -![Working Log](/static/images/modernizr/2/stage02-18.png) +![Working Log](/static/images/modernizer/2/stage02-18.png) At this point `Cline` should tell you the summary of the work, and that it has effectively created a 3 table architecture. -![Working Log](/static/images/modernizr/2/stage02-19.png) +![Working Log](/static/images/modernizer/2/stage02-19.png) diff --git a/content/modernizr/02-data-modeling/data-modeling-05.en.md b/content/modernizer/02-data-modeling/data-modeling-05.en.md similarity index 95% rename from content/modernizr/02-data-modeling/data-modeling-05.en.md rename to content/modernizer/02-data-modeling/data-modeling-05.en.md index 03e5164..4f4f63c 100644 --- a/content/modernizr/02-data-modeling/data-modeling-05.en.md +++ b/content/modernizer/02-data-modeling/data-modeling-05.en.md @@ -16,7 +16,7 @@ Great! Now it is time to mark as completed task 3.2 and proceed with the next on This task involves comprehensive analysis and redesign of your initial data model based on the validation results from the previous step. The DynamoDB MCP Server will perform detailed optimization analysis, potentially recommending significant structural changes to improve performance and cost efficiency. -![Data model](/static/images/modernizr/2/stage02-20.png) +![Data model](/static/images/modernizer/2/stage02-20.png) ## Critical Review and Validation Phase @@ -31,7 +31,7 @@ The design refinement process often reveals opportunities for optimization that This iterative approach reflects industry best practices where database designs undergo multiple refinement cycles before reaching production readiness. -![Data model](/static/images/modernizr/2/stage02-21.png) +![Data model](/static/images/modernizer/2/stage02-21.png) ## Design Validation Checkpoints @@ -49,6 +49,6 @@ Confirm that the final data model maintains the standardized naming convention f This generic naming convention provides flexibility for future schema evolution while maintaining consistency across the application architecture. -![Data model](/static/images/modernizr/2/stage02-22.png) +![Data model](/static/images/modernizer/2/stage02-22.png) The standardized naming approach also simplifies application code by providing predictable patterns for GSI references, reducing the likelihood of configuration errors during deployment. diff --git a/content/modernizr/02-data-modeling/data-modeling-06.en.md b/content/modernizer/02-data-modeling/data-modeling-06.en.md similarity index 98% rename from content/modernizr/02-data-modeling/data-modeling-06.en.md rename to content/modernizer/02-data-modeling/data-modeling-06.en.md index dc45b36..d1aaa2d 100644 --- a/content/modernizr/02-data-modeling/data-modeling-06.en.md +++ b/content/modernizer/02-data-modeling/data-modeling-06.en.md @@ -26,7 +26,7 @@ The Migration Contract implements a transformation engine that supports multiple Explore the `contracts` folder to understand the supported transformation patterns, validation rules, and architectural constraints. This reference documentation provides comprehensive details on how the contract functions as both a specification document and an execution engine for the data migration process. -![Data model](/static/images/modernizr/2/stage02-23.png) +![Data model](/static/images/modernizer/2/stage02-23.png) ## Contract Quality Assurance diff --git a/content/modernizr/02-data-modeling/index.en.md b/content/modernizer/02-data-modeling/index.en.md similarity index 93% rename from content/modernizr/02-data-modeling/index.en.md rename to content/modernizer/02-data-modeling/index.en.md index 835588b..c40f10a 100644 --- a/content/modernizr/02-data-modeling/index.en.md +++ b/content/modernizer/02-data-modeling/index.en.md @@ -25,13 +25,13 @@ Let's begin by telling Cline to start working on data modeling. Use this command Please open this file `prompts/02-dynamodb-data-modeling/tasks.md` and start working in the first available task. ``` -![Start conversation](/static/images/modernizr/2/stage02-01.png) +![Start conversation](/static/images/modernizer/2/stage02-01.png) ## Watching the Magic Happen You'll know the workshop is working because you'll see Cline actively creating new files in real-time! It uses a visual diff system (like track changes in a document) to show you exactly what's being added or modified. This helps you understand each step of the process. -![Gitdiff](/static/images/modernizr/2/stage02-02.png) +![Gitdiff](/static/images/modernizer/2/stage02-02.png) **Take your time** with each file that gets generated. Don't rush through this process! Read everything, understand what Cline is doing at each step and why, and don't hesitate to ask questions. This is interactive learning - if you get confused at any point, just ask Cline to explain what's happening. @@ -59,25 +59,25 @@ Order processing is the critical part of our business! this is what it generates Finally a very small set of operations are allocated to sellers, it is less than 1 QPS, representing 0.1% of the traffic. Maybe 0.05 QPS on product management, and 0.25 QPS on seller profiles, there is very low traffic on category management as they barely change. ``` -![Questions](/static/images/modernizr/2/stage02-03.png) +![Questions](/static/images/modernizer/2/stage02-03.png) ## The Collaborative Design Process As you work through this stage, you'll encounter several "checkpoint" moments where Cline stops and asks for your input. These aren't interruptions - they're important collaboration points designed to ensure the design stays on track and meets your specific needs. -![Start conversation](/static/images/modernizr/2/stage02-05.png) +![Start conversation](/static/images/modernizer/2/stage02-05.png) ## Being Patient with AI During this intensive design stage, you might occasionally see messages about rate limiting or throttling. This is normal! Simply wait a few seconds and try again. The system can handle about 4 requests per minute, which should be enough for our workshop. If your task fails to execute please re-try, and just ignore the message that says "Try breaking down the task into smaller steps" as this is not our case, we know it is rate limiting! -![Start conversation](/static/images/modernizr/2/stage02-06.png) +![Start conversation](/static/images/modernizer/2/stage02-06.png) ## Using Specialized AI Tools At some point, Cline will ask for permission to use the DynamoDB MCP Server — this is like accessing a specialized AI consultant who's an expert specifically in DynamoDB design. When asked, give permission for this. This expert AI will help analyze all the data we've collected and create a proper database design. -![Start conversation](/static/images/modernizr/2/stage02-07.png) +![Start conversation](/static/images/modernizer/2/stage02-07.png) ## Quality Control Checkpoint @@ -85,13 +85,13 @@ Cline will first create a summary file called `dynamodb_requirements.md`. This i ::alert[ **Important:** Read this file carefully! Sometimes AI can accidentally add requirements that were never discussed, or miss important details. This is your chance to catch any errors before they become part of the final design.]{type="info"} -![Start conversation](/static/images/modernizr/2/stage02-08.png) +![Start conversation](/static/images/modernizer/2/stage02-08.png) ## Your First Database Design Once you approve the requirements summary, Cline will create your actual DynamoDB data model. This is exciting — you're seeing your new database structure come to life! Cline has generated the new data model file `artifacts/stage-02/dynamodb_data_model.md` please open it and read it carefully. -![Start conversation](/static/images/modernizr/2/stage02-09.png) +![Start conversation](/static/images/modernizer/2/stage02-09.png) ## What Comes Next diff --git a/content/modernizr/03-dual-layer/index.en.md b/content/modernizer/03-dual-layer/index.en.md similarity index 100% rename from content/modernizr/03-dual-layer/index.en.md rename to content/modernizer/03-dual-layer/index.en.md diff --git a/content/modernizr/04-ddb-connection/index.en.md b/content/modernizer/04-ddb-connection/index.en.md similarity index 100% rename from content/modernizr/04-ddb-connection/index.en.md rename to content/modernizer/04-ddb-connection/index.en.md diff --git a/content/modernizr/05-app-refactoring/index.en.md b/content/modernizer/05-app-refactoring/index.en.md similarity index 100% rename from content/modernizr/05-app-refactoring/index.en.md rename to content/modernizer/05-app-refactoring/index.en.md diff --git a/content/modernizr/06-data-movement/etl-01.en.md b/content/modernizer/06-data-movement/etl-01.en.md similarity index 78% rename from content/modernizr/06-data-movement/etl-01.en.md rename to content/modernizer/06-data-movement/etl-01.en.md index be0c3fa..f7ed9ca 100644 --- a/content/modernizr/06-data-movement/etl-01.en.md +++ b/content/modernizer/06-data-movement/etl-01.en.md @@ -19,7 +19,7 @@ AWS Glue is Amazon's managed ETL service - it's like having a smart data process - **Transform** it using your migration contract rules - **Load** it into DynamoDB in the correct format -The Glue scripts will use a pre-configured connection called `mysql-modernizr-connection` to securely connect to your database. This connection acts like a bridge between Glue and your MySQL server. +The Glue scripts will use a pre-configured connection called `mysql-modernizer-connection` to securely connect to your database. This connection acts like a bridge between Glue and your MySQL server. ## Configuring the Database Connection @@ -27,13 +27,13 @@ The Glue scripts will use a pre-configured connection called `mysql-modernizr-co Navigate to the AWS console and open the Glue service. In the left sidebar, click on **Data Connections** to see all available database connections. -![Migration control panel](/static/images/modernizr/6/stage06-02.png) +![Migration control panel](/static/images/modernizer/6/stage06-02.png) ### Step 2: Edit the MySQL Connection -Find the connection named `mysql-modernizr-connection`, select it, and click **Edit**. This connection has most of the settings already configured - you just need to add the password. +Find the connection named `mysql-modernizer-connection`, select it, and click **Edit**. This connection has most of the settings already configured - you just need to add the password. -![Migration control panel](/static/images/modernizr/6/stage06-03.png) +![Migration control panel](/static/images/modernizer/6/stage06-03.png) ### Step 3: Add the Database Password @@ -45,11 +45,11 @@ This password allows Glue to authenticate with your MySQL database. Without it, Once the connection status shows "Ready", select the connection and click **Actions**, then **Test Connection**. -![Migration control panel](/static/images/modernizr/6/stage06-04.png) +![Migration control panel](/static/images/modernizer/6/stage06-04.png) This starts a connectivity validation process that typically takes about 1 minute. -![Migration control panel](/static/images/modernizr/6/stage06-05.png) +![Migration control panel](/static/images/modernizer/6/stage06-05.png) The test creates a temporary network connection to your database to verify that: - The network path is open @@ -60,6 +60,6 @@ The test creates a temporary network connection to your database to verify that: You should receive a success message confirming the connection works properly. This green light means Glue can now access your MySQL database for the ETL process. -![Migration control panel](/static/images/modernizr/6/stage06-06.png) +![Migration control panel](/static/images/modernizer/6/stage06-06.png) This successful connection test means your data pipeline is ready to begin extracting data from MySQL and transforming it according to your migration contract. You're ready to move on to the next step: generating the database views that will feed your ETL process. diff --git a/content/modernizr/06-data-movement/etl-02.en.md b/content/modernizer/06-data-movement/etl-02.en.md similarity index 93% rename from content/modernizr/06-data-movement/etl-02.en.md rename to content/modernizer/06-data-movement/etl-02.en.md index a0ac89c..7fbbc82 100644 --- a/content/modernizr/06-data-movement/etl-02.en.md +++ b/content/modernizer/06-data-movement/etl-02.en.md @@ -31,7 +31,7 @@ Run the following command to start the automated view creation process: Please execute all the tasks listed in this file `prompts/07-data-migration-execution/tasks.md` ``` -![Migration control panel](/static/images/modernizr/6/stage06-07.png) +![Migration control panel](/static/images/modernizer/6/stage06-07.png) This command triggers Cline (the AI assistant) to read your migration contract from Stage 2 and automatically generate the MySQL views based on your data model specifications. @@ -39,7 +39,7 @@ This command triggers Cline (the AI assistant) to read your migration contract f The system will start by creating an artifacts folder, then reading the `migrationContract.json` file from Stage 2. This process involves multiple rapid file operations that might seem fast, but remember that Cline has rate limits (4 executions per minute), so you may need to be patient or retry if something times out. -![Migration control panel](/static/images/modernizr/6/stage06-08.png) +![Migration control panel](/static/images/modernizer/6/stage06-08.png) Each step of the process is automated, but Cline will ask for your approval before executing each task. This safety mechanism ensures you can review what's happening before it makes changes to your database. @@ -47,7 +47,7 @@ Each step of the process is automated, but Cline will ask for your approval befo As the process runs, Cline will ask for permission to create each MySQL view. You'll see detailed explanations of what each view will do and how it transforms your data. -![Migration control panel](/static/images/modernizr/6/stage06-09.png) +![Migration control panel](/static/images/modernizer/6/stage06-09.png) The system creates one view at a time, allowing you to: - **Review the SQL**: See exactly how each view combines and transforms your data @@ -63,7 +63,7 @@ After each view is created, you should manually query it to verify the results. - **Transformations Work**: MySQL data types are properly converted - **Relationships are Preserved**: Related data is correctly combined -![Migration control panel](/static/images/modernizr/6/stage06-10.png) +![Migration control panel](/static/images/modernizer/6/stage06-10.png) Run queries like: ```sql diff --git a/content/modernizr/06-data-movement/etl-03.en.md b/content/modernizer/06-data-movement/etl-03.en.md similarity index 94% rename from content/modernizr/06-data-movement/etl-03.en.md rename to content/modernizer/06-data-movement/etl-03.en.md index 1d811d2..5093287 100644 --- a/content/modernizr/06-data-movement/etl-03.en.md +++ b/content/modernizer/06-data-movement/etl-03.en.md @@ -37,7 +37,7 @@ For each table creation, Cline will ask for your approval and show you exactly w - **GSI Configuration**: Check that all your planned indexes are included - **Capacity Settings**: Confirm the read/write capacity makes sense for your data size -![Migration control panel](/static/images/modernizr/6/stage06-11.png) +![Migration control panel](/static/images/modernizer/6/stage06-11.png) This approval step is important because once a DynamoDB table is created with a specific key schema, you can't change it without deleting and recreating the table. @@ -45,7 +45,7 @@ This approval step is important because once a DynamoDB table is created with a After you approve each table, the MCP server will send the creation request to AWS. You'll see a response showing the table in "CREATING" status. -![Migration control panel](/static/images/modernizr/6/stage06-12.png) +![Migration control panel](/static/images/modernizer/6/stage06-12.png) The "CREATING" status means AWS is: - **Allocating Resources**: Setting up the infrastructure to support your table @@ -59,7 +59,7 @@ This process usually takes 1-3 minutes per table, depending on the complexity of Once all tables show as created, verify them in the AWS DynamoDB console. You should see your three tables: `Users`, `Products`, and `Categories`. -![Migration control panel](/static/images/modernizr/6/stage06-13.png) +![Migration control panel](/static/images/modernizer/6/stage06-13.png) For each table, check: - **Status**: Should be "ACTIVE" diff --git a/content/modernizr/06-data-movement/etl-04.en.md b/content/modernizer/06-data-movement/etl-04.en.md similarity index 90% rename from content/modernizr/06-data-movement/etl-04.en.md rename to content/modernizer/06-data-movement/etl-04.en.md index 8796708..69b687d 100644 --- a/content/modernizr/06-data-movement/etl-04.en.md +++ b/content/modernizer/06-data-movement/etl-04.en.md @@ -36,7 +36,7 @@ The automation process will create specialized Python scripts for each of your t - Write the data to the correct DynamoDB tables - Handle any errors or data quality issues -![Migration control panel](/static/images/modernizr/6/stage06-14.png) +![Migration control panel](/static/images/modernizer/6/stage06-14.png) You'll see Cline creating files with names like: - `users_migration.py` - Handles migrating user data @@ -47,11 +47,11 @@ You'll see Cline creating files with names like: Once the Python scripts are created, they need to be stored in Amazon S3 (cloud storage) where Glue can access them. This is like putting your moving instructions in a place where all the moving trucks can read them. -![Migration control panel](/static/images/modernizr/6/stage06-15.png) +![Migration control panel](/static/images/modernizer/6/stage06-15.png) The system will upload each script file to S3, making sure they're in the right location with the correct permissions for Glue to use them. The process also uploads any supporting files the jobs might need, such as configuration files or utility libraries. This ensures the jobs have everything they need to run successfully. -![Migration control panel](/static/images/modernizr/6/stage06-16.png) +![Migration control panel](/static/images/modernizer/6/stage06-16.png) Please notice the workflow needs to run this process 3 times, once for each table. @@ -65,7 +65,7 @@ Finally, the system creates the actual Glue jobs in AWS. Each job is configured - **Resource Allocation**: How much computing power to use - **Error Handling**: What to do if something goes wrong -![Migration control panel](/static/images/modernizr/6/stage06-17.png) +![Migration control panel](/static/images/modernizer/6/stage06-17.png) Remember to approve each job creation when Cline asks - this gives you control over the process and lets you review what's being created. @@ -73,7 +73,7 @@ Remember to approve each job creation when Cline asks - this gives you control o After all jobs are created, you can see them in the AWS Glue console. They should appear as "Ready" and waiting to be executed. -![Migration control panel](/static/images/modernizr/6/stage06-18.png) +![Migration control panel](/static/images/modernizer/6/stage06-18.png) You'll see three jobs corresponding to your three tables: - **Users ETL Job**: Ready to migrate user data @@ -92,7 +92,7 @@ This approach is safe because: - You can validate the DynamoDB data before switching over - If anything goes wrong, your application is unaffected -![Migration control panel](/static/images/modernizr/6/stage06-19.png) +![Migration control panel](/static/images/modernizer/6/stage06-19.png) When you approve the job executions, all three jobs will start running simultaneously, each handling its portion of the data migration. @@ -105,7 +105,7 @@ Once the jobs start, you can watch their progress in the AWS Glue console. You'l - **Processing Speed**: How fast the migration is progressing - **Error Count**: Any issues that need attention -![Migration control panel](/static/images/modernizr/6/stage06-20.png) +![Migration control panel](/static/images/modernizer/6/stage06-20.png) The jobs will process your data in parallel, which means the migration completes faster than if you moved each table one at a time. @@ -113,7 +113,7 @@ The jobs will process your data in parallel, which means the migration completes When all jobs finish successfully, the system will notify you that the migration is complete. -![Migration control panel](/static/images/modernizr/6/stage06-21.png) +![Migration control panel](/static/images/modernizer/6/stage06-21.png) This completion message means: - All your MySQL data has been successfully transformed @@ -127,7 +127,7 @@ This completion message means: The final step is to check that your data actually made it to DynamoDB. Go to the AWS DynamoDB console and look at your tables - they should now contain data. -![Migration control panel](/static/images/modernizr/6/stage06-22.png) +![Migration control panel](/static/images/modernizer/6/stage06-22.png) For each table, verify: - **Item Count**: Should match (approximately) the number of records in your MySQL tables diff --git a/content/modernizr/06-data-movement/etl-05.en.md b/content/modernizer/06-data-movement/etl-05.en.md similarity index 95% rename from content/modernizr/06-data-movement/etl-05.en.md rename to content/modernizer/06-data-movement/etl-05.en.md index 0f02dcc..dd65451 100644 --- a/content/modernizr/06-data-movement/etl-05.en.md +++ b/content/modernizer/06-data-movement/etl-05.en.md @@ -28,7 +28,7 @@ First, we'll give the `admin` user super admin privileges in the MySQL database, Could you please use the MySQL MCP server to update the `admin` user from the Users table and set the attribute `super_admin` to 1? ``` -![Migration control panel](/static/images/modernizr/6/stage06-23.png) +![Migration control panel](/static/images/modernizer/6/stage06-23.png) The MCP server will first retrieve the user information, then apply the update. @@ -40,7 +40,7 @@ Next, we need to make the same change in DynamoDB so both databases have consist Could you please use the DynamoDB MCP server to update the `admin` user from the `Users` table and set the its attribute `super_admin` value to 1? ``` -![Migration control panel](/static/images/modernizr/6/stage06-24.png) +![Migration control panel](/static/images/modernizer/6/stage06-24.png) This ensures that: - Both databases have the same user permissions @@ -83,7 +83,7 @@ Once you're in the admin portal, you'll see the migration control interface with Now that you have access to the control panel, you can take your first step in the controlled migration process. Click the button to enable "Phase 2: Dual Write + MySQL Read". -![Migration control panel](/static/images/modernizr/6/stage06-25.png) +![Migration control panel](/static/images/modernizer/6/stage06-25.png) This phase is the first safe step in your migration because it: - **Keeps Reading from MySQL**: Your application continues to serve data from the reliable MySQL database diff --git a/content/modernizr/06-data-movement/etl-06.en.md b/content/modernizer/06-data-movement/etl-06.en.md similarity index 91% rename from content/modernizr/06-data-movement/etl-06.en.md rename to content/modernizer/06-data-movement/etl-06.en.md index 4092e87..da6c4a5 100644 --- a/content/modernizr/06-data-movement/etl-06.en.md +++ b/content/modernizer/06-data-movement/etl-06.en.md @@ -14,7 +14,7 @@ This is your test flight - you want to see all the systems working together befo When you use the admin portal to toggle feature flags, you're actually calling REST API endpoints that control your application's database behavior. The system logs every phase change so you can track what's happening. -![Migration control panel](/static/images/modernizr/6/stage06-26.png) +![Migration control panel](/static/images/modernizer/6/stage06-26.png) These log messages are crucial for understanding: - **When** changes happen (timestamps for troubleshooting) @@ -34,7 +34,7 @@ This setup lets you control the migration and immediately test the results. While in Phase 2 (dual write + MySQL read), go to the shopping store and add an item to your cart. -![Migration control panel](/static/images/modernizr/6/stage06-27.png) +![Migration control panel](/static/images/modernizer/6/stage06-27.png) What happens behind the scenes: - **Write Operation**: The system writes the cart item to BOTH MySQL and DynamoDB @@ -44,13 +44,13 @@ What happens behind the scenes: Check the MySQL database first. Look at the user views you created earlier - you should see the new cart item for the admin user. -![Migration control panel](/static/images/modernizr/6/stage06-28.png) +![Migration control panel](/static/images/modernizer/6/stage06-28.png) This confirms the MySQL write operation worked correctly, your existing database is still receiving updates and the application can still function normally if you need to roll back. Now check the AWS DynamoDB console. Open the `Users` table and look for the admin user's record - you should see the same cart item there too. -![Migration control panel](/static/images/modernizr/6/stage06-29.png) +![Migration control panel](/static/images/modernizer/6/stage06-29.png) This proves the dual-write system is working correctly, data transformation from MySQL to DynamoDB format is working, both databases now have the same information, you're ready to start reading from DynamoDB. @@ -66,7 +66,7 @@ In Phase 5: Go back to your shopping cart and complete the checkout process for the item you added earlier. -![Migration control panel](/static/images/modernizr/6/stage06-30.png) +![Migration control panel](/static/images/modernizer/6/stage06-30.png) This transaction is critical because it: - **Reads** your cart data from DynamoDB (not MySQL) @@ -80,7 +80,7 @@ Refresh the DynamoDB Users table and look for changes in the admin user's record - **New Order Created**: A new `ORDER#` record has appeared - **Complete Transaction**: The checkout process worked entirely with DynamoDB -![Migration control panel](/static/images/modernizr/6/stage06-31.png) +![Migration control panel](/static/images/modernizer/6/stage06-31.png) This proves that your application can: - Read complex data from DynamoDB correctly @@ -90,7 +90,7 @@ This proves that your application can: Finally, check your MySQL user views. You should NOT see the completed order there, because in Phase 5, the application doesn't write to MySQL anymore. -![Migration control panel](/static/images/modernizr/6/stage06-32.png) +![Migration control panel](/static/images/modernizer/6/stage06-32.png) This confirms the Phase 5 configuration is working correctly, your application is truly running on DynamoDB, MySQL is no longer part of your active system and the migration is functionally complete. diff --git a/content/modernizr/06-data-movement/index.en.md b/content/modernizer/06-data-movement/index.en.md similarity index 99% rename from content/modernizr/06-data-movement/index.en.md rename to content/modernizer/06-data-movement/index.en.md index f4b696a..8a69a3a 100644 --- a/content/modernizr/06-data-movement/index.en.md +++ b/content/modernizer/06-data-movement/index.en.md @@ -108,7 +108,7 @@ Maintain enhanced monitoring during the initial post-migration period to quickly To simplify all of this process we created an Admin portal that allows you to control the migration phases using feature flags. -![Migration control panel](/static/images/modernizr/6/stage06-01.png) +![Migration control panel](/static/images/modernizer/6/stage06-01.png) This process will consist of 3 different actions: diff --git a/content/modernizr/07-conclusion/index.en.md b/content/modernizer/07-conclusion/index.en.md similarity index 100% rename from content/modernizr/07-conclusion/index.en.md rename to content/modernizer/07-conclusion/index.en.md diff --git a/content/modernizr/index.en.md b/content/modernizer/index.en.md similarity index 84% rename from content/modernizr/index.en.md rename to content/modernizer/index.en.md index 4687e18..52d2b49 100644 --- a/content/modernizr/index.en.md +++ b/content/modernizer/index.en.md @@ -10,9 +10,9 @@ In this module, you'll modernize an existing e-commerce application from a tradi The application you'll be working with is an online shopping platform built with an Express.js backend and React frontend, currently running on MySQL. Your goal is to transform this into a cloud-native, serverless architecture while maintaining full functionality and improving performance. -## The Database Modernizr Solution +## The Database Modernizer Solution -This workshop introduces the **Database Modernizr** - an AI-driven workflow that accelerates database modernization projects from traditional 12-18 month timelines to days. Rather than manual code rewriting, you'll leverage generative AI to systematically analyze existing systems and guide the modernization process. +This workshop introduces the **Database Modernizer** - an AI-driven workflow that accelerates database modernization projects from traditional 12-18 month timelines to days. Rather than manual code rewriting, you'll leverage generative AI to systematically analyze existing systems and guide the modernization process. You'll work with multiple AWS MCP (Model Context Protocol) servers that provide specialized capabilities for different aspects of the modernization process. Model Context Protocol is an open standard for endpoints that an AI agent can call to expose functionality from databases, filesystems, or external APIs in a consistent way. These include MySQL analysis, DynamoDB modeling, and data processing tools. Additionally, you'll learn advanced prompt engineering techniques optimized for database design and application refactoring, minimizing the risk of AI hallucinations during the execution of this workflow. diff --git a/static/images/modernizr/0/setup-01.png b/static/images/modernizer/0/setup-01.png similarity index 100% rename from static/images/modernizr/0/setup-01.png rename to static/images/modernizer/0/setup-01.png diff --git a/static/images/modernizr/0/setup-02.png b/static/images/modernizer/0/setup-02.png similarity index 100% rename from static/images/modernizr/0/setup-02.png rename to static/images/modernizer/0/setup-02.png diff --git a/static/images/modernizr/0/setup-03.png b/static/images/modernizer/0/setup-03.png similarity index 100% rename from static/images/modernizr/0/setup-03.png rename to static/images/modernizer/0/setup-03.png diff --git a/static/images/modernizr/0/setup-04.png b/static/images/modernizer/0/setup-04.png similarity index 100% rename from static/images/modernizr/0/setup-04.png rename to static/images/modernizer/0/setup-04.png diff --git a/static/images/modernizr/0/setup-05.png b/static/images/modernizer/0/setup-05.png similarity index 100% rename from static/images/modernizr/0/setup-05.png rename to static/images/modernizer/0/setup-05.png diff --git a/static/images/modernizr/0/setup-06.png b/static/images/modernizer/0/setup-06.png similarity index 100% rename from static/images/modernizr/0/setup-06.png rename to static/images/modernizer/0/setup-06.png diff --git a/static/images/modernizr/0/setup-07.png b/static/images/modernizer/0/setup-07.png similarity index 100% rename from static/images/modernizr/0/setup-07.png rename to static/images/modernizer/0/setup-07.png diff --git a/static/images/modernizr/0/setup-08.png b/static/images/modernizer/0/setup-08.png similarity index 100% rename from static/images/modernizr/0/setup-08.png rename to static/images/modernizer/0/setup-08.png diff --git a/static/images/modernizr/0/setup-09.png b/static/images/modernizer/0/setup-09.png similarity index 100% rename from static/images/modernizr/0/setup-09.png rename to static/images/modernizer/0/setup-09.png diff --git a/static/images/modernizr/0/setup-10.png b/static/images/modernizer/0/setup-10.png similarity index 100% rename from static/images/modernizr/0/setup-10.png rename to static/images/modernizer/0/setup-10.png diff --git a/static/images/modernizr/1/workflow-01.png b/static/images/modernizer/1/workflow-01.png similarity index 100% rename from static/images/modernizr/1/workflow-01.png rename to static/images/modernizer/1/workflow-01.png diff --git a/static/images/modernizr/1/workflow-02.png b/static/images/modernizer/1/workflow-02.png similarity index 100% rename from static/images/modernizr/1/workflow-02.png rename to static/images/modernizer/1/workflow-02.png diff --git a/static/images/modernizr/1/workflow-03.png b/static/images/modernizer/1/workflow-03.png similarity index 100% rename from static/images/modernizr/1/workflow-03.png rename to static/images/modernizer/1/workflow-03.png diff --git a/static/images/modernizr/1/workflow-04.png b/static/images/modernizer/1/workflow-04.png similarity index 100% rename from static/images/modernizr/1/workflow-04.png rename to static/images/modernizer/1/workflow-04.png diff --git a/static/images/modernizr/1/workflow-artifacts-01.png b/static/images/modernizer/1/workflow-artifacts-01.png similarity index 100% rename from static/images/modernizr/1/workflow-artifacts-01.png rename to static/images/modernizer/1/workflow-artifacts-01.png diff --git a/static/images/modernizr/1/workflow-base-01.png b/static/images/modernizer/1/workflow-base-01.png similarity index 100% rename from static/images/modernizr/1/workflow-base-01.png rename to static/images/modernizer/1/workflow-base-01.png diff --git a/static/images/modernizr/1/workflow-prompt-01.png b/static/images/modernizer/1/workflow-prompt-01.png similarity index 100% rename from static/images/modernizr/1/workflow-prompt-01.png rename to static/images/modernizer/1/workflow-prompt-01.png diff --git a/static/images/modernizr/1/workflow-prompt-02.png b/static/images/modernizer/1/workflow-prompt-02.png similarity index 100% rename from static/images/modernizr/1/workflow-prompt-02.png rename to static/images/modernizer/1/workflow-prompt-02.png diff --git a/static/images/modernizr/2/stage02-01.png b/static/images/modernizer/2/stage02-01.png similarity index 100% rename from static/images/modernizr/2/stage02-01.png rename to static/images/modernizer/2/stage02-01.png diff --git a/static/images/modernizr/2/stage02-02.png b/static/images/modernizer/2/stage02-02.png similarity index 100% rename from static/images/modernizr/2/stage02-02.png rename to static/images/modernizer/2/stage02-02.png diff --git a/static/images/modernizr/2/stage02-03.png b/static/images/modernizer/2/stage02-03.png similarity index 100% rename from static/images/modernizr/2/stage02-03.png rename to static/images/modernizer/2/stage02-03.png diff --git a/static/images/modernizr/2/stage02-04.png b/static/images/modernizer/2/stage02-04.png similarity index 100% rename from static/images/modernizr/2/stage02-04.png rename to static/images/modernizer/2/stage02-04.png diff --git a/static/images/modernizr/2/stage02-05.png b/static/images/modernizer/2/stage02-05.png similarity index 100% rename from static/images/modernizr/2/stage02-05.png rename to static/images/modernizer/2/stage02-05.png diff --git a/static/images/modernizr/2/stage02-06.png b/static/images/modernizer/2/stage02-06.png similarity index 100% rename from static/images/modernizr/2/stage02-06.png rename to static/images/modernizer/2/stage02-06.png diff --git a/static/images/modernizr/2/stage02-07.png b/static/images/modernizer/2/stage02-07.png similarity index 100% rename from static/images/modernizr/2/stage02-07.png rename to static/images/modernizer/2/stage02-07.png diff --git a/static/images/modernizr/2/stage02-08.png b/static/images/modernizer/2/stage02-08.png similarity index 100% rename from static/images/modernizr/2/stage02-08.png rename to static/images/modernizer/2/stage02-08.png diff --git a/static/images/modernizr/2/stage02-09.png b/static/images/modernizer/2/stage02-09.png similarity index 100% rename from static/images/modernizr/2/stage02-09.png rename to static/images/modernizer/2/stage02-09.png diff --git a/static/images/modernizr/2/stage02-10.png b/static/images/modernizer/2/stage02-10.png similarity index 100% rename from static/images/modernizr/2/stage02-10.png rename to static/images/modernizer/2/stage02-10.png diff --git a/static/images/modernizr/2/stage02-11.png b/static/images/modernizer/2/stage02-11.png similarity index 100% rename from static/images/modernizr/2/stage02-11.png rename to static/images/modernizer/2/stage02-11.png diff --git a/static/images/modernizr/2/stage02-12.png b/static/images/modernizer/2/stage02-12.png similarity index 100% rename from static/images/modernizr/2/stage02-12.png rename to static/images/modernizer/2/stage02-12.png diff --git a/static/images/modernizr/2/stage02-13.png b/static/images/modernizer/2/stage02-13.png similarity index 100% rename from static/images/modernizr/2/stage02-13.png rename to static/images/modernizer/2/stage02-13.png diff --git a/static/images/modernizr/2/stage02-14.png b/static/images/modernizer/2/stage02-14.png similarity index 100% rename from static/images/modernizr/2/stage02-14.png rename to static/images/modernizer/2/stage02-14.png diff --git a/static/images/modernizr/2/stage02-15.png b/static/images/modernizer/2/stage02-15.png similarity index 100% rename from static/images/modernizr/2/stage02-15.png rename to static/images/modernizer/2/stage02-15.png diff --git a/static/images/modernizr/2/stage02-16.png b/static/images/modernizer/2/stage02-16.png similarity index 100% rename from static/images/modernizr/2/stage02-16.png rename to static/images/modernizer/2/stage02-16.png diff --git a/static/images/modernizr/2/stage02-17.png b/static/images/modernizer/2/stage02-17.png similarity index 100% rename from static/images/modernizr/2/stage02-17.png rename to static/images/modernizer/2/stage02-17.png diff --git a/static/images/modernizr/2/stage02-18.png b/static/images/modernizer/2/stage02-18.png similarity index 100% rename from static/images/modernizr/2/stage02-18.png rename to static/images/modernizer/2/stage02-18.png diff --git a/static/images/modernizr/2/stage02-19.png b/static/images/modernizer/2/stage02-19.png similarity index 100% rename from static/images/modernizr/2/stage02-19.png rename to static/images/modernizer/2/stage02-19.png diff --git a/static/images/modernizr/2/stage02-20.png b/static/images/modernizer/2/stage02-20.png similarity index 100% rename from static/images/modernizr/2/stage02-20.png rename to static/images/modernizer/2/stage02-20.png diff --git a/static/images/modernizr/2/stage02-21.png b/static/images/modernizer/2/stage02-21.png similarity index 100% rename from static/images/modernizr/2/stage02-21.png rename to static/images/modernizer/2/stage02-21.png diff --git a/static/images/modernizr/2/stage02-22.png b/static/images/modernizer/2/stage02-22.png similarity index 100% rename from static/images/modernizr/2/stage02-22.png rename to static/images/modernizer/2/stage02-22.png diff --git a/static/images/modernizr/2/stage02-23.png b/static/images/modernizer/2/stage02-23.png similarity index 100% rename from static/images/modernizr/2/stage02-23.png rename to static/images/modernizer/2/stage02-23.png diff --git a/static/images/modernizr/6/stage06-01.png b/static/images/modernizer/6/stage06-01.png similarity index 100% rename from static/images/modernizr/6/stage06-01.png rename to static/images/modernizer/6/stage06-01.png diff --git a/static/images/modernizr/6/stage06-02.png b/static/images/modernizer/6/stage06-02.png similarity index 100% rename from static/images/modernizr/6/stage06-02.png rename to static/images/modernizer/6/stage06-02.png diff --git a/static/images/modernizr/6/stage06-03.png b/static/images/modernizer/6/stage06-03.png similarity index 100% rename from static/images/modernizr/6/stage06-03.png rename to static/images/modernizer/6/stage06-03.png diff --git a/static/images/modernizr/6/stage06-04.png b/static/images/modernizer/6/stage06-04.png similarity index 100% rename from static/images/modernizr/6/stage06-04.png rename to static/images/modernizer/6/stage06-04.png diff --git a/static/images/modernizr/6/stage06-05.png b/static/images/modernizer/6/stage06-05.png similarity index 100% rename from static/images/modernizr/6/stage06-05.png rename to static/images/modernizer/6/stage06-05.png diff --git a/static/images/modernizr/6/stage06-06.png b/static/images/modernizer/6/stage06-06.png similarity index 100% rename from static/images/modernizr/6/stage06-06.png rename to static/images/modernizer/6/stage06-06.png diff --git a/static/images/modernizr/6/stage06-07.png b/static/images/modernizer/6/stage06-07.png similarity index 100% rename from static/images/modernizr/6/stage06-07.png rename to static/images/modernizer/6/stage06-07.png diff --git a/static/images/modernizr/6/stage06-08.png b/static/images/modernizer/6/stage06-08.png similarity index 100% rename from static/images/modernizr/6/stage06-08.png rename to static/images/modernizer/6/stage06-08.png diff --git a/static/images/modernizr/6/stage06-09.png b/static/images/modernizer/6/stage06-09.png similarity index 100% rename from static/images/modernizr/6/stage06-09.png rename to static/images/modernizer/6/stage06-09.png diff --git a/static/images/modernizr/6/stage06-10.png b/static/images/modernizer/6/stage06-10.png similarity index 100% rename from static/images/modernizr/6/stage06-10.png rename to static/images/modernizer/6/stage06-10.png diff --git a/static/images/modernizr/6/stage06-11.png b/static/images/modernizer/6/stage06-11.png similarity index 100% rename from static/images/modernizr/6/stage06-11.png rename to static/images/modernizer/6/stage06-11.png diff --git a/static/images/modernizr/6/stage06-12.png b/static/images/modernizer/6/stage06-12.png similarity index 100% rename from static/images/modernizr/6/stage06-12.png rename to static/images/modernizer/6/stage06-12.png diff --git a/static/images/modernizr/6/stage06-13.png b/static/images/modernizer/6/stage06-13.png similarity index 100% rename from static/images/modernizr/6/stage06-13.png rename to static/images/modernizer/6/stage06-13.png diff --git a/static/images/modernizr/6/stage06-14.png b/static/images/modernizer/6/stage06-14.png similarity index 100% rename from static/images/modernizr/6/stage06-14.png rename to static/images/modernizer/6/stage06-14.png diff --git a/static/images/modernizr/6/stage06-15.png b/static/images/modernizer/6/stage06-15.png similarity index 100% rename from static/images/modernizr/6/stage06-15.png rename to static/images/modernizer/6/stage06-15.png diff --git a/static/images/modernizr/6/stage06-16.png b/static/images/modernizer/6/stage06-16.png similarity index 100% rename from static/images/modernizr/6/stage06-16.png rename to static/images/modernizer/6/stage06-16.png diff --git a/static/images/modernizr/6/stage06-17.png b/static/images/modernizer/6/stage06-17.png similarity index 100% rename from static/images/modernizr/6/stage06-17.png rename to static/images/modernizer/6/stage06-17.png diff --git a/static/images/modernizr/6/stage06-18.png b/static/images/modernizer/6/stage06-18.png similarity index 100% rename from static/images/modernizr/6/stage06-18.png rename to static/images/modernizer/6/stage06-18.png diff --git a/static/images/modernizr/6/stage06-19.png b/static/images/modernizer/6/stage06-19.png similarity index 100% rename from static/images/modernizr/6/stage06-19.png rename to static/images/modernizer/6/stage06-19.png diff --git a/static/images/modernizr/6/stage06-20.png b/static/images/modernizer/6/stage06-20.png similarity index 100% rename from static/images/modernizr/6/stage06-20.png rename to static/images/modernizer/6/stage06-20.png diff --git a/static/images/modernizr/6/stage06-21.png b/static/images/modernizer/6/stage06-21.png similarity index 100% rename from static/images/modernizr/6/stage06-21.png rename to static/images/modernizer/6/stage06-21.png diff --git a/static/images/modernizr/6/stage06-22.png b/static/images/modernizer/6/stage06-22.png similarity index 100% rename from static/images/modernizr/6/stage06-22.png rename to static/images/modernizer/6/stage06-22.png diff --git a/static/images/modernizr/6/stage06-23.png b/static/images/modernizer/6/stage06-23.png similarity index 100% rename from static/images/modernizr/6/stage06-23.png rename to static/images/modernizer/6/stage06-23.png diff --git a/static/images/modernizr/6/stage06-24.png b/static/images/modernizer/6/stage06-24.png similarity index 100% rename from static/images/modernizr/6/stage06-24.png rename to static/images/modernizer/6/stage06-24.png diff --git a/static/images/modernizr/6/stage06-25.png b/static/images/modernizer/6/stage06-25.png similarity index 100% rename from static/images/modernizr/6/stage06-25.png rename to static/images/modernizer/6/stage06-25.png diff --git a/static/images/modernizr/6/stage06-26.png b/static/images/modernizer/6/stage06-26.png similarity index 100% rename from static/images/modernizr/6/stage06-26.png rename to static/images/modernizer/6/stage06-26.png diff --git a/static/images/modernizr/6/stage06-27.png b/static/images/modernizer/6/stage06-27.png similarity index 100% rename from static/images/modernizr/6/stage06-27.png rename to static/images/modernizer/6/stage06-27.png diff --git a/static/images/modernizr/6/stage06-28.png b/static/images/modernizer/6/stage06-28.png similarity index 100% rename from static/images/modernizr/6/stage06-28.png rename to static/images/modernizer/6/stage06-28.png diff --git a/static/images/modernizr/6/stage06-29.png b/static/images/modernizer/6/stage06-29.png similarity index 100% rename from static/images/modernizr/6/stage06-29.png rename to static/images/modernizer/6/stage06-29.png diff --git a/static/images/modernizr/6/stage06-30.png b/static/images/modernizer/6/stage06-30.png similarity index 100% rename from static/images/modernizr/6/stage06-30.png rename to static/images/modernizer/6/stage06-30.png diff --git a/static/images/modernizr/6/stage06-31.png b/static/images/modernizer/6/stage06-31.png similarity index 100% rename from static/images/modernizr/6/stage06-31.png rename to static/images/modernizer/6/stage06-31.png diff --git a/static/images/modernizr/6/stage06-32.png b/static/images/modernizer/6/stage06-32.png similarity index 100% rename from static/images/modernizr/6/stage06-32.png rename to static/images/modernizer/6/stage06-32.png