diff --git a/workshops/modernizr/README.md b/workshops/modernizer/README.md similarity index 99% rename from workshops/modernizr/README.md rename to workshops/modernizer/README.md index cccb9a94..cd4e22b0 100644 --- a/workshops/modernizr/README.md +++ b/workshops/modernizer/README.md @@ -2,7 +2,7 @@ A modern, full-stack e-commerce platform built with Node.js/TypeScript backend and React/TypeScript frontend. This application demonstrates enterprise-grade development practices with comprehensive testing, security, performance monitoring, and load testing capabilities. -## 🚀 Database Modernizr Workflow +## 🚀 Database Modernizer Workflow > **⚠️ IMPORTANT: Before running any modernization commands, you MUST complete the prerequisites and setup steps!** > diff --git a/workshops/modernizr/artifacts/stage-01/01_1_API_access_patterns.md b/workshops/modernizer/artifacts/stage-01/01_1_API_access_patterns.md similarity index 100% rename from workshops/modernizr/artifacts/stage-01/01_1_API_access_patterns.md rename to workshops/modernizer/artifacts/stage-01/01_1_API_access_patterns.md diff --git a/workshops/modernizr/artifacts/stage-01/01_2_mysql_log_analysis.md b/workshops/modernizer/artifacts/stage-01/01_2_mysql_log_analysis.md similarity index 100% rename from workshops/modernizr/artifacts/stage-01/01_2_mysql_log_analysis.md rename to workshops/modernizer/artifacts/stage-01/01_2_mysql_log_analysis.md diff --git a/workshops/modernizr/artifacts/stage-01/01_3_table_structure_analysis.md b/workshops/modernizer/artifacts/stage-01/01_3_table_structure_analysis.md similarity index 100% rename from workshops/modernizr/artifacts/stage-01/01_3_table_structure_analysis.md rename to workshops/modernizer/artifacts/stage-01/01_3_table_structure_analysis.md diff --git a/workshops/modernizr/artifacts/stage-01/01_working_log.md b/workshops/modernizer/artifacts/stage-01/01_working_log.md similarity index 100% rename from workshops/modernizr/artifacts/stage-01/01_working_log.md rename to workshops/modernizer/artifacts/stage-01/01_working_log.md diff --git a/workshops/modernizr/artifacts/stage-03/03_1_backend_analysis.md b/workshops/modernizer/artifacts/stage-03/03_1_backend_analysis.md similarity index 100% rename from workshops/modernizr/artifacts/stage-03/03_1_backend_analysis.md rename to workshops/modernizer/artifacts/stage-03/03_1_backend_analysis.md diff --git a/workshops/modernizr/artifacts/stage-03/03_2_data_access_analysis.md b/workshops/modernizer/artifacts/stage-03/03_2_data_access_analysis.md similarity index 100% rename from workshops/modernizr/artifacts/stage-03/03_2_data_access_analysis.md rename to workshops/modernizer/artifacts/stage-03/03_2_data_access_analysis.md diff --git a/workshops/modernizr/artifacts/stage-03/03_3_dal_requirements.md b/workshops/modernizer/artifacts/stage-03/03_3_dal_requirements.md similarity index 100% rename from workshops/modernizr/artifacts/stage-03/03_3_dal_requirements.md rename to workshops/modernizer/artifacts/stage-03/03_3_dal_requirements.md diff --git a/workshops/modernizr/artifacts/stage-03/03_4_dal_design.md b/workshops/modernizer/artifacts/stage-03/03_4_dal_design.md similarity index 100% rename from workshops/modernizr/artifacts/stage-03/03_4_dal_design.md rename to workshops/modernizer/artifacts/stage-03/03_4_dal_design.md diff --git a/workshops/modernizr/artifacts/stage-03/03_6_validation_results.md b/workshops/modernizer/artifacts/stage-03/03_6_validation_results.md similarity index 100% rename from workshops/modernizr/artifacts/stage-03/03_6_validation_results.md rename to workshops/modernizer/artifacts/stage-03/03_6_validation_results.md diff --git a/workshops/modernizr/artifacts/stage-03/03_7_stage04_handoff.md b/workshops/modernizer/artifacts/stage-03/03_7_stage04_handoff.md similarity index 100% rename from workshops/modernizr/artifacts/stage-03/03_7_stage04_handoff.md rename to workshops/modernizer/artifacts/stage-03/03_7_stage04_handoff.md diff --git a/workshops/modernizr/artifacts/stage-03/03_working_log.md b/workshops/modernizer/artifacts/stage-03/03_working_log.md similarity index 100% rename from workshops/modernizr/artifacts/stage-03/03_working_log.md rename to workshops/modernizer/artifacts/stage-03/03_working_log.md diff --git a/workshops/modernizr/artifacts/stage-04/04_1_implementation_plan.md b/workshops/modernizer/artifacts/stage-04/04_1_implementation_plan.md similarity index 100% rename from workshops/modernizr/artifacts/stage-04/04_1_implementation_plan.md rename to workshops/modernizer/artifacts/stage-04/04_1_implementation_plan.md diff --git a/workshops/modernizr/artifacts/stage-04/04_working_log.md b/workshops/modernizer/artifacts/stage-04/04_working_log.md similarity index 100% rename from workshops/modernizr/artifacts/stage-04/04_working_log.md rename to workshops/modernizer/artifacts/stage-04/04_working_log.md diff --git a/workshops/modernizr/artifacts/stage-04/06_1_implementation_documentation.md b/workshops/modernizer/artifacts/stage-04/06_1_implementation_documentation.md similarity index 100% rename from workshops/modernizr/artifacts/stage-04/06_1_implementation_documentation.md rename to workshops/modernizer/artifacts/stage-04/06_1_implementation_documentation.md diff --git a/workshops/modernizr/artifacts/stage-05/02_1_dual_write_entities.md b/workshops/modernizer/artifacts/stage-05/02_1_dual_write_entities.md similarity index 100% rename from workshops/modernizr/artifacts/stage-05/02_1_dual_write_entities.md rename to workshops/modernizer/artifacts/stage-05/02_1_dual_write_entities.md diff --git a/workshops/modernizr/artifacts/stage-05/05_working_log.md b/workshops/modernizer/artifacts/stage-05/05_working_log.md similarity index 100% rename from workshops/modernizr/artifacts/stage-05/05_working_log.md rename to workshops/modernizer/artifacts/stage-05/05_working_log.md diff --git a/workshops/modernizr/artifacts/stage-05/migration-user-guide.md b/workshops/modernizer/artifacts/stage-05/migration-user-guide.md similarity index 100% rename from workshops/modernizr/artifacts/stage-05/migration-user-guide.md rename to workshops/modernizer/artifacts/stage-05/migration-user-guide.md diff --git a/workshops/modernizr/backend/.env b/workshops/modernizer/backend/.env similarity index 100% rename from workshops/modernizr/backend/.env rename to workshops/modernizer/backend/.env diff --git a/workshops/modernizr/backend/.env.example b/workshops/modernizer/backend/.env.example similarity index 100% rename from workshops/modernizr/backend/.env.example rename to workshops/modernizer/backend/.env.example diff --git a/workshops/modernizr/backend/.env.test b/workshops/modernizer/backend/.env.test similarity index 100% rename from workshops/modernizr/backend/.env.test rename to workshops/modernizer/backend/.env.test diff --git a/workshops/modernizr/backend/.env.test.e2e b/workshops/modernizer/backend/.env.test.e2e similarity index 100% rename from workshops/modernizr/backend/.env.test.e2e rename to workshops/modernizer/backend/.env.test.e2e diff --git a/workshops/modernizr/backend/.env.test.integration b/workshops/modernizer/backend/.env.test.integration similarity index 100% rename from workshops/modernizr/backend/.env.test.integration rename to workshops/modernizer/backend/.env.test.integration diff --git a/workshops/modernizr/backend/.env.test.unit b/workshops/modernizer/backend/.env.test.unit similarity index 100% rename from workshops/modernizr/backend/.env.test.unit rename to workshops/modernizer/backend/.env.test.unit diff --git a/workshops/modernizr/backend/README.md b/workshops/modernizer/backend/README.md similarity index 100% rename from workshops/modernizr/backend/README.md rename to workshops/modernizer/backend/README.md diff --git a/workshops/modernizr/backend/debug-table-prefix.js b/workshops/modernizer/backend/debug-table-prefix.js similarity index 100% rename from workshops/modernizr/backend/debug-table-prefix.js rename to workshops/modernizer/backend/debug-table-prefix.js diff --git a/workshops/modernizr/backend/docs/README.md b/workshops/modernizer/backend/docs/README.md similarity index 100% rename from workshops/modernizr/backend/docs/README.md rename to workshops/modernizer/backend/docs/README.md diff --git a/workshops/modernizr/backend/docs/TESTING.md b/workshops/modernizer/backend/docs/TESTING.md similarity index 100% rename from workshops/modernizr/backend/docs/TESTING.md rename to workshops/modernizer/backend/docs/TESTING.md diff --git a/workshops/modernizr/backend/docs/TESTING_BEST_PRACTICES.md b/workshops/modernizer/backend/docs/TESTING_BEST_PRACTICES.md similarity index 100% rename from workshops/modernizr/backend/docs/TESTING_BEST_PRACTICES.md rename to workshops/modernizer/backend/docs/TESTING_BEST_PRACTICES.md diff --git a/workshops/modernizr/backend/docs/TESTING_QUICK_REFERENCE.md b/workshops/modernizer/backend/docs/TESTING_QUICK_REFERENCE.md similarity index 100% rename from workshops/modernizr/backend/docs/TESTING_QUICK_REFERENCE.md rename to workshops/modernizer/backend/docs/TESTING_QUICK_REFERENCE.md diff --git a/workshops/modernizr/backend/docs/dynamodb-local-setup.md b/workshops/modernizer/backend/docs/dynamodb-local-setup.md similarity index 100% rename from workshops/modernizr/backend/docs/dynamodb-local-setup.md rename to workshops/modernizer/backend/docs/dynamodb-local-setup.md diff --git a/workshops/modernizr/backend/docs/e2e-test-troubleshooting-guide.md b/workshops/modernizer/backend/docs/e2e-test-troubleshooting-guide.md similarity index 100% rename from workshops/modernizr/backend/docs/e2e-test-troubleshooting-guide.md rename to workshops/modernizer/backend/docs/e2e-test-troubleshooting-guide.md diff --git a/workshops/modernizr/backend/docs/test-reporting-guide.md b/workshops/modernizer/backend/docs/test-reporting-guide.md similarity index 100% rename from workshops/modernizr/backend/docs/test-reporting-guide.md rename to workshops/modernizer/backend/docs/test-reporting-guide.md diff --git a/workshops/modernizr/backend/docs/test-reporting-implementation-summary.md b/workshops/modernizer/backend/docs/test-reporting-implementation-summary.md similarity index 100% rename from workshops/modernizr/backend/docs/test-reporting-implementation-summary.md rename to workshops/modernizer/backend/docs/test-reporting-implementation-summary.md diff --git a/workshops/modernizr/backend/docs/test-templates/e2e-test-template.ts b/workshops/modernizer/backend/docs/test-templates/e2e-test-template.ts similarity index 100% rename from workshops/modernizr/backend/docs/test-templates/e2e-test-template.ts rename to workshops/modernizer/backend/docs/test-templates/e2e-test-template.ts diff --git a/workshops/modernizr/backend/docs/test-templates/integration-test-template.ts b/workshops/modernizer/backend/docs/test-templates/integration-test-template.ts similarity index 100% rename from workshops/modernizr/backend/docs/test-templates/integration-test-template.ts rename to workshops/modernizer/backend/docs/test-templates/integration-test-template.ts diff --git a/workshops/modernizr/backend/docs/test-templates/unit-test-template.ts b/workshops/modernizer/backend/docs/test-templates/unit-test-template.ts similarity index 100% rename from workshops/modernizr/backend/docs/test-templates/unit-test-template.ts rename to workshops/modernizer/backend/docs/test-templates/unit-test-template.ts diff --git a/workshops/modernizr/backend/eslint.config.js b/workshops/modernizer/backend/eslint.config.js similarity index 100% rename from workshops/modernizr/backend/eslint.config.js rename to workshops/modernizer/backend/eslint.config.js diff --git a/workshops/modernizr/backend/package.json b/workshops/modernizer/backend/package.json similarity index 100% rename from workshops/modernizr/backend/package.json rename to workshops/modernizer/backend/package.json diff --git a/workshops/modernizr/backend/scripts/setup-dynamodb-local.js b/workshops/modernizer/backend/scripts/setup-dynamodb-local.js similarity index 100% rename from workshops/modernizr/backend/scripts/setup-dynamodb-local.js rename to workshops/modernizer/backend/scripts/setup-dynamodb-local.js diff --git a/workshops/modernizr/backend/scripts/setup-dynamodb-local.sh b/workshops/modernizer/backend/scripts/setup-dynamodb-local.sh similarity index 100% rename from workshops/modernizr/backend/scripts/setup-dynamodb-local.sh rename to workshops/modernizer/backend/scripts/setup-dynamodb-local.sh diff --git a/workshops/modernizr/backend/scripts/setup-dynamodb-tables.js b/workshops/modernizer/backend/scripts/setup-dynamodb-tables.js similarity index 100% rename from workshops/modernizr/backend/scripts/setup-dynamodb-tables.js rename to workshops/modernizer/backend/scripts/setup-dynamodb-tables.js diff --git a/workshops/modernizr/backend/src/__tests__/README.md b/workshops/modernizer/backend/src/__tests__/README.md similarity index 100% rename from workshops/modernizr/backend/src/__tests__/README.md rename to workshops/modernizer/backend/src/__tests__/README.md diff --git a/workshops/modernizr/backend/src/__tests__/e2e/auth/authentication-workflow.test.ts b/workshops/modernizer/backend/src/__tests__/e2e/auth/authentication-workflow.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/e2e/auth/authentication-workflow.test.ts rename to workshops/modernizer/backend/src/__tests__/e2e/auth/authentication-workflow.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/e2e/config/environment.test.ts b/workshops/modernizer/backend/src/__tests__/e2e/config/environment.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/e2e/config/environment.test.ts rename to workshops/modernizer/backend/src/__tests__/e2e/config/environment.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/e2e/orders/shopping-workflow.test.ts b/workshops/modernizer/backend/src/__tests__/e2e/orders/shopping-workflow.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/e2e/orders/shopping-workflow.test.ts rename to workshops/modernizer/backend/src/__tests__/e2e/orders/shopping-workflow.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/e2e/products/product-management-workflow.test.ts b/workshops/modernizer/backend/src/__tests__/e2e/products/product-management-workflow.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/e2e/products/product-management-workflow.test.ts rename to workshops/modernizer/backend/src/__tests__/e2e/products/product-management-workflow.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/e2e/security/security-features.test.ts b/workshops/modernizer/backend/src/__tests__/e2e/security/security-features.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/e2e/security/security-features.test.ts rename to workshops/modernizer/backend/src/__tests__/e2e/security/security-features.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/integration/api/health.test.ts b/workshops/modernizer/backend/src/__tests__/integration/api/health.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/integration/api/health.test.ts rename to workshops/modernizer/backend/src/__tests__/integration/api/health.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/integration/config/environment.test.ts b/workshops/modernizer/backend/src/__tests__/integration/config/environment.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/integration/config/environment.test.ts rename to workshops/modernizer/backend/src/__tests__/integration/config/environment.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/integration/database/MigrationPhasesIntegration.test.ts b/workshops/modernizer/backend/src/__tests__/integration/database/MigrationPhasesIntegration.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/integration/database/MigrationPhasesIntegration.test.ts rename to workshops/modernizer/backend/src/__tests__/integration/database/MigrationPhasesIntegration.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/integration/database/connection.test.ts b/workshops/modernizer/backend/src/__tests__/integration/database/connection.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/integration/database/connection.test.ts rename to workshops/modernizer/backend/src/__tests__/integration/database/connection.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/integration/database/implementations/dynamodb/DynamoDBCategoryRepository.integration.test.ts b/workshops/modernizer/backend/src/__tests__/integration/database/implementations/dynamodb/DynamoDBCategoryRepository.integration.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/integration/database/implementations/dynamodb/DynamoDBCategoryRepository.integration.test.ts rename to workshops/modernizer/backend/src/__tests__/integration/database/implementations/dynamodb/DynamoDBCategoryRepository.integration.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/integration/database/implementations/dynamodb/DynamoDBOrderRepository.integration.test.ts b/workshops/modernizer/backend/src/__tests__/integration/database/implementations/dynamodb/DynamoDBOrderRepository.integration.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/integration/database/implementations/dynamodb/DynamoDBOrderRepository.integration.test.ts rename to workshops/modernizer/backend/src/__tests__/integration/database/implementations/dynamodb/DynamoDBOrderRepository.integration.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/integration/database/implementations/dynamodb/DynamoDBProductRepository.integration.test.ts b/workshops/modernizer/backend/src/__tests__/integration/database/implementations/dynamodb/DynamoDBProductRepository.integration.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/integration/database/implementations/dynamodb/DynamoDBProductRepository.integration.test.ts rename to workshops/modernizer/backend/src/__tests__/integration/database/implementations/dynamodb/DynamoDBProductRepository.integration.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/integration/database/implementations/dynamodb/DynamoDBUserRepository.integration.test.ts b/workshops/modernizer/backend/src/__tests__/integration/database/implementations/dynamodb/DynamoDBUserRepository.integration.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/integration/database/implementations/dynamodb/DynamoDBUserRepository.integration.test.ts rename to workshops/modernizer/backend/src/__tests__/integration/database/implementations/dynamodb/DynamoDBUserRepository.integration.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/integration/services/AuthService.test.ts b/workshops/modernizer/backend/src/__tests__/integration/services/AuthService.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/integration/services/AuthService.test.ts rename to workshops/modernizer/backend/src/__tests__/integration/services/AuthService.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/__mocks__/dynamodb-mocks.ts b/workshops/modernizer/backend/src/__tests__/unit/__mocks__/dynamodb-mocks.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/__mocks__/dynamodb-mocks.ts rename to workshops/modernizer/backend/src/__tests__/unit/__mocks__/dynamodb-mocks.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/config/environment.test.ts b/workshops/modernizer/backend/src/__tests__/unit/config/environment.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/config/environment.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/config/environment.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/database/config/DatabaseConfig.test.ts b/workshops/modernizer/backend/src/__tests__/unit/database/config/DatabaseConfig.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/database/config/DatabaseConfig.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/database/config/DatabaseConfig.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/database/factory/DatabaseFactory.test.ts b/workshops/modernizer/backend/src/__tests__/unit/database/factory/DatabaseFactory.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/database/factory/DatabaseFactory.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/database/factory/DatabaseFactory.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/database/factory/DatabaseFactoryFeatureFlags.test.ts b/workshops/modernizer/backend/src/__tests__/unit/database/factory/DatabaseFactoryFeatureFlags.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/database/factory/DatabaseFactoryFeatureFlags.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/database/factory/DatabaseFactoryFeatureFlags.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/database/implementations/dynamodb/DynamoDBCategoryRepository.unit.test.ts b/workshops/modernizer/backend/src/__tests__/unit/database/implementations/dynamodb/DynamoDBCategoryRepository.unit.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/database/implementations/dynamodb/DynamoDBCategoryRepository.unit.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/database/implementations/dynamodb/DynamoDBCategoryRepository.unit.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/database/implementations/dynamodb/DynamoDBOrderRepository.unit.test.ts b/workshops/modernizer/backend/src/__tests__/unit/database/implementations/dynamodb/DynamoDBOrderRepository.unit.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/database/implementations/dynamodb/DynamoDBOrderRepository.unit.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/database/implementations/dynamodb/DynamoDBOrderRepository.unit.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/database/implementations/dynamodb/DynamoDBProductRepository.unit.test.ts b/workshops/modernizer/backend/src/__tests__/unit/database/implementations/dynamodb/DynamoDBProductRepository.unit.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/database/implementations/dynamodb/DynamoDBProductRepository.unit.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/database/implementations/dynamodb/DynamoDBProductRepository.unit.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/database/implementations/dynamodb/DynamoDBShoppingCartRepository.unit.test.ts b/workshops/modernizer/backend/src/__tests__/unit/database/implementations/dynamodb/DynamoDBShoppingCartRepository.unit.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/database/implementations/dynamodb/DynamoDBShoppingCartRepository.unit.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/database/implementations/dynamodb/DynamoDBShoppingCartRepository.unit.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/database/implementations/dynamodb/DynamoDBUserRepository.unit.test.ts b/workshops/modernizer/backend/src/__tests__/unit/database/implementations/dynamodb/DynamoDBUserRepository.unit.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/database/implementations/dynamodb/DynamoDBUserRepository.unit.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/database/implementations/dynamodb/DynamoDBUserRepository.unit.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/database/implementations/mysql/MySQLCategoryRepository.test.ts b/workshops/modernizer/backend/src/__tests__/unit/database/implementations/mysql/MySQLCategoryRepository.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/database/implementations/mysql/MySQLCategoryRepository.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/database/implementations/mysql/MySQLCategoryRepository.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/database/implementations/mysql/MySQLOrderRepository.test.ts b/workshops/modernizer/backend/src/__tests__/unit/database/implementations/mysql/MySQLOrderRepository.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/database/implementations/mysql/MySQLOrderRepository.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/database/implementations/mysql/MySQLOrderRepository.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/database/implementations/mysql/MySQLProductRepository.test.ts b/workshops/modernizer/backend/src/__tests__/unit/database/implementations/mysql/MySQLProductRepository.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/database/implementations/mysql/MySQLProductRepository.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/database/implementations/mysql/MySQLProductRepository.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/database/implementations/mysql/MySQLShoppingCartRepository.test.ts b/workshops/modernizer/backend/src/__tests__/unit/database/implementations/mysql/MySQLShoppingCartRepository.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/database/implementations/mysql/MySQLShoppingCartRepository.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/database/implementations/mysql/MySQLShoppingCartRepository.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/database/implementations/mysql/MySQLUserRepository.test.ts b/workshops/modernizer/backend/src/__tests__/unit/database/implementations/mysql/MySQLUserRepository.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/database/implementations/mysql/MySQLUserRepository.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/database/implementations/mysql/MySQLUserRepository.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/database/wrappers/CartDualWriteWrapper.test.ts b/workshops/modernizer/backend/src/__tests__/unit/database/wrappers/CartDualWriteWrapper.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/database/wrappers/CartDualWriteWrapper.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/database/wrappers/CartDualWriteWrapper.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/database/wrappers/CategoryDualWriteWrapper.test.ts b/workshops/modernizer/backend/src/__tests__/unit/database/wrappers/CategoryDualWriteWrapper.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/database/wrappers/CategoryDualWriteWrapper.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/database/wrappers/CategoryDualWriteWrapper.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/database/wrappers/DualReadErrorHandler.test.ts b/workshops/modernizer/backend/src/__tests__/unit/database/wrappers/DualReadErrorHandler.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/database/wrappers/DualReadErrorHandler.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/database/wrappers/DualReadErrorHandler.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/database/wrappers/DualReadValidationComprehensive.test.ts b/workshops/modernizer/backend/src/__tests__/unit/database/wrappers/DualReadValidationComprehensive.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/database/wrappers/DualReadValidationComprehensive.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/database/wrappers/DualReadValidationComprehensive.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/database/wrappers/DualReadWrapper.test.ts b/workshops/modernizer/backend/src/__tests__/unit/database/wrappers/DualReadWrapper.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/database/wrappers/DualReadWrapper.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/database/wrappers/DualReadWrapper.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/database/wrappers/DualWriteIntegration.test.ts b/workshops/modernizer/backend/src/__tests__/unit/database/wrappers/DualWriteIntegration.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/database/wrappers/DualWriteIntegration.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/database/wrappers/DualWriteIntegration.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/database/wrappers/DualWriteValidation.test.ts b/workshops/modernizer/backend/src/__tests__/unit/database/wrappers/DualWriteValidation.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/database/wrappers/DualWriteValidation.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/database/wrappers/DualWriteValidation.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/database/wrappers/DualWriteWrapper.test.ts b/workshops/modernizer/backend/src/__tests__/unit/database/wrappers/DualWriteWrapper.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/database/wrappers/DualWriteWrapper.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/database/wrappers/DualWriteWrapper.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/database/wrappers/MigrationPhases.test.ts b/workshops/modernizer/backend/src/__tests__/unit/database/wrappers/MigrationPhases.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/database/wrappers/MigrationPhases.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/database/wrappers/MigrationPhases.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/database/wrappers/OrderDualWriteWrapper.test.ts b/workshops/modernizer/backend/src/__tests__/unit/database/wrappers/OrderDualWriteWrapper.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/database/wrappers/OrderDualWriteWrapper.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/database/wrappers/OrderDualWriteWrapper.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/database/wrappers/ProductDualWriteWrapper.test.ts b/workshops/modernizer/backend/src/__tests__/unit/database/wrappers/ProductDualWriteWrapper.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/database/wrappers/ProductDualWriteWrapper.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/database/wrappers/ProductDualWriteWrapper.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/database/wrappers/UserDualReadWrapper.test.ts b/workshops/modernizer/backend/src/__tests__/unit/database/wrappers/UserDualReadWrapper.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/database/wrappers/UserDualReadWrapper.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/database/wrappers/UserDualReadWrapper.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/database/wrappers/UserDualWriteWrapper.test.ts b/workshops/modernizer/backend/src/__tests__/unit/database/wrappers/UserDualWriteWrapper.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/database/wrappers/UserDualWriteWrapper.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/database/wrappers/UserDualWriteWrapper.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/middleware/auth.test.ts b/workshops/modernizer/backend/src/__tests__/unit/middleware/auth.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/middleware/auth.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/middleware/auth.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/middleware/seller.test.ts b/workshops/modernizer/backend/src/__tests__/unit/middleware/seller.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/middleware/seller.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/middleware/seller.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/models/Category.test.ts b/workshops/modernizer/backend/src/__tests__/unit/models/Category.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/models/Category.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/models/Category.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/models/Order.test.ts b/workshops/modernizer/backend/src/__tests__/unit/models/Order.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/models/Order.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/models/Order.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/models/Product.test.ts b/workshops/modernizer/backend/src/__tests__/unit/models/Product.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/models/Product.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/models/Product.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/models/ShoppingCart.test.ts b/workshops/modernizer/backend/src/__tests__/unit/models/ShoppingCart.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/models/ShoppingCart.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/models/ShoppingCart.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/repositories/CategoryRepository.test.ts b/workshops/modernizer/backend/src/__tests__/unit/repositories/CategoryRepository.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/repositories/CategoryRepository.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/repositories/CategoryRepository.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/repositories/ProductRepository.test.ts b/workshops/modernizer/backend/src/__tests__/unit/repositories/ProductRepository.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/repositories/ProductRepository.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/repositories/ProductRepository.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/repositories/ShoppingCartRepository.test.ts b/workshops/modernizer/backend/src/__tests__/unit/repositories/ShoppingCartRepository.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/repositories/ShoppingCartRepository.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/repositories/ShoppingCartRepository.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/repositories/UserRepository.test.ts b/workshops/modernizer/backend/src/__tests__/unit/repositories/UserRepository.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/repositories/UserRepository.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/repositories/UserRepository.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/services/AuthService.test.ts b/workshops/modernizer/backend/src/__tests__/unit/services/AuthService.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/services/AuthService.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/services/AuthService.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/services/CategoryService.test.ts b/workshops/modernizer/backend/src/__tests__/unit/services/CategoryService.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/services/CategoryService.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/services/CategoryService.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/services/FeatureFlagService.test.ts b/workshops/modernizer/backend/src/__tests__/unit/services/FeatureFlagService.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/services/FeatureFlagService.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/services/FeatureFlagService.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/services/PaymentService.test.ts b/workshops/modernizer/backend/src/__tests__/unit/services/PaymentService.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/services/PaymentService.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/services/PaymentService.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/services/ProductService.test.ts b/workshops/modernizer/backend/src/__tests__/unit/services/ProductService.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/services/ProductService.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/services/ProductService.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/services/ShoppingCartService.test.ts b/workshops/modernizer/backend/src/__tests__/unit/services/ShoppingCartService.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/services/ShoppingCartService.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/services/ShoppingCartService.test.ts diff --git a/workshops/modernizr/backend/src/__tests__/unit/utils/performanceMonitor.test.ts b/workshops/modernizer/backend/src/__tests__/unit/utils/performanceMonitor.test.ts similarity index 100% rename from workshops/modernizr/backend/src/__tests__/unit/utils/performanceMonitor.test.ts rename to workshops/modernizer/backend/src/__tests__/unit/utils/performanceMonitor.test.ts diff --git a/workshops/modernizr/backend/src/app.ts b/workshops/modernizer/backend/src/app.ts similarity index 100% rename from workshops/modernizr/backend/src/app.ts rename to workshops/modernizer/backend/src/app.ts diff --git a/workshops/modernizr/backend/src/config/database.ts b/workshops/modernizer/backend/src/config/database.ts similarity index 100% rename from workshops/modernizr/backend/src/config/database.ts rename to workshops/modernizer/backend/src/config/database.ts diff --git a/workshops/modernizr/backend/src/config/env.ts b/workshops/modernizer/backend/src/config/env.ts similarity index 100% rename from workshops/modernizr/backend/src/config/env.ts rename to workshops/modernizer/backend/src/config/env.ts diff --git a/workshops/modernizr/backend/src/controllers/AdminController.ts b/workshops/modernizer/backend/src/controllers/AdminController.ts similarity index 100% rename from workshops/modernizr/backend/src/controllers/AdminController.ts rename to workshops/modernizer/backend/src/controllers/AdminController.ts diff --git a/workshops/modernizr/backend/src/database/cli.ts b/workshops/modernizer/backend/src/database/cli.ts similarity index 100% rename from workshops/modernizr/backend/src/database/cli.ts rename to workshops/modernizer/backend/src/database/cli.ts diff --git a/workshops/modernizr/backend/src/database/config/DatabaseConfig.ts b/workshops/modernizer/backend/src/database/config/DatabaseConfig.ts similarity index 100% rename from workshops/modernizr/backend/src/database/config/DatabaseConfig.ts rename to workshops/modernizer/backend/src/database/config/DatabaseConfig.ts diff --git a/workshops/modernizr/backend/src/database/config/DynamoDBClient.ts b/workshops/modernizer/backend/src/database/config/DynamoDBClient.ts similarity index 100% rename from workshops/modernizr/backend/src/database/config/DynamoDBClient.ts rename to workshops/modernizer/backend/src/database/config/DynamoDBClient.ts diff --git a/workshops/modernizr/backend/src/database/e2e-schema.sql b/workshops/modernizer/backend/src/database/e2e-schema.sql similarity index 100% rename from workshops/modernizr/backend/src/database/e2e-schema.sql rename to workshops/modernizer/backend/src/database/e2e-schema.sql diff --git a/workshops/modernizr/backend/src/database/factory/DatabaseFactory.ts b/workshops/modernizer/backend/src/database/factory/DatabaseFactory.ts similarity index 100% rename from workshops/modernizr/backend/src/database/factory/DatabaseFactory.ts rename to workshops/modernizer/backend/src/database/factory/DatabaseFactory.ts diff --git a/workshops/modernizr/backend/src/database/implementations/dynamodb/BaseDynamoDBRepository.ts b/workshops/modernizer/backend/src/database/implementations/dynamodb/BaseDynamoDBRepository.ts similarity index 100% rename from workshops/modernizr/backend/src/database/implementations/dynamodb/BaseDynamoDBRepository.ts rename to workshops/modernizer/backend/src/database/implementations/dynamodb/BaseDynamoDBRepository.ts diff --git a/workshops/modernizr/backend/src/database/implementations/dynamodb/DynamoDBCategoryRepository.ts b/workshops/modernizer/backend/src/database/implementations/dynamodb/DynamoDBCategoryRepository.ts similarity index 100% rename from workshops/modernizr/backend/src/database/implementations/dynamodb/DynamoDBCategoryRepository.ts rename to workshops/modernizer/backend/src/database/implementations/dynamodb/DynamoDBCategoryRepository.ts diff --git a/workshops/modernizr/backend/src/database/implementations/dynamodb/DynamoDBOrderRepository.ts b/workshops/modernizer/backend/src/database/implementations/dynamodb/DynamoDBOrderRepository.ts similarity index 100% rename from workshops/modernizr/backend/src/database/implementations/dynamodb/DynamoDBOrderRepository.ts rename to workshops/modernizer/backend/src/database/implementations/dynamodb/DynamoDBOrderRepository.ts diff --git a/workshops/modernizr/backend/src/database/implementations/dynamodb/DynamoDBProductRepository.ts b/workshops/modernizer/backend/src/database/implementations/dynamodb/DynamoDBProductRepository.ts similarity index 100% rename from workshops/modernizr/backend/src/database/implementations/dynamodb/DynamoDBProductRepository.ts rename to workshops/modernizer/backend/src/database/implementations/dynamodb/DynamoDBProductRepository.ts diff --git a/workshops/modernizr/backend/src/database/implementations/dynamodb/DynamoDBShoppingCartRepository.ts b/workshops/modernizer/backend/src/database/implementations/dynamodb/DynamoDBShoppingCartRepository.ts similarity index 100% rename from workshops/modernizr/backend/src/database/implementations/dynamodb/DynamoDBShoppingCartRepository.ts rename to workshops/modernizer/backend/src/database/implementations/dynamodb/DynamoDBShoppingCartRepository.ts diff --git a/workshops/modernizr/backend/src/database/implementations/dynamodb/DynamoDBUserRepository.ts b/workshops/modernizer/backend/src/database/implementations/dynamodb/DynamoDBUserRepository.ts similarity index 100% rename from workshops/modernizr/backend/src/database/implementations/dynamodb/DynamoDBUserRepository.ts rename to workshops/modernizer/backend/src/database/implementations/dynamodb/DynamoDBUserRepository.ts diff --git a/workshops/modernizr/backend/src/database/implementations/mysql/MySQLCategoryRepository.ts b/workshops/modernizer/backend/src/database/implementations/mysql/MySQLCategoryRepository.ts similarity index 100% rename from workshops/modernizr/backend/src/database/implementations/mysql/MySQLCategoryRepository.ts rename to workshops/modernizer/backend/src/database/implementations/mysql/MySQLCategoryRepository.ts diff --git a/workshops/modernizr/backend/src/database/implementations/mysql/MySQLOrderRepository.ts b/workshops/modernizer/backend/src/database/implementations/mysql/MySQLOrderRepository.ts similarity index 100% rename from workshops/modernizr/backend/src/database/implementations/mysql/MySQLOrderRepository.ts rename to workshops/modernizer/backend/src/database/implementations/mysql/MySQLOrderRepository.ts diff --git a/workshops/modernizr/backend/src/database/implementations/mysql/MySQLProductRepository.ts b/workshops/modernizer/backend/src/database/implementations/mysql/MySQLProductRepository.ts similarity index 100% rename from workshops/modernizr/backend/src/database/implementations/mysql/MySQLProductRepository.ts rename to workshops/modernizer/backend/src/database/implementations/mysql/MySQLProductRepository.ts diff --git a/workshops/modernizr/backend/src/database/implementations/mysql/MySQLShoppingCartRepository.ts b/workshops/modernizer/backend/src/database/implementations/mysql/MySQLShoppingCartRepository.ts similarity index 100% rename from workshops/modernizr/backend/src/database/implementations/mysql/MySQLShoppingCartRepository.ts rename to workshops/modernizer/backend/src/database/implementations/mysql/MySQLShoppingCartRepository.ts diff --git a/workshops/modernizr/backend/src/database/implementations/mysql/MySQLUserRepository.ts b/workshops/modernizer/backend/src/database/implementations/mysql/MySQLUserRepository.ts similarity index 100% rename from workshops/modernizr/backend/src/database/implementations/mysql/MySQLUserRepository.ts rename to workshops/modernizer/backend/src/database/implementations/mysql/MySQLUserRepository.ts diff --git a/workshops/modernizr/backend/src/database/init.ts b/workshops/modernizer/backend/src/database/init.ts similarity index 100% rename from workshops/modernizr/backend/src/database/init.ts rename to workshops/modernizer/backend/src/database/init.ts diff --git a/workshops/modernizr/backend/src/database/interfaces/ICategoryRepository.ts b/workshops/modernizer/backend/src/database/interfaces/ICategoryRepository.ts similarity index 100% rename from workshops/modernizr/backend/src/database/interfaces/ICategoryRepository.ts rename to workshops/modernizer/backend/src/database/interfaces/ICategoryRepository.ts diff --git a/workshops/modernizr/backend/src/database/interfaces/IOrderRepository.ts b/workshops/modernizer/backend/src/database/interfaces/IOrderRepository.ts similarity index 100% rename from workshops/modernizr/backend/src/database/interfaces/IOrderRepository.ts rename to workshops/modernizer/backend/src/database/interfaces/IOrderRepository.ts diff --git a/workshops/modernizr/backend/src/database/interfaces/IProductRepository.ts b/workshops/modernizer/backend/src/database/interfaces/IProductRepository.ts similarity index 100% rename from workshops/modernizr/backend/src/database/interfaces/IProductRepository.ts rename to workshops/modernizer/backend/src/database/interfaces/IProductRepository.ts diff --git a/workshops/modernizr/backend/src/database/interfaces/IShoppingCartRepository.ts b/workshops/modernizer/backend/src/database/interfaces/IShoppingCartRepository.ts similarity index 100% rename from workshops/modernizr/backend/src/database/interfaces/IShoppingCartRepository.ts rename to workshops/modernizer/backend/src/database/interfaces/IShoppingCartRepository.ts diff --git a/workshops/modernizr/backend/src/database/interfaces/IUserRepository.ts b/workshops/modernizer/backend/src/database/interfaces/IUserRepository.ts similarity index 100% rename from workshops/modernizr/backend/src/database/interfaces/IUserRepository.ts rename to workshops/modernizer/backend/src/database/interfaces/IUserRepository.ts diff --git a/workshops/modernizr/backend/src/database/migrate.ts b/workshops/modernizer/backend/src/database/migrate.ts similarity index 100% rename from workshops/modernizr/backend/src/database/migrate.ts rename to workshops/modernizer/backend/src/database/migrate.ts diff --git a/workshops/modernizr/backend/src/database/migrations/add_image_url_to_products.sql b/workshops/modernizer/backend/src/database/migrations/add_image_url_to_products.sql similarity index 100% rename from workshops/modernizr/backend/src/database/migrations/add_image_url_to_products.sql rename to workshops/modernizer/backend/src/database/migrations/add_image_url_to_products.sql diff --git a/workshops/modernizr/backend/src/database/migrations/add_super_admin_column.sql b/workshops/modernizer/backend/src/database/migrations/add_super_admin_column.sql similarity index 100% rename from workshops/modernizr/backend/src/database/migrations/add_super_admin_column.sql rename to workshops/modernizer/backend/src/database/migrations/add_super_admin_column.sql diff --git a/workshops/modernizr/backend/src/database/migrations/add_super_admin_to_users.sql b/workshops/modernizer/backend/src/database/migrations/add_super_admin_to_users.sql similarity index 100% rename from workshops/modernizr/backend/src/database/migrations/add_super_admin_to_users.sql rename to workshops/modernizer/backend/src/database/migrations/add_super_admin_to_users.sql diff --git a/workshops/modernizr/backend/src/database/schema.sql b/workshops/modernizer/backend/src/database/schema.sql similarity index 100% rename from workshops/modernizr/backend/src/database/schema.sql rename to workshops/modernizer/backend/src/database/schema.sql diff --git a/workshops/modernizr/backend/src/database/seed.ts b/workshops/modernizer/backend/src/database/seed.ts similarity index 100% rename from workshops/modernizr/backend/src/database/seed.ts rename to workshops/modernizer/backend/src/database/seed.ts diff --git a/workshops/modernizr/backend/src/database/wrappers/CartDualWriteWrapper.ts b/workshops/modernizer/backend/src/database/wrappers/CartDualWriteWrapper.ts similarity index 100% rename from workshops/modernizr/backend/src/database/wrappers/CartDualWriteWrapper.ts rename to workshops/modernizer/backend/src/database/wrappers/CartDualWriteWrapper.ts diff --git a/workshops/modernizr/backend/src/database/wrappers/CategoryDualWriteWrapper.ts b/workshops/modernizer/backend/src/database/wrappers/CategoryDualWriteWrapper.ts similarity index 100% rename from workshops/modernizr/backend/src/database/wrappers/CategoryDualWriteWrapper.ts rename to workshops/modernizer/backend/src/database/wrappers/CategoryDualWriteWrapper.ts diff --git a/workshops/modernizr/backend/src/database/wrappers/DualReadErrorHandler.ts b/workshops/modernizer/backend/src/database/wrappers/DualReadErrorHandler.ts similarity index 100% rename from workshops/modernizr/backend/src/database/wrappers/DualReadErrorHandler.ts rename to workshops/modernizer/backend/src/database/wrappers/DualReadErrorHandler.ts diff --git a/workshops/modernizr/backend/src/database/wrappers/DualReadWrapper.ts b/workshops/modernizer/backend/src/database/wrappers/DualReadWrapper.ts similarity index 100% rename from workshops/modernizr/backend/src/database/wrappers/DualReadWrapper.ts rename to workshops/modernizer/backend/src/database/wrappers/DualReadWrapper.ts diff --git a/workshops/modernizr/backend/src/database/wrappers/DualWriteWrapper.ts b/workshops/modernizer/backend/src/database/wrappers/DualWriteWrapper.ts similarity index 100% rename from workshops/modernizr/backend/src/database/wrappers/DualWriteWrapper.ts rename to workshops/modernizer/backend/src/database/wrappers/DualWriteWrapper.ts diff --git a/workshops/modernizr/backend/src/database/wrappers/DualWriteWrapperFactory.ts b/workshops/modernizer/backend/src/database/wrappers/DualWriteWrapperFactory.ts similarity index 100% rename from workshops/modernizr/backend/src/database/wrappers/DualWriteWrapperFactory.ts rename to workshops/modernizer/backend/src/database/wrappers/DualWriteWrapperFactory.ts diff --git a/workshops/modernizr/backend/src/database/wrappers/OrderDualWriteWrapper.ts b/workshops/modernizer/backend/src/database/wrappers/OrderDualWriteWrapper.ts similarity index 100% rename from workshops/modernizr/backend/src/database/wrappers/OrderDualWriteWrapper.ts rename to workshops/modernizer/backend/src/database/wrappers/OrderDualWriteWrapper.ts diff --git a/workshops/modernizr/backend/src/database/wrappers/ProductDualWriteWrapper.ts b/workshops/modernizer/backend/src/database/wrappers/ProductDualWriteWrapper.ts similarity index 100% rename from workshops/modernizr/backend/src/database/wrappers/ProductDualWriteWrapper.ts rename to workshops/modernizer/backend/src/database/wrappers/ProductDualWriteWrapper.ts diff --git a/workshops/modernizr/backend/src/database/wrappers/UserDualReadWrapper.ts b/workshops/modernizer/backend/src/database/wrappers/UserDualReadWrapper.ts similarity index 100% rename from workshops/modernizr/backend/src/database/wrappers/UserDualReadWrapper.ts rename to workshops/modernizer/backend/src/database/wrappers/UserDualReadWrapper.ts diff --git a/workshops/modernizr/backend/src/database/wrappers/UserDualWriteWrapper.ts b/workshops/modernizer/backend/src/database/wrappers/UserDualWriteWrapper.ts similarity index 100% rename from workshops/modernizr/backend/src/database/wrappers/UserDualWriteWrapper.ts rename to workshops/modernizer/backend/src/database/wrappers/UserDualWriteWrapper.ts diff --git a/workshops/modernizr/backend/src/index.ts b/workshops/modernizer/backend/src/index.ts similarity index 100% rename from workshops/modernizr/backend/src/index.ts rename to workshops/modernizer/backend/src/index.ts diff --git a/workshops/modernizr/backend/src/middleware/auth.ts b/workshops/modernizer/backend/src/middleware/auth.ts similarity index 100% rename from workshops/modernizr/backend/src/middleware/auth.ts rename to workshops/modernizer/backend/src/middleware/auth.ts diff --git a/workshops/modernizr/backend/src/middleware/errorHandler.ts b/workshops/modernizer/backend/src/middleware/errorHandler.ts similarity index 100% rename from workshops/modernizr/backend/src/middleware/errorHandler.ts rename to workshops/modernizer/backend/src/middleware/errorHandler.ts diff --git a/workshops/modernizr/backend/src/middleware/seller.ts b/workshops/modernizer/backend/src/middleware/seller.ts similarity index 100% rename from workshops/modernizr/backend/src/middleware/seller.ts rename to workshops/modernizer/backend/src/middleware/seller.ts diff --git a/workshops/modernizr/backend/src/middleware/superAdmin.ts b/workshops/modernizer/backend/src/middleware/superAdmin.ts similarity index 100% rename from workshops/modernizr/backend/src/middleware/superAdmin.ts rename to workshops/modernizer/backend/src/middleware/superAdmin.ts diff --git a/workshops/modernizr/backend/src/middleware/validation.ts b/workshops/modernizer/backend/src/middleware/validation.ts similarity index 100% rename from workshops/modernizr/backend/src/middleware/validation.ts rename to workshops/modernizer/backend/src/middleware/validation.ts diff --git a/workshops/modernizr/backend/src/models/Category.ts b/workshops/modernizer/backend/src/models/Category.ts similarity index 100% rename from workshops/modernizr/backend/src/models/Category.ts rename to workshops/modernizer/backend/src/models/Category.ts diff --git a/workshops/modernizr/backend/src/models/Order.ts b/workshops/modernizer/backend/src/models/Order.ts similarity index 100% rename from workshops/modernizr/backend/src/models/Order.ts rename to workshops/modernizer/backend/src/models/Order.ts diff --git a/workshops/modernizr/backend/src/models/Product.ts b/workshops/modernizer/backend/src/models/Product.ts similarity index 100% rename from workshops/modernizr/backend/src/models/Product.ts rename to workshops/modernizer/backend/src/models/Product.ts diff --git a/workshops/modernizr/backend/src/models/ShoppingCart.ts b/workshops/modernizer/backend/src/models/ShoppingCart.ts similarity index 100% rename from workshops/modernizr/backend/src/models/ShoppingCart.ts rename to workshops/modernizer/backend/src/models/ShoppingCart.ts diff --git a/workshops/modernizr/backend/src/models/User.ts b/workshops/modernizer/backend/src/models/User.ts similarity index 100% rename from workshops/modernizr/backend/src/models/User.ts rename to workshops/modernizer/backend/src/models/User.ts diff --git a/workshops/modernizr/backend/src/repositories/CategoryRepository.ts b/workshops/modernizer/backend/src/repositories/CategoryRepository.ts similarity index 100% rename from workshops/modernizr/backend/src/repositories/CategoryRepository.ts rename to workshops/modernizer/backend/src/repositories/CategoryRepository.ts diff --git a/workshops/modernizr/backend/src/repositories/OrderRepository.ts b/workshops/modernizer/backend/src/repositories/OrderRepository.ts similarity index 100% rename from workshops/modernizr/backend/src/repositories/OrderRepository.ts rename to workshops/modernizer/backend/src/repositories/OrderRepository.ts diff --git a/workshops/modernizr/backend/src/repositories/ProductRepository.ts b/workshops/modernizer/backend/src/repositories/ProductRepository.ts similarity index 100% rename from workshops/modernizr/backend/src/repositories/ProductRepository.ts rename to workshops/modernizer/backend/src/repositories/ProductRepository.ts diff --git a/workshops/modernizr/backend/src/repositories/ShoppingCartRepository.ts b/workshops/modernizer/backend/src/repositories/ShoppingCartRepository.ts similarity index 100% rename from workshops/modernizr/backend/src/repositories/ShoppingCartRepository.ts rename to workshops/modernizer/backend/src/repositories/ShoppingCartRepository.ts diff --git a/workshops/modernizr/backend/src/repositories/UserRepository.ts b/workshops/modernizer/backend/src/repositories/UserRepository.ts similarity index 100% rename from workshops/modernizr/backend/src/repositories/UserRepository.ts rename to workshops/modernizer/backend/src/repositories/UserRepository.ts diff --git a/workshops/modernizr/backend/src/routes/admin.ts b/workshops/modernizer/backend/src/routes/admin.ts similarity index 100% rename from workshops/modernizr/backend/src/routes/admin.ts rename to workshops/modernizer/backend/src/routes/admin.ts diff --git a/workshops/modernizr/backend/src/routes/auth.ts b/workshops/modernizer/backend/src/routes/auth.ts similarity index 100% rename from workshops/modernizr/backend/src/routes/auth.ts rename to workshops/modernizer/backend/src/routes/auth.ts diff --git a/workshops/modernizr/backend/src/routes/cart.ts b/workshops/modernizer/backend/src/routes/cart.ts similarity index 100% rename from workshops/modernizr/backend/src/routes/cart.ts rename to workshops/modernizer/backend/src/routes/cart.ts diff --git a/workshops/modernizr/backend/src/routes/categories.ts b/workshops/modernizer/backend/src/routes/categories.ts similarity index 100% rename from workshops/modernizr/backend/src/routes/categories.ts rename to workshops/modernizer/backend/src/routes/categories.ts diff --git a/workshops/modernizr/backend/src/routes/orders.ts b/workshops/modernizer/backend/src/routes/orders.ts similarity index 100% rename from workshops/modernizr/backend/src/routes/orders.ts rename to workshops/modernizer/backend/src/routes/orders.ts diff --git a/workshops/modernizr/backend/src/routes/products.ts b/workshops/modernizer/backend/src/routes/products.ts similarity index 100% rename from workshops/modernizr/backend/src/routes/products.ts rename to workshops/modernizer/backend/src/routes/products.ts diff --git a/workshops/modernizr/backend/src/routes/seller.ts b/workshops/modernizer/backend/src/routes/seller.ts similarity index 100% rename from workshops/modernizr/backend/src/routes/seller.ts rename to workshops/modernizer/backend/src/routes/seller.ts diff --git a/workshops/modernizr/backend/src/services/AuthService.ts b/workshops/modernizer/backend/src/services/AuthService.ts similarity index 100% rename from workshops/modernizr/backend/src/services/AuthService.ts rename to workshops/modernizer/backend/src/services/AuthService.ts diff --git a/workshops/modernizr/backend/src/services/CategoryService.ts b/workshops/modernizer/backend/src/services/CategoryService.ts similarity index 100% rename from workshops/modernizr/backend/src/services/CategoryService.ts rename to workshops/modernizer/backend/src/services/CategoryService.ts diff --git a/workshops/modernizr/backend/src/services/FeatureFlagService.ts b/workshops/modernizer/backend/src/services/FeatureFlagService.ts similarity index 100% rename from workshops/modernizr/backend/src/services/FeatureFlagService.ts rename to workshops/modernizer/backend/src/services/FeatureFlagService.ts diff --git a/workshops/modernizr/backend/src/services/OrderService.ts b/workshops/modernizer/backend/src/services/OrderService.ts similarity index 100% rename from workshops/modernizr/backend/src/services/OrderService.ts rename to workshops/modernizer/backend/src/services/OrderService.ts diff --git a/workshops/modernizr/backend/src/services/PaymentService.ts b/workshops/modernizer/backend/src/services/PaymentService.ts similarity index 100% rename from workshops/modernizr/backend/src/services/PaymentService.ts rename to workshops/modernizer/backend/src/services/PaymentService.ts diff --git a/workshops/modernizr/backend/src/services/ProductService.ts b/workshops/modernizer/backend/src/services/ProductService.ts similarity index 100% rename from workshops/modernizr/backend/src/services/ProductService.ts rename to workshops/modernizer/backend/src/services/ProductService.ts diff --git a/workshops/modernizr/backend/src/services/ShoppingCartService.ts b/workshops/modernizer/backend/src/services/ShoppingCartService.ts similarity index 100% rename from workshops/modernizr/backend/src/services/ShoppingCartService.ts rename to workshops/modernizer/backend/src/services/ShoppingCartService.ts diff --git a/workshops/modernizr/backend/src/test-configs/e2e-database-setup.ts b/workshops/modernizer/backend/src/test-configs/e2e-database-setup.ts similarity index 100% rename from workshops/modernizr/backend/src/test-configs/e2e-database-setup.ts rename to workshops/modernizer/backend/src/test-configs/e2e-database-setup.ts diff --git a/workshops/modernizr/backend/src/test-configs/e2e-global-setup.ts b/workshops/modernizer/backend/src/test-configs/e2e-global-setup.ts similarity index 100% rename from workshops/modernizr/backend/src/test-configs/e2e-global-setup.ts rename to workshops/modernizer/backend/src/test-configs/e2e-global-setup.ts diff --git a/workshops/modernizr/backend/src/test-configs/e2e-global-teardown.ts b/workshops/modernizer/backend/src/test-configs/e2e-global-teardown.ts similarity index 100% rename from workshops/modernizr/backend/src/test-configs/e2e-global-teardown.ts rename to workshops/modernizer/backend/src/test-configs/e2e-global-teardown.ts diff --git a/workshops/modernizr/backend/src/test-configs/e2e-setup.ts b/workshops/modernizer/backend/src/test-configs/e2e-setup.ts similarity index 100% rename from workshops/modernizr/backend/src/test-configs/e2e-setup.ts rename to workshops/modernizer/backend/src/test-configs/e2e-setup.ts diff --git a/workshops/modernizr/backend/src/test-configs/integration-setup.ts b/workshops/modernizer/backend/src/test-configs/integration-setup.ts similarity index 100% rename from workshops/modernizr/backend/src/test-configs/integration-setup.ts rename to workshops/modernizer/backend/src/test-configs/integration-setup.ts diff --git a/workshops/modernizr/backend/src/test-configs/integration-teardown.js b/workshops/modernizer/backend/src/test-configs/integration-teardown.js similarity index 100% rename from workshops/modernizr/backend/src/test-configs/integration-teardown.js rename to workshops/modernizer/backend/src/test-configs/integration-teardown.js diff --git a/workshops/modernizr/backend/src/test-configs/jest.e2e.config.js b/workshops/modernizer/backend/src/test-configs/jest.e2e.config.js similarity index 100% rename from workshops/modernizr/backend/src/test-configs/jest.e2e.config.js rename to workshops/modernizer/backend/src/test-configs/jest.e2e.config.js diff --git a/workshops/modernizr/backend/src/test-configs/jest.integration.config.js b/workshops/modernizer/backend/src/test-configs/jest.integration.config.js similarity index 100% rename from workshops/modernizr/backend/src/test-configs/jest.integration.config.js rename to workshops/modernizer/backend/src/test-configs/jest.integration.config.js diff --git a/workshops/modernizr/backend/src/test-configs/jest.unit.config.js b/workshops/modernizer/backend/src/test-configs/jest.unit.config.js similarity index 100% rename from workshops/modernizr/backend/src/test-configs/jest.unit.config.js rename to workshops/modernizer/backend/src/test-configs/jest.unit.config.js diff --git a/workshops/modernizr/backend/src/test-configs/test-helpers/combined-test-reporter.js b/workshops/modernizer/backend/src/test-configs/test-helpers/combined-test-reporter.js similarity index 100% rename from workshops/modernizr/backend/src/test-configs/test-helpers/combined-test-reporter.js rename to workshops/modernizer/backend/src/test-configs/test-helpers/combined-test-reporter.js diff --git a/workshops/modernizr/backend/src/test-configs/test-helpers/database.ts b/workshops/modernizer/backend/src/test-configs/test-helpers/database.ts similarity index 100% rename from workshops/modernizr/backend/src/test-configs/test-helpers/database.ts rename to workshops/modernizer/backend/src/test-configs/test-helpers/database.ts diff --git a/workshops/modernizr/backend/src/test-configs/test-helpers/e2e-helpers.ts b/workshops/modernizer/backend/src/test-configs/test-helpers/e2e-helpers.ts similarity index 100% rename from workshops/modernizr/backend/src/test-configs/test-helpers/e2e-helpers.ts rename to workshops/modernizer/backend/src/test-configs/test-helpers/e2e-helpers.ts diff --git a/workshops/modernizr/backend/src/test-configs/test-helpers/e2e-results-processor.js b/workshops/modernizer/backend/src/test-configs/test-helpers/e2e-results-processor.js similarity index 100% rename from workshops/modernizr/backend/src/test-configs/test-helpers/e2e-results-processor.js rename to workshops/modernizer/backend/src/test-configs/test-helpers/e2e-results-processor.js diff --git a/workshops/modernizr/backend/src/test-configs/test-helpers/e2e-utils.ts b/workshops/modernizer/backend/src/test-configs/test-helpers/e2e-utils.ts similarity index 100% rename from workshops/modernizr/backend/src/test-configs/test-helpers/e2e-utils.ts rename to workshops/modernizer/backend/src/test-configs/test-helpers/e2e-utils.ts diff --git a/workshops/modernizr/backend/src/test-configs/test-helpers/integration-results-processor.js b/workshops/modernizer/backend/src/test-configs/test-helpers/integration-results-processor.js similarity index 100% rename from workshops/modernizr/backend/src/test-configs/test-helpers/integration-results-processor.js rename to workshops/modernizer/backend/src/test-configs/test-helpers/integration-results-processor.js diff --git a/workshops/modernizr/backend/src/test-configs/test-helpers/mocks.ts b/workshops/modernizer/backend/src/test-configs/test-helpers/mocks.ts similarity index 100% rename from workshops/modernizr/backend/src/test-configs/test-helpers/mocks.ts rename to workshops/modernizer/backend/src/test-configs/test-helpers/mocks.ts diff --git a/workshops/modernizr/backend/src/test-configs/test-helpers/performance-helpers.ts b/workshops/modernizer/backend/src/test-configs/test-helpers/performance-helpers.ts similarity index 100% rename from workshops/modernizr/backend/src/test-configs/test-helpers/performance-helpers.ts rename to workshops/modernizer/backend/src/test-configs/test-helpers/performance-helpers.ts diff --git a/workshops/modernizr/backend/src/test-configs/test-helpers/reliability.ts b/workshops/modernizer/backend/src/test-configs/test-helpers/reliability.ts similarity index 100% rename from workshops/modernizr/backend/src/test-configs/test-helpers/reliability.ts rename to workshops/modernizer/backend/src/test-configs/test-helpers/reliability.ts diff --git a/workshops/modernizr/backend/src/test-configs/test-helpers/server.ts b/workshops/modernizer/backend/src/test-configs/test-helpers/server.ts similarity index 100% rename from workshops/modernizr/backend/src/test-configs/test-helpers/server.ts rename to workshops/modernizer/backend/src/test-configs/test-helpers/server.ts diff --git a/workshops/modernizr/backend/src/test-configs/test-helpers/unit-results-processor.js b/workshops/modernizer/backend/src/test-configs/test-helpers/unit-results-processor.js similarity index 100% rename from workshops/modernizr/backend/src/test-configs/test-helpers/unit-results-processor.js rename to workshops/modernizer/backend/src/test-configs/test-helpers/unit-results-processor.js diff --git a/workshops/modernizr/backend/src/test-configs/unit-setup.ts b/workshops/modernizer/backend/src/test-configs/unit-setup.ts similarity index 100% rename from workshops/modernizr/backend/src/test-configs/unit-setup.ts rename to workshops/modernizer/backend/src/test-configs/unit-setup.ts diff --git a/workshops/modernizr/backend/src/utils/CorrelationId.ts b/workshops/modernizer/backend/src/utils/CorrelationId.ts similarity index 100% rename from workshops/modernizr/backend/src/utils/CorrelationId.ts rename to workshops/modernizer/backend/src/utils/CorrelationId.ts diff --git a/workshops/modernizr/backend/src/utils/performanceMonitor.ts b/workshops/modernizer/backend/src/utils/performanceMonitor.ts similarity index 100% rename from workshops/modernizr/backend/src/utils/performanceMonitor.ts rename to workshops/modernizer/backend/src/utils/performanceMonitor.ts diff --git a/workshops/modernizr/backend/tsconfig.json b/workshops/modernizer/backend/tsconfig.json similarity index 100% rename from workshops/modernizr/backend/tsconfig.json rename to workshops/modernizer/backend/tsconfig.json diff --git a/workshops/modernizr/clean-start/backend/.env b/workshops/modernizer/clean-start/backend/.env similarity index 100% rename from workshops/modernizr/clean-start/backend/.env rename to workshops/modernizer/clean-start/backend/.env diff --git a/workshops/modernizr/clean-start/backend/.env.example b/workshops/modernizer/clean-start/backend/.env.example similarity index 100% rename from workshops/modernizr/clean-start/backend/.env.example rename to workshops/modernizer/clean-start/backend/.env.example diff --git a/workshops/modernizr/clean-start/backend/.env.test b/workshops/modernizer/clean-start/backend/.env.test similarity index 100% rename from workshops/modernizr/clean-start/backend/.env.test rename to workshops/modernizer/clean-start/backend/.env.test diff --git a/workshops/modernizr/clean-start/backend/.env.test.e2e b/workshops/modernizer/clean-start/backend/.env.test.e2e similarity index 100% rename from workshops/modernizr/clean-start/backend/.env.test.e2e rename to workshops/modernizer/clean-start/backend/.env.test.e2e diff --git a/workshops/modernizr/clean-start/backend/.env.test.integration b/workshops/modernizer/clean-start/backend/.env.test.integration similarity index 100% rename from workshops/modernizr/clean-start/backend/.env.test.integration rename to workshops/modernizer/clean-start/backend/.env.test.integration diff --git a/workshops/modernizr/clean-start/backend/.env.test.unit b/workshops/modernizer/clean-start/backend/.env.test.unit similarity index 100% rename from workshops/modernizr/clean-start/backend/.env.test.unit rename to workshops/modernizer/clean-start/backend/.env.test.unit diff --git a/workshops/modernizr/clean-start/backend/README.md b/workshops/modernizer/clean-start/backend/README.md similarity index 100% rename from workshops/modernizr/clean-start/backend/README.md rename to workshops/modernizer/clean-start/backend/README.md diff --git a/workshops/modernizr/clean-start/backend/docs/README.md b/workshops/modernizer/clean-start/backend/docs/README.md similarity index 100% rename from workshops/modernizr/clean-start/backend/docs/README.md rename to workshops/modernizer/clean-start/backend/docs/README.md diff --git a/workshops/modernizr/clean-start/backend/docs/TESTING.md b/workshops/modernizer/clean-start/backend/docs/TESTING.md similarity index 100% rename from workshops/modernizr/clean-start/backend/docs/TESTING.md rename to workshops/modernizer/clean-start/backend/docs/TESTING.md diff --git a/workshops/modernizr/clean-start/backend/docs/TESTING_BEST_PRACTICES.md b/workshops/modernizer/clean-start/backend/docs/TESTING_BEST_PRACTICES.md similarity index 100% rename from workshops/modernizr/clean-start/backend/docs/TESTING_BEST_PRACTICES.md rename to workshops/modernizer/clean-start/backend/docs/TESTING_BEST_PRACTICES.md diff --git a/workshops/modernizr/clean-start/backend/docs/TESTING_QUICK_REFERENCE.md b/workshops/modernizer/clean-start/backend/docs/TESTING_QUICK_REFERENCE.md similarity index 100% rename from workshops/modernizr/clean-start/backend/docs/TESTING_QUICK_REFERENCE.md rename to workshops/modernizer/clean-start/backend/docs/TESTING_QUICK_REFERENCE.md diff --git a/workshops/modernizr/clean-start/backend/docs/e2e-test-troubleshooting-guide.md b/workshops/modernizer/clean-start/backend/docs/e2e-test-troubleshooting-guide.md similarity index 100% rename from workshops/modernizr/clean-start/backend/docs/e2e-test-troubleshooting-guide.md rename to workshops/modernizer/clean-start/backend/docs/e2e-test-troubleshooting-guide.md diff --git a/workshops/modernizr/clean-start/backend/docs/test-reporting-guide.md b/workshops/modernizer/clean-start/backend/docs/test-reporting-guide.md similarity index 100% rename from workshops/modernizr/clean-start/backend/docs/test-reporting-guide.md rename to workshops/modernizer/clean-start/backend/docs/test-reporting-guide.md diff --git a/workshops/modernizr/clean-start/backend/docs/test-reporting-implementation-summary.md b/workshops/modernizer/clean-start/backend/docs/test-reporting-implementation-summary.md similarity index 100% rename from workshops/modernizr/clean-start/backend/docs/test-reporting-implementation-summary.md rename to workshops/modernizer/clean-start/backend/docs/test-reporting-implementation-summary.md diff --git a/workshops/modernizr/clean-start/backend/docs/test-templates/e2e-test-template.ts b/workshops/modernizer/clean-start/backend/docs/test-templates/e2e-test-template.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/docs/test-templates/e2e-test-template.ts rename to workshops/modernizer/clean-start/backend/docs/test-templates/e2e-test-template.ts diff --git a/workshops/modernizr/clean-start/backend/docs/test-templates/integration-test-template.ts b/workshops/modernizer/clean-start/backend/docs/test-templates/integration-test-template.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/docs/test-templates/integration-test-template.ts rename to workshops/modernizer/clean-start/backend/docs/test-templates/integration-test-template.ts diff --git a/workshops/modernizr/clean-start/backend/docs/test-templates/unit-test-template.ts b/workshops/modernizer/clean-start/backend/docs/test-templates/unit-test-template.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/docs/test-templates/unit-test-template.ts rename to workshops/modernizer/clean-start/backend/docs/test-templates/unit-test-template.ts diff --git a/workshops/modernizr/clean-start/backend/eslint.config.js b/workshops/modernizer/clean-start/backend/eslint.config.js similarity index 100% rename from workshops/modernizr/clean-start/backend/eslint.config.js rename to workshops/modernizer/clean-start/backend/eslint.config.js diff --git a/workshops/modernizr/clean-start/backend/package.json b/workshops/modernizer/clean-start/backend/package.json similarity index 100% rename from workshops/modernizr/clean-start/backend/package.json rename to workshops/modernizer/clean-start/backend/package.json diff --git a/workshops/modernizr/clean-start/backend/src/__tests__/README.md b/workshops/modernizer/clean-start/backend/src/__tests__/README.md similarity index 100% rename from workshops/modernizr/clean-start/backend/src/__tests__/README.md rename to workshops/modernizer/clean-start/backend/src/__tests__/README.md diff --git a/workshops/modernizr/clean-start/backend/src/__tests__/e2e/auth/authentication-workflow.test.ts b/workshops/modernizer/clean-start/backend/src/__tests__/e2e/auth/authentication-workflow.test.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/__tests__/e2e/auth/authentication-workflow.test.ts rename to workshops/modernizer/clean-start/backend/src/__tests__/e2e/auth/authentication-workflow.test.ts diff --git a/workshops/modernizr/clean-start/backend/src/__tests__/e2e/config/environment.test.ts b/workshops/modernizer/clean-start/backend/src/__tests__/e2e/config/environment.test.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/__tests__/e2e/config/environment.test.ts rename to workshops/modernizer/clean-start/backend/src/__tests__/e2e/config/environment.test.ts diff --git a/workshops/modernizr/clean-start/backend/src/__tests__/e2e/orders/shopping-workflow.test.ts b/workshops/modernizer/clean-start/backend/src/__tests__/e2e/orders/shopping-workflow.test.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/__tests__/e2e/orders/shopping-workflow.test.ts rename to workshops/modernizer/clean-start/backend/src/__tests__/e2e/orders/shopping-workflow.test.ts diff --git a/workshops/modernizr/clean-start/backend/src/__tests__/e2e/products/product-management-workflow.test.ts b/workshops/modernizer/clean-start/backend/src/__tests__/e2e/products/product-management-workflow.test.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/__tests__/e2e/products/product-management-workflow.test.ts rename to workshops/modernizer/clean-start/backend/src/__tests__/e2e/products/product-management-workflow.test.ts diff --git a/workshops/modernizr/clean-start/backend/src/__tests__/e2e/security/security-features.test.ts b/workshops/modernizer/clean-start/backend/src/__tests__/e2e/security/security-features.test.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/__tests__/e2e/security/security-features.test.ts rename to workshops/modernizer/clean-start/backend/src/__tests__/e2e/security/security-features.test.ts diff --git a/workshops/modernizr/clean-start/backend/src/__tests__/integration/api/health.test.ts b/workshops/modernizer/clean-start/backend/src/__tests__/integration/api/health.test.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/__tests__/integration/api/health.test.ts rename to workshops/modernizer/clean-start/backend/src/__tests__/integration/api/health.test.ts diff --git a/workshops/modernizr/clean-start/backend/src/__tests__/integration/config/environment.test.ts b/workshops/modernizer/clean-start/backend/src/__tests__/integration/config/environment.test.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/__tests__/integration/config/environment.test.ts rename to workshops/modernizer/clean-start/backend/src/__tests__/integration/config/environment.test.ts diff --git a/workshops/modernizr/clean-start/backend/src/__tests__/integration/database/connection.test.ts b/workshops/modernizer/clean-start/backend/src/__tests__/integration/database/connection.test.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/__tests__/integration/database/connection.test.ts rename to workshops/modernizer/clean-start/backend/src/__tests__/integration/database/connection.test.ts diff --git a/workshops/modernizr/clean-start/backend/src/__tests__/integration/services/AuthService.test.ts b/workshops/modernizer/clean-start/backend/src/__tests__/integration/services/AuthService.test.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/__tests__/integration/services/AuthService.test.ts rename to workshops/modernizer/clean-start/backend/src/__tests__/integration/services/AuthService.test.ts diff --git a/workshops/modernizr/clean-start/backend/src/__tests__/unit/config/environment.test.ts b/workshops/modernizer/clean-start/backend/src/__tests__/unit/config/environment.test.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/__tests__/unit/config/environment.test.ts rename to workshops/modernizer/clean-start/backend/src/__tests__/unit/config/environment.test.ts diff --git a/workshops/modernizr/clean-start/backend/src/__tests__/unit/middleware/auth.test.ts b/workshops/modernizer/clean-start/backend/src/__tests__/unit/middleware/auth.test.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/__tests__/unit/middleware/auth.test.ts rename to workshops/modernizer/clean-start/backend/src/__tests__/unit/middleware/auth.test.ts diff --git a/workshops/modernizr/clean-start/backend/src/__tests__/unit/middleware/seller.test.ts b/workshops/modernizer/clean-start/backend/src/__tests__/unit/middleware/seller.test.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/__tests__/unit/middleware/seller.test.ts rename to workshops/modernizer/clean-start/backend/src/__tests__/unit/middleware/seller.test.ts diff --git a/workshops/modernizr/clean-start/backend/src/__tests__/unit/models/Category.test.ts b/workshops/modernizer/clean-start/backend/src/__tests__/unit/models/Category.test.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/__tests__/unit/models/Category.test.ts rename to workshops/modernizer/clean-start/backend/src/__tests__/unit/models/Category.test.ts diff --git a/workshops/modernizr/clean-start/backend/src/__tests__/unit/models/Order.test.ts b/workshops/modernizer/clean-start/backend/src/__tests__/unit/models/Order.test.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/__tests__/unit/models/Order.test.ts rename to workshops/modernizer/clean-start/backend/src/__tests__/unit/models/Order.test.ts diff --git a/workshops/modernizr/clean-start/backend/src/__tests__/unit/models/Product.test.ts b/workshops/modernizer/clean-start/backend/src/__tests__/unit/models/Product.test.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/__tests__/unit/models/Product.test.ts rename to workshops/modernizer/clean-start/backend/src/__tests__/unit/models/Product.test.ts diff --git a/workshops/modernizr/clean-start/backend/src/__tests__/unit/models/ShoppingCart.test.ts b/workshops/modernizer/clean-start/backend/src/__tests__/unit/models/ShoppingCart.test.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/__tests__/unit/models/ShoppingCart.test.ts rename to workshops/modernizer/clean-start/backend/src/__tests__/unit/models/ShoppingCart.test.ts diff --git a/workshops/modernizr/clean-start/backend/src/__tests__/unit/repositories/CategoryRepository.test.ts b/workshops/modernizer/clean-start/backend/src/__tests__/unit/repositories/CategoryRepository.test.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/__tests__/unit/repositories/CategoryRepository.test.ts rename to workshops/modernizer/clean-start/backend/src/__tests__/unit/repositories/CategoryRepository.test.ts diff --git a/workshops/modernizr/clean-start/backend/src/__tests__/unit/repositories/ProductRepository.test.ts b/workshops/modernizer/clean-start/backend/src/__tests__/unit/repositories/ProductRepository.test.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/__tests__/unit/repositories/ProductRepository.test.ts rename to workshops/modernizer/clean-start/backend/src/__tests__/unit/repositories/ProductRepository.test.ts diff --git a/workshops/modernizr/clean-start/backend/src/__tests__/unit/repositories/ShoppingCartRepository.test.ts b/workshops/modernizer/clean-start/backend/src/__tests__/unit/repositories/ShoppingCartRepository.test.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/__tests__/unit/repositories/ShoppingCartRepository.test.ts rename to workshops/modernizer/clean-start/backend/src/__tests__/unit/repositories/ShoppingCartRepository.test.ts diff --git a/workshops/modernizr/clean-start/backend/src/__tests__/unit/repositories/UserRepository.test.ts b/workshops/modernizer/clean-start/backend/src/__tests__/unit/repositories/UserRepository.test.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/__tests__/unit/repositories/UserRepository.test.ts rename to workshops/modernizer/clean-start/backend/src/__tests__/unit/repositories/UserRepository.test.ts diff --git a/workshops/modernizr/clean-start/backend/src/__tests__/unit/services/AuthService.test.ts b/workshops/modernizer/clean-start/backend/src/__tests__/unit/services/AuthService.test.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/__tests__/unit/services/AuthService.test.ts rename to workshops/modernizer/clean-start/backend/src/__tests__/unit/services/AuthService.test.ts diff --git a/workshops/modernizr/clean-start/backend/src/__tests__/unit/services/CategoryService.test.ts b/workshops/modernizer/clean-start/backend/src/__tests__/unit/services/CategoryService.test.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/__tests__/unit/services/CategoryService.test.ts rename to workshops/modernizer/clean-start/backend/src/__tests__/unit/services/CategoryService.test.ts diff --git a/workshops/modernizr/clean-start/backend/src/__tests__/unit/services/PaymentService.test.ts b/workshops/modernizer/clean-start/backend/src/__tests__/unit/services/PaymentService.test.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/__tests__/unit/services/PaymentService.test.ts rename to workshops/modernizer/clean-start/backend/src/__tests__/unit/services/PaymentService.test.ts diff --git a/workshops/modernizr/clean-start/backend/src/__tests__/unit/services/ProductService.test.ts b/workshops/modernizer/clean-start/backend/src/__tests__/unit/services/ProductService.test.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/__tests__/unit/services/ProductService.test.ts rename to workshops/modernizer/clean-start/backend/src/__tests__/unit/services/ProductService.test.ts diff --git a/workshops/modernizr/clean-start/backend/src/__tests__/unit/services/ShoppingCartService.test.ts b/workshops/modernizer/clean-start/backend/src/__tests__/unit/services/ShoppingCartService.test.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/__tests__/unit/services/ShoppingCartService.test.ts rename to workshops/modernizer/clean-start/backend/src/__tests__/unit/services/ShoppingCartService.test.ts diff --git a/workshops/modernizr/clean-start/backend/src/__tests__/unit/utils/performanceMonitor.test.ts b/workshops/modernizer/clean-start/backend/src/__tests__/unit/utils/performanceMonitor.test.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/__tests__/unit/utils/performanceMonitor.test.ts rename to workshops/modernizer/clean-start/backend/src/__tests__/unit/utils/performanceMonitor.test.ts diff --git a/workshops/modernizr/clean-start/backend/src/app.ts b/workshops/modernizer/clean-start/backend/src/app.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/app.ts rename to workshops/modernizer/clean-start/backend/src/app.ts diff --git a/workshops/modernizr/clean-start/backend/src/config/database.ts b/workshops/modernizer/clean-start/backend/src/config/database.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/config/database.ts rename to workshops/modernizer/clean-start/backend/src/config/database.ts diff --git a/workshops/modernizr/clean-start/backend/src/config/env.ts b/workshops/modernizer/clean-start/backend/src/config/env.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/config/env.ts rename to workshops/modernizer/clean-start/backend/src/config/env.ts diff --git a/workshops/modernizr/clean-start/backend/src/database/cli.ts b/workshops/modernizer/clean-start/backend/src/database/cli.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/database/cli.ts rename to workshops/modernizer/clean-start/backend/src/database/cli.ts diff --git a/workshops/modernizr/clean-start/backend/src/database/e2e-schema.sql b/workshops/modernizer/clean-start/backend/src/database/e2e-schema.sql similarity index 100% rename from workshops/modernizr/clean-start/backend/src/database/e2e-schema.sql rename to workshops/modernizer/clean-start/backend/src/database/e2e-schema.sql diff --git a/workshops/modernizr/clean-start/backend/src/database/init.ts b/workshops/modernizer/clean-start/backend/src/database/init.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/database/init.ts rename to workshops/modernizer/clean-start/backend/src/database/init.ts diff --git a/workshops/modernizr/clean-start/backend/src/database/migrate.ts b/workshops/modernizer/clean-start/backend/src/database/migrate.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/database/migrate.ts rename to workshops/modernizer/clean-start/backend/src/database/migrate.ts diff --git a/workshops/modernizr/clean-start/backend/src/database/migrations/add_image_url_to_products.sql b/workshops/modernizer/clean-start/backend/src/database/migrations/add_image_url_to_products.sql similarity index 100% rename from workshops/modernizr/clean-start/backend/src/database/migrations/add_image_url_to_products.sql rename to workshops/modernizer/clean-start/backend/src/database/migrations/add_image_url_to_products.sql diff --git a/workshops/modernizr/clean-start/backend/src/database/schema.sql b/workshops/modernizer/clean-start/backend/src/database/schema.sql similarity index 100% rename from workshops/modernizr/clean-start/backend/src/database/schema.sql rename to workshops/modernizer/clean-start/backend/src/database/schema.sql diff --git a/workshops/modernizr/clean-start/backend/src/database/seed.ts b/workshops/modernizer/clean-start/backend/src/database/seed.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/database/seed.ts rename to workshops/modernizer/clean-start/backend/src/database/seed.ts diff --git a/workshops/modernizr/clean-start/backend/src/index.ts b/workshops/modernizer/clean-start/backend/src/index.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/index.ts rename to workshops/modernizer/clean-start/backend/src/index.ts diff --git a/workshops/modernizr/clean-start/backend/src/middleware/auth.ts b/workshops/modernizer/clean-start/backend/src/middleware/auth.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/middleware/auth.ts rename to workshops/modernizer/clean-start/backend/src/middleware/auth.ts diff --git a/workshops/modernizr/clean-start/backend/src/middleware/errorHandler.ts b/workshops/modernizer/clean-start/backend/src/middleware/errorHandler.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/middleware/errorHandler.ts rename to workshops/modernizer/clean-start/backend/src/middleware/errorHandler.ts diff --git a/workshops/modernizr/clean-start/backend/src/middleware/seller.ts b/workshops/modernizer/clean-start/backend/src/middleware/seller.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/middleware/seller.ts rename to workshops/modernizer/clean-start/backend/src/middleware/seller.ts diff --git a/workshops/modernizr/clean-start/backend/src/middleware/validation.ts b/workshops/modernizer/clean-start/backend/src/middleware/validation.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/middleware/validation.ts rename to workshops/modernizer/clean-start/backend/src/middleware/validation.ts diff --git a/workshops/modernizr/clean-start/backend/src/models/Category.ts b/workshops/modernizer/clean-start/backend/src/models/Category.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/models/Category.ts rename to workshops/modernizer/clean-start/backend/src/models/Category.ts diff --git a/workshops/modernizr/clean-start/backend/src/models/Order.ts b/workshops/modernizer/clean-start/backend/src/models/Order.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/models/Order.ts rename to workshops/modernizer/clean-start/backend/src/models/Order.ts diff --git a/workshops/modernizr/clean-start/backend/src/models/Product.ts b/workshops/modernizer/clean-start/backend/src/models/Product.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/models/Product.ts rename to workshops/modernizer/clean-start/backend/src/models/Product.ts diff --git a/workshops/modernizr/clean-start/backend/src/models/ShoppingCart.ts b/workshops/modernizer/clean-start/backend/src/models/ShoppingCart.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/models/ShoppingCart.ts rename to workshops/modernizer/clean-start/backend/src/models/ShoppingCart.ts diff --git a/workshops/modernizr/clean-start/backend/src/models/User.ts b/workshops/modernizer/clean-start/backend/src/models/User.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/models/User.ts rename to workshops/modernizer/clean-start/backend/src/models/User.ts diff --git a/workshops/modernizr/clean-start/backend/src/repositories/CategoryRepository.ts b/workshops/modernizer/clean-start/backend/src/repositories/CategoryRepository.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/repositories/CategoryRepository.ts rename to workshops/modernizer/clean-start/backend/src/repositories/CategoryRepository.ts diff --git a/workshops/modernizr/clean-start/backend/src/repositories/OrderRepository.ts b/workshops/modernizer/clean-start/backend/src/repositories/OrderRepository.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/repositories/OrderRepository.ts rename to workshops/modernizer/clean-start/backend/src/repositories/OrderRepository.ts diff --git a/workshops/modernizr/clean-start/backend/src/repositories/ProductRepository.ts b/workshops/modernizer/clean-start/backend/src/repositories/ProductRepository.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/repositories/ProductRepository.ts rename to workshops/modernizer/clean-start/backend/src/repositories/ProductRepository.ts diff --git a/workshops/modernizr/clean-start/backend/src/repositories/ShoppingCartRepository.ts b/workshops/modernizer/clean-start/backend/src/repositories/ShoppingCartRepository.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/repositories/ShoppingCartRepository.ts rename to workshops/modernizer/clean-start/backend/src/repositories/ShoppingCartRepository.ts diff --git a/workshops/modernizr/clean-start/backend/src/repositories/UserRepository.ts b/workshops/modernizer/clean-start/backend/src/repositories/UserRepository.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/repositories/UserRepository.ts rename to workshops/modernizer/clean-start/backend/src/repositories/UserRepository.ts diff --git a/workshops/modernizr/clean-start/backend/src/routes/auth.ts b/workshops/modernizer/clean-start/backend/src/routes/auth.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/routes/auth.ts rename to workshops/modernizer/clean-start/backend/src/routes/auth.ts diff --git a/workshops/modernizr/clean-start/backend/src/routes/cart.ts b/workshops/modernizer/clean-start/backend/src/routes/cart.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/routes/cart.ts rename to workshops/modernizer/clean-start/backend/src/routes/cart.ts diff --git a/workshops/modernizr/clean-start/backend/src/routes/categories.ts b/workshops/modernizer/clean-start/backend/src/routes/categories.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/routes/categories.ts rename to workshops/modernizer/clean-start/backend/src/routes/categories.ts diff --git a/workshops/modernizr/clean-start/backend/src/routes/orders.ts b/workshops/modernizer/clean-start/backend/src/routes/orders.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/routes/orders.ts rename to workshops/modernizer/clean-start/backend/src/routes/orders.ts diff --git a/workshops/modernizr/clean-start/backend/src/routes/products.ts b/workshops/modernizer/clean-start/backend/src/routes/products.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/routes/products.ts rename to workshops/modernizer/clean-start/backend/src/routes/products.ts diff --git a/workshops/modernizr/clean-start/backend/src/routes/seller.ts b/workshops/modernizer/clean-start/backend/src/routes/seller.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/routes/seller.ts rename to workshops/modernizer/clean-start/backend/src/routes/seller.ts diff --git a/workshops/modernizr/clean-start/backend/src/services/AuthService.ts b/workshops/modernizer/clean-start/backend/src/services/AuthService.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/services/AuthService.ts rename to workshops/modernizer/clean-start/backend/src/services/AuthService.ts diff --git a/workshops/modernizr/clean-start/backend/src/services/CategoryService.ts b/workshops/modernizer/clean-start/backend/src/services/CategoryService.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/services/CategoryService.ts rename to workshops/modernizer/clean-start/backend/src/services/CategoryService.ts diff --git a/workshops/modernizr/clean-start/backend/src/services/OrderService.ts b/workshops/modernizer/clean-start/backend/src/services/OrderService.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/services/OrderService.ts rename to workshops/modernizer/clean-start/backend/src/services/OrderService.ts diff --git a/workshops/modernizr/clean-start/backend/src/services/PaymentService.ts b/workshops/modernizer/clean-start/backend/src/services/PaymentService.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/services/PaymentService.ts rename to workshops/modernizer/clean-start/backend/src/services/PaymentService.ts diff --git a/workshops/modernizr/clean-start/backend/src/services/ProductService.ts b/workshops/modernizer/clean-start/backend/src/services/ProductService.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/services/ProductService.ts rename to workshops/modernizer/clean-start/backend/src/services/ProductService.ts diff --git a/workshops/modernizr/clean-start/backend/src/services/ShoppingCartService.ts b/workshops/modernizer/clean-start/backend/src/services/ShoppingCartService.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/services/ShoppingCartService.ts rename to workshops/modernizer/clean-start/backend/src/services/ShoppingCartService.ts diff --git a/workshops/modernizr/clean-start/backend/src/test-configs/e2e-database-setup.ts b/workshops/modernizer/clean-start/backend/src/test-configs/e2e-database-setup.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/test-configs/e2e-database-setup.ts rename to workshops/modernizer/clean-start/backend/src/test-configs/e2e-database-setup.ts diff --git a/workshops/modernizr/clean-start/backend/src/test-configs/e2e-global-setup.ts b/workshops/modernizer/clean-start/backend/src/test-configs/e2e-global-setup.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/test-configs/e2e-global-setup.ts rename to workshops/modernizer/clean-start/backend/src/test-configs/e2e-global-setup.ts diff --git a/workshops/modernizr/clean-start/backend/src/test-configs/e2e-global-teardown.ts b/workshops/modernizer/clean-start/backend/src/test-configs/e2e-global-teardown.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/test-configs/e2e-global-teardown.ts rename to workshops/modernizer/clean-start/backend/src/test-configs/e2e-global-teardown.ts diff --git a/workshops/modernizr/clean-start/backend/src/test-configs/e2e-setup.ts b/workshops/modernizer/clean-start/backend/src/test-configs/e2e-setup.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/test-configs/e2e-setup.ts rename to workshops/modernizer/clean-start/backend/src/test-configs/e2e-setup.ts diff --git a/workshops/modernizr/clean-start/backend/src/test-configs/integration-setup.ts b/workshops/modernizer/clean-start/backend/src/test-configs/integration-setup.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/test-configs/integration-setup.ts rename to workshops/modernizer/clean-start/backend/src/test-configs/integration-setup.ts diff --git a/workshops/modernizr/clean-start/backend/src/test-configs/integration-teardown.js b/workshops/modernizer/clean-start/backend/src/test-configs/integration-teardown.js similarity index 100% rename from workshops/modernizr/clean-start/backend/src/test-configs/integration-teardown.js rename to workshops/modernizer/clean-start/backend/src/test-configs/integration-teardown.js diff --git a/workshops/modernizr/clean-start/backend/src/test-configs/jest.e2e.config.js b/workshops/modernizer/clean-start/backend/src/test-configs/jest.e2e.config.js similarity index 100% rename from workshops/modernizr/clean-start/backend/src/test-configs/jest.e2e.config.js rename to workshops/modernizer/clean-start/backend/src/test-configs/jest.e2e.config.js diff --git a/workshops/modernizr/clean-start/backend/src/test-configs/jest.integration.config.js b/workshops/modernizer/clean-start/backend/src/test-configs/jest.integration.config.js similarity index 100% rename from workshops/modernizr/clean-start/backend/src/test-configs/jest.integration.config.js rename to workshops/modernizer/clean-start/backend/src/test-configs/jest.integration.config.js diff --git a/workshops/modernizr/clean-start/backend/src/test-configs/jest.unit.config.js b/workshops/modernizer/clean-start/backend/src/test-configs/jest.unit.config.js similarity index 100% rename from workshops/modernizr/clean-start/backend/src/test-configs/jest.unit.config.js rename to workshops/modernizer/clean-start/backend/src/test-configs/jest.unit.config.js diff --git a/workshops/modernizr/clean-start/backend/src/test-configs/test-helpers/combined-test-reporter.js b/workshops/modernizer/clean-start/backend/src/test-configs/test-helpers/combined-test-reporter.js similarity index 100% rename from workshops/modernizr/clean-start/backend/src/test-configs/test-helpers/combined-test-reporter.js rename to workshops/modernizer/clean-start/backend/src/test-configs/test-helpers/combined-test-reporter.js diff --git a/workshops/modernizr/clean-start/backend/src/test-configs/test-helpers/database.ts b/workshops/modernizer/clean-start/backend/src/test-configs/test-helpers/database.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/test-configs/test-helpers/database.ts rename to workshops/modernizer/clean-start/backend/src/test-configs/test-helpers/database.ts diff --git a/workshops/modernizr/clean-start/backend/src/test-configs/test-helpers/e2e-helpers.ts b/workshops/modernizer/clean-start/backend/src/test-configs/test-helpers/e2e-helpers.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/test-configs/test-helpers/e2e-helpers.ts rename to workshops/modernizer/clean-start/backend/src/test-configs/test-helpers/e2e-helpers.ts diff --git a/workshops/modernizr/clean-start/backend/src/test-configs/test-helpers/e2e-results-processor.js b/workshops/modernizer/clean-start/backend/src/test-configs/test-helpers/e2e-results-processor.js similarity index 100% rename from workshops/modernizr/clean-start/backend/src/test-configs/test-helpers/e2e-results-processor.js rename to workshops/modernizer/clean-start/backend/src/test-configs/test-helpers/e2e-results-processor.js diff --git a/workshops/modernizr/clean-start/backend/src/test-configs/test-helpers/e2e-utils.ts b/workshops/modernizer/clean-start/backend/src/test-configs/test-helpers/e2e-utils.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/test-configs/test-helpers/e2e-utils.ts rename to workshops/modernizer/clean-start/backend/src/test-configs/test-helpers/e2e-utils.ts diff --git a/workshops/modernizr/clean-start/backend/src/test-configs/test-helpers/integration-results-processor.js b/workshops/modernizer/clean-start/backend/src/test-configs/test-helpers/integration-results-processor.js similarity index 100% rename from workshops/modernizr/clean-start/backend/src/test-configs/test-helpers/integration-results-processor.js rename to workshops/modernizer/clean-start/backend/src/test-configs/test-helpers/integration-results-processor.js diff --git a/workshops/modernizr/clean-start/backend/src/test-configs/test-helpers/mocks.ts b/workshops/modernizer/clean-start/backend/src/test-configs/test-helpers/mocks.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/test-configs/test-helpers/mocks.ts rename to workshops/modernizer/clean-start/backend/src/test-configs/test-helpers/mocks.ts diff --git a/workshops/modernizr/clean-start/backend/src/test-configs/test-helpers/performance-helpers.ts b/workshops/modernizer/clean-start/backend/src/test-configs/test-helpers/performance-helpers.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/test-configs/test-helpers/performance-helpers.ts rename to workshops/modernizer/clean-start/backend/src/test-configs/test-helpers/performance-helpers.ts diff --git a/workshops/modernizr/clean-start/backend/src/test-configs/test-helpers/reliability.ts b/workshops/modernizer/clean-start/backend/src/test-configs/test-helpers/reliability.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/test-configs/test-helpers/reliability.ts rename to workshops/modernizer/clean-start/backend/src/test-configs/test-helpers/reliability.ts diff --git a/workshops/modernizr/clean-start/backend/src/test-configs/test-helpers/server.ts b/workshops/modernizer/clean-start/backend/src/test-configs/test-helpers/server.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/test-configs/test-helpers/server.ts rename to workshops/modernizer/clean-start/backend/src/test-configs/test-helpers/server.ts diff --git a/workshops/modernizr/clean-start/backend/src/test-configs/test-helpers/unit-results-processor.js b/workshops/modernizer/clean-start/backend/src/test-configs/test-helpers/unit-results-processor.js similarity index 100% rename from workshops/modernizr/clean-start/backend/src/test-configs/test-helpers/unit-results-processor.js rename to workshops/modernizer/clean-start/backend/src/test-configs/test-helpers/unit-results-processor.js diff --git a/workshops/modernizr/clean-start/backend/src/test-configs/unit-setup.ts b/workshops/modernizer/clean-start/backend/src/test-configs/unit-setup.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/test-configs/unit-setup.ts rename to workshops/modernizer/clean-start/backend/src/test-configs/unit-setup.ts diff --git a/workshops/modernizr/clean-start/backend/src/utils/performanceMonitor.ts b/workshops/modernizer/clean-start/backend/src/utils/performanceMonitor.ts similarity index 100% rename from workshops/modernizr/clean-start/backend/src/utils/performanceMonitor.ts rename to workshops/modernizer/clean-start/backend/src/utils/performanceMonitor.ts diff --git a/workshops/modernizr/clean-start/backend/tsconfig.json b/workshops/modernizer/clean-start/backend/tsconfig.json similarity index 100% rename from workshops/modernizr/clean-start/backend/tsconfig.json rename to workshops/modernizer/clean-start/backend/tsconfig.json diff --git a/workshops/modernizr/clean-start/database/README.md b/workshops/modernizer/clean-start/database/README.md similarity index 100% rename from workshops/modernizr/clean-start/database/README.md rename to workshops/modernizer/clean-start/database/README.md diff --git a/workshops/modernizr/clean-start/database/mysql-query.zip b/workshops/modernizer/clean-start/database/mysql-query.zip similarity index 100% rename from workshops/modernizr/clean-start/database/mysql-query.zip rename to workshops/modernizer/clean-start/database/mysql-query.zip diff --git a/workshops/modernizr/clean-start/database/mysql_log_parser.py b/workshops/modernizer/clean-start/database/mysql_log_parser.py similarity index 100% rename from workshops/modernizr/clean-start/database/mysql_log_parser.py rename to workshops/modernizer/clean-start/database/mysql_log_parser.py diff --git a/workshops/modernizr/clean-start/database/query-report.md b/workshops/modernizer/clean-start/database/query-report.md similarity index 100% rename from workshops/modernizr/clean-start/database/query-report.md rename to workshops/modernizer/clean-start/database/query-report.md diff --git a/workshops/modernizr/clean-start/database/requirements.txt b/workshops/modernizer/clean-start/database/requirements.txt similarity index 100% rename from workshops/modernizr/clean-start/database/requirements.txt rename to workshops/modernizer/clean-start/database/requirements.txt diff --git a/workshops/modernizr/clean-start/docker/docker-compose.yml b/workshops/modernizer/clean-start/docker/docker-compose.yml similarity index 100% rename from workshops/modernizr/clean-start/docker/docker-compose.yml rename to workshops/modernizer/clean-start/docker/docker-compose.yml diff --git a/workshops/modernizr/clean-start/frontend/.env b/workshops/modernizer/clean-start/frontend/.env similarity index 100% rename from workshops/modernizr/clean-start/frontend/.env rename to workshops/modernizer/clean-start/frontend/.env diff --git a/workshops/modernizr/clean-start/frontend/.env.production b/workshops/modernizer/clean-start/frontend/.env.production similarity index 100% rename from workshops/modernizr/clean-start/frontend/.env.production rename to workshops/modernizer/clean-start/frontend/.env.production diff --git a/workshops/modernizr/clean-start/frontend/NAVIGATION.md b/workshops/modernizer/clean-start/frontend/NAVIGATION.md similarity index 100% rename from workshops/modernizr/clean-start/frontend/NAVIGATION.md rename to workshops/modernizer/clean-start/frontend/NAVIGATION.md diff --git a/workshops/modernizr/clean-start/frontend/README.md b/workshops/modernizer/clean-start/frontend/README.md similarity index 100% rename from workshops/modernizr/clean-start/frontend/README.md rename to workshops/modernizer/clean-start/frontend/README.md diff --git a/workshops/modernizr/clean-start/frontend/craco.config.js b/workshops/modernizer/clean-start/frontend/craco.config.js similarity index 100% rename from workshops/modernizr/clean-start/frontend/craco.config.js rename to workshops/modernizer/clean-start/frontend/craco.config.js diff --git a/workshops/modernizr/clean-start/frontend/package.json b/workshops/modernizer/clean-start/frontend/package.json similarity index 100% rename from workshops/modernizr/clean-start/frontend/package.json rename to workshops/modernizer/clean-start/frontend/package.json diff --git a/workshops/modernizr/clean-start/frontend/public/favicon.ico b/workshops/modernizer/clean-start/frontend/public/favicon.ico similarity index 100% rename from workshops/modernizr/clean-start/frontend/public/favicon.ico rename to workshops/modernizer/clean-start/frontend/public/favicon.ico diff --git a/workshops/modernizr/clean-start/frontend/public/index.html b/workshops/modernizer/clean-start/frontend/public/index.html similarity index 100% rename from workshops/modernizr/clean-start/frontend/public/index.html rename to workshops/modernizer/clean-start/frontend/public/index.html diff --git a/workshops/modernizr/clean-start/frontend/public/manifest.json b/workshops/modernizer/clean-start/frontend/public/manifest.json similarity index 100% rename from workshops/modernizr/clean-start/frontend/public/manifest.json rename to workshops/modernizer/clean-start/frontend/public/manifest.json diff --git a/workshops/modernizr/clean-start/frontend/public/robots.txt b/workshops/modernizer/clean-start/frontend/public/robots.txt similarity index 100% rename from workshops/modernizr/clean-start/frontend/public/robots.txt rename to workshops/modernizer/clean-start/frontend/public/robots.txt diff --git a/workshops/modernizr/clean-start/frontend/src/App.tsx b/workshops/modernizer/clean-start/frontend/src/App.tsx similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/App.tsx rename to workshops/modernizer/clean-start/frontend/src/App.tsx diff --git a/workshops/modernizr/clean-start/frontend/src/components/CategoryFilter.tsx b/workshops/modernizer/clean-start/frontend/src/components/CategoryFilter.tsx similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/components/CategoryFilter.tsx rename to workshops/modernizer/clean-start/frontend/src/components/CategoryFilter.tsx diff --git a/workshops/modernizr/clean-start/frontend/src/components/ErrorBoundary.tsx b/workshops/modernizer/clean-start/frontend/src/components/ErrorBoundary.tsx similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/components/ErrorBoundary.tsx rename to workshops/modernizer/clean-start/frontend/src/components/ErrorBoundary.tsx diff --git a/workshops/modernizr/clean-start/frontend/src/components/FormField.tsx b/workshops/modernizer/clean-start/frontend/src/components/FormField.tsx similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/components/FormField.tsx rename to workshops/modernizer/clean-start/frontend/src/components/FormField.tsx diff --git a/workshops/modernizr/clean-start/frontend/src/components/Layout.tsx b/workshops/modernizer/clean-start/frontend/src/components/Layout.tsx similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/components/Layout.tsx rename to workshops/modernizer/clean-start/frontend/src/components/Layout.tsx diff --git a/workshops/modernizr/clean-start/frontend/src/components/LoadingSpinner.tsx b/workshops/modernizer/clean-start/frontend/src/components/LoadingSpinner.tsx similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/components/LoadingSpinner.tsx rename to workshops/modernizer/clean-start/frontend/src/components/LoadingSpinner.tsx diff --git a/workshops/modernizr/clean-start/frontend/src/components/PageErrorBoundary.tsx b/workshops/modernizer/clean-start/frontend/src/components/PageErrorBoundary.tsx similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/components/PageErrorBoundary.tsx rename to workshops/modernizer/clean-start/frontend/src/components/PageErrorBoundary.tsx diff --git a/workshops/modernizr/clean-start/frontend/src/components/Pagination.tsx b/workshops/modernizer/clean-start/frontend/src/components/Pagination.tsx similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/components/Pagination.tsx rename to workshops/modernizer/clean-start/frontend/src/components/Pagination.tsx diff --git a/workshops/modernizr/clean-start/frontend/src/components/ProductCard.tsx b/workshops/modernizer/clean-start/frontend/src/components/ProductCard.tsx similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/components/ProductCard.tsx rename to workshops/modernizer/clean-start/frontend/src/components/ProductCard.tsx diff --git a/workshops/modernizr/clean-start/frontend/src/components/ProtectedRoute.tsx b/workshops/modernizer/clean-start/frontend/src/components/ProtectedRoute.tsx similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/components/ProtectedRoute.tsx rename to workshops/modernizer/clean-start/frontend/src/components/ProtectedRoute.tsx diff --git a/workshops/modernizr/clean-start/frontend/src/components/SearchBar.tsx b/workshops/modernizer/clean-start/frontend/src/components/SearchBar.tsx similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/components/SearchBar.tsx rename to workshops/modernizer/clean-start/frontend/src/components/SearchBar.tsx diff --git a/workshops/modernizr/clean-start/frontend/src/components/Toast.tsx b/workshops/modernizer/clean-start/frontend/src/components/Toast.tsx similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/components/Toast.tsx rename to workshops/modernizer/clean-start/frontend/src/components/Toast.tsx diff --git a/workshops/modernizr/clean-start/frontend/src/contexts/AuthContext.tsx b/workshops/modernizer/clean-start/frontend/src/contexts/AuthContext.tsx similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/contexts/AuthContext.tsx rename to workshops/modernizer/clean-start/frontend/src/contexts/AuthContext.tsx diff --git a/workshops/modernizr/clean-start/frontend/src/contexts/CartContext.tsx b/workshops/modernizer/clean-start/frontend/src/contexts/CartContext.tsx similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/contexts/CartContext.tsx rename to workshops/modernizer/clean-start/frontend/src/contexts/CartContext.tsx diff --git a/workshops/modernizr/clean-start/frontend/src/index.css b/workshops/modernizer/clean-start/frontend/src/index.css similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/index.css rename to workshops/modernizer/clean-start/frontend/src/index.css diff --git a/workshops/modernizr/clean-start/frontend/src/index.tsx b/workshops/modernizer/clean-start/frontend/src/index.tsx similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/index.tsx rename to workshops/modernizer/clean-start/frontend/src/index.tsx diff --git a/workshops/modernizr/clean-start/frontend/src/pages/CartPage.tsx b/workshops/modernizer/clean-start/frontend/src/pages/CartPage.tsx similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/pages/CartPage.tsx rename to workshops/modernizer/clean-start/frontend/src/pages/CartPage.tsx diff --git a/workshops/modernizr/clean-start/frontend/src/pages/CategoriesPage.tsx b/workshops/modernizer/clean-start/frontend/src/pages/CategoriesPage.tsx similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/pages/CategoriesPage.tsx rename to workshops/modernizer/clean-start/frontend/src/pages/CategoriesPage.tsx diff --git a/workshops/modernizr/clean-start/frontend/src/pages/CheckoutPage.tsx b/workshops/modernizer/clean-start/frontend/src/pages/CheckoutPage.tsx similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/pages/CheckoutPage.tsx rename to workshops/modernizer/clean-start/frontend/src/pages/CheckoutPage.tsx diff --git a/workshops/modernizr/clean-start/frontend/src/pages/CreateProductPage.tsx b/workshops/modernizer/clean-start/frontend/src/pages/CreateProductPage.tsx similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/pages/CreateProductPage.tsx rename to workshops/modernizer/clean-start/frontend/src/pages/CreateProductPage.tsx diff --git a/workshops/modernizr/clean-start/frontend/src/pages/EditProductPage.tsx b/workshops/modernizer/clean-start/frontend/src/pages/EditProductPage.tsx similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/pages/EditProductPage.tsx rename to workshops/modernizer/clean-start/frontend/src/pages/EditProductPage.tsx diff --git a/workshops/modernizr/clean-start/frontend/src/pages/HomePage.tsx b/workshops/modernizer/clean-start/frontend/src/pages/HomePage.tsx similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/pages/HomePage.tsx rename to workshops/modernizer/clean-start/frontend/src/pages/HomePage.tsx diff --git a/workshops/modernizr/clean-start/frontend/src/pages/LoginPage.tsx b/workshops/modernizer/clean-start/frontend/src/pages/LoginPage.tsx similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/pages/LoginPage.tsx rename to workshops/modernizer/clean-start/frontend/src/pages/LoginPage.tsx diff --git a/workshops/modernizr/clean-start/frontend/src/pages/OrderConfirmationPage.tsx b/workshops/modernizer/clean-start/frontend/src/pages/OrderConfirmationPage.tsx similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/pages/OrderConfirmationPage.tsx rename to workshops/modernizer/clean-start/frontend/src/pages/OrderConfirmationPage.tsx diff --git a/workshops/modernizr/clean-start/frontend/src/pages/OrderDetailPage.tsx b/workshops/modernizer/clean-start/frontend/src/pages/OrderDetailPage.tsx similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/pages/OrderDetailPage.tsx rename to workshops/modernizer/clean-start/frontend/src/pages/OrderDetailPage.tsx diff --git a/workshops/modernizr/clean-start/frontend/src/pages/OrderHistoryPage.tsx b/workshops/modernizer/clean-start/frontend/src/pages/OrderHistoryPage.tsx similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/pages/OrderHistoryPage.tsx rename to workshops/modernizer/clean-start/frontend/src/pages/OrderHistoryPage.tsx diff --git a/workshops/modernizr/clean-start/frontend/src/pages/ProductDetailPage.tsx b/workshops/modernizer/clean-start/frontend/src/pages/ProductDetailPage.tsx similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/pages/ProductDetailPage.tsx rename to workshops/modernizer/clean-start/frontend/src/pages/ProductDetailPage.tsx diff --git a/workshops/modernizr/clean-start/frontend/src/pages/ProductsPage.tsx b/workshops/modernizer/clean-start/frontend/src/pages/ProductsPage.tsx similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/pages/ProductsPage.tsx rename to workshops/modernizer/clean-start/frontend/src/pages/ProductsPage.tsx diff --git a/workshops/modernizr/clean-start/frontend/src/pages/ProfilePage.tsx b/workshops/modernizer/clean-start/frontend/src/pages/ProfilePage.tsx similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/pages/ProfilePage.tsx rename to workshops/modernizer/clean-start/frontend/src/pages/ProfilePage.tsx diff --git a/workshops/modernizr/clean-start/frontend/src/pages/RegisterPage.tsx b/workshops/modernizer/clean-start/frontend/src/pages/RegisterPage.tsx similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/pages/RegisterPage.tsx rename to workshops/modernizer/clean-start/frontend/src/pages/RegisterPage.tsx diff --git a/workshops/modernizr/clean-start/frontend/src/pages/SellerDashboardPage.tsx b/workshops/modernizer/clean-start/frontend/src/pages/SellerDashboardPage.tsx similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/pages/SellerDashboardPage.tsx rename to workshops/modernizer/clean-start/frontend/src/pages/SellerDashboardPage.tsx diff --git a/workshops/modernizr/clean-start/frontend/src/pages/SellerProductsPage.tsx b/workshops/modernizer/clean-start/frontend/src/pages/SellerProductsPage.tsx similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/pages/SellerProductsPage.tsx rename to workshops/modernizer/clean-start/frontend/src/pages/SellerProductsPage.tsx diff --git a/workshops/modernizr/clean-start/frontend/src/pages/UpgradeSellerPage.tsx b/workshops/modernizer/clean-start/frontend/src/pages/UpgradeSellerPage.tsx similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/pages/UpgradeSellerPage.tsx rename to workshops/modernizer/clean-start/frontend/src/pages/UpgradeSellerPage.tsx diff --git a/workshops/modernizr/clean-start/frontend/src/react-app-env.d.ts b/workshops/modernizer/clean-start/frontend/src/react-app-env.d.ts similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/react-app-env.d.ts rename to workshops/modernizer/clean-start/frontend/src/react-app-env.d.ts diff --git a/workshops/modernizr/clean-start/frontend/src/services/__tests__/auth.integration.test.ts b/workshops/modernizer/clean-start/frontend/src/services/__tests__/auth.integration.test.ts similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/services/__tests__/auth.integration.test.ts rename to workshops/modernizer/clean-start/frontend/src/services/__tests__/auth.integration.test.ts diff --git a/workshops/modernizr/clean-start/frontend/src/services/__tests__/enhancedErrorService.test.ts b/workshops/modernizer/clean-start/frontend/src/services/__tests__/enhancedErrorService.test.ts similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/services/__tests__/enhancedErrorService.test.ts rename to workshops/modernizer/clean-start/frontend/src/services/__tests__/enhancedErrorService.test.ts diff --git a/workshops/modernizr/clean-start/frontend/src/services/__tests__/secureStorage.integration.test.ts b/workshops/modernizer/clean-start/frontend/src/services/__tests__/secureStorage.integration.test.ts similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/services/__tests__/secureStorage.integration.test.ts rename to workshops/modernizer/clean-start/frontend/src/services/__tests__/secureStorage.integration.test.ts diff --git a/workshops/modernizr/clean-start/frontend/src/services/__tests__/secureStorage.realToken.test.ts b/workshops/modernizer/clean-start/frontend/src/services/__tests__/secureStorage.realToken.test.ts similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/services/__tests__/secureStorage.realToken.test.ts rename to workshops/modernizer/clean-start/frontend/src/services/__tests__/secureStorage.realToken.test.ts diff --git a/workshops/modernizr/clean-start/frontend/src/services/api.ts b/workshops/modernizer/clean-start/frontend/src/services/api.ts similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/services/api.ts rename to workshops/modernizer/clean-start/frontend/src/services/api.ts diff --git a/workshops/modernizr/clean-start/frontend/src/services/errorService.ts b/workshops/modernizer/clean-start/frontend/src/services/errorService.ts similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/services/errorService.ts rename to workshops/modernizer/clean-start/frontend/src/services/errorService.ts diff --git a/workshops/modernizr/clean-start/frontend/src/services/logger.ts b/workshops/modernizer/clean-start/frontend/src/services/logger.ts similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/services/logger.ts rename to workshops/modernizer/clean-start/frontend/src/services/logger.ts diff --git a/workshops/modernizr/clean-start/frontend/src/services/sanitizationService.ts b/workshops/modernizer/clean-start/frontend/src/services/sanitizationService.ts similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/services/sanitizationService.ts rename to workshops/modernizer/clean-start/frontend/src/services/sanitizationService.ts diff --git a/workshops/modernizr/clean-start/frontend/src/services/secureStorage.ts b/workshops/modernizer/clean-start/frontend/src/services/secureStorage.ts similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/services/secureStorage.ts rename to workshops/modernizer/clean-start/frontend/src/services/secureStorage.ts diff --git a/workshops/modernizr/clean-start/frontend/src/services/tokenRefreshService.ts b/workshops/modernizer/clean-start/frontend/src/services/tokenRefreshService.ts similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/services/tokenRefreshService.ts rename to workshops/modernizer/clean-start/frontend/src/services/tokenRefreshService.ts diff --git a/workshops/modernizr/clean-start/frontend/src/setupTests.ts b/workshops/modernizer/clean-start/frontend/src/setupTests.ts similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/setupTests.ts rename to workshops/modernizer/clean-start/frontend/src/setupTests.ts diff --git a/workshops/modernizr/clean-start/frontend/src/tests/components/ErrorBoundary.test.tsx b/workshops/modernizer/clean-start/frontend/src/tests/components/ErrorBoundary.test.tsx similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/tests/components/ErrorBoundary.test.tsx rename to workshops/modernizer/clean-start/frontend/src/tests/components/ErrorBoundary.test.tsx diff --git a/workshops/modernizr/clean-start/frontend/src/tests/components/FormField.test.tsx b/workshops/modernizer/clean-start/frontend/src/tests/components/FormField.test.tsx similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/tests/components/FormField.test.tsx rename to workshops/modernizer/clean-start/frontend/src/tests/components/FormField.test.tsx diff --git a/workshops/modernizr/clean-start/frontend/src/tests/components/LoadingSpinner.test.tsx b/workshops/modernizer/clean-start/frontend/src/tests/components/LoadingSpinner.test.tsx similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/tests/components/LoadingSpinner.test.tsx rename to workshops/modernizer/clean-start/frontend/src/tests/components/LoadingSpinner.test.tsx diff --git a/workshops/modernizr/clean-start/frontend/src/tests/performance/component-performance.test.tsx b/workshops/modernizer/clean-start/frontend/src/tests/performance/component-performance.test.tsx similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/tests/performance/component-performance.test.tsx rename to workshops/modernizer/clean-start/frontend/src/tests/performance/component-performance.test.tsx diff --git a/workshops/modernizr/clean-start/frontend/src/tests/services/errorService.test.ts b/workshops/modernizer/clean-start/frontend/src/tests/services/errorService.test.ts similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/tests/services/errorService.test.ts rename to workshops/modernizer/clean-start/frontend/src/tests/services/errorService.test.ts diff --git a/workshops/modernizr/clean-start/frontend/src/utils/errorHandling.tsx b/workshops/modernizer/clean-start/frontend/src/utils/errorHandling.tsx similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/utils/errorHandling.tsx rename to workshops/modernizer/clean-start/frontend/src/utils/errorHandling.tsx diff --git a/workshops/modernizr/clean-start/frontend/src/utils/lazyLoad.tsx b/workshops/modernizer/clean-start/frontend/src/utils/lazyLoad.tsx similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/utils/lazyLoad.tsx rename to workshops/modernizer/clean-start/frontend/src/utils/lazyLoad.tsx diff --git a/workshops/modernizr/clean-start/frontend/src/utils/memoization.tsx b/workshops/modernizer/clean-start/frontend/src/utils/memoization.tsx similarity index 100% rename from workshops/modernizr/clean-start/frontend/src/utils/memoization.tsx rename to workshops/modernizer/clean-start/frontend/src/utils/memoization.tsx diff --git a/workshops/modernizr/clean-start/frontend/tailwind.config.js b/workshops/modernizer/clean-start/frontend/tailwind.config.js similarity index 100% rename from workshops/modernizr/clean-start/frontend/tailwind.config.js rename to workshops/modernizer/clean-start/frontend/tailwind.config.js diff --git a/workshops/modernizr/clean-start/frontend/tsconfig.json b/workshops/modernizer/clean-start/frontend/tsconfig.json similarity index 100% rename from workshops/modernizr/clean-start/frontend/tsconfig.json rename to workshops/modernizer/clean-start/frontend/tsconfig.json diff --git a/workshops/modernizr/clean-start/prompts/00-mysql-dynamodb-migration-orchestrator/design.md b/workshops/modernizer/clean-start/prompts/00-mysql-dynamodb-migration-orchestrator/design.md similarity index 100% rename from workshops/modernizr/clean-start/prompts/00-mysql-dynamodb-migration-orchestrator/design.md rename to workshops/modernizer/clean-start/prompts/00-mysql-dynamodb-migration-orchestrator/design.md diff --git a/workshops/modernizr/clean-start/prompts/00-mysql-dynamodb-migration-orchestrator/requirements.md b/workshops/modernizer/clean-start/prompts/00-mysql-dynamodb-migration-orchestrator/requirements.md similarity index 100% rename from workshops/modernizr/clean-start/prompts/00-mysql-dynamodb-migration-orchestrator/requirements.md rename to workshops/modernizer/clean-start/prompts/00-mysql-dynamodb-migration-orchestrator/requirements.md diff --git a/workshops/modernizr/clean-start/prompts/00-mysql-dynamodb-migration-orchestrator/tasks.md b/workshops/modernizer/clean-start/prompts/00-mysql-dynamodb-migration-orchestrator/tasks.md similarity index 100% rename from workshops/modernizr/clean-start/prompts/00-mysql-dynamodb-migration-orchestrator/tasks.md rename to workshops/modernizer/clean-start/prompts/00-mysql-dynamodb-migration-orchestrator/tasks.md diff --git a/workshops/modernizr/clean-start/prompts/01-mysql-analysis/design.md b/workshops/modernizer/clean-start/prompts/01-mysql-analysis/design.md similarity index 100% rename from workshops/modernizr/clean-start/prompts/01-mysql-analysis/design.md rename to workshops/modernizer/clean-start/prompts/01-mysql-analysis/design.md diff --git a/workshops/modernizr/clean-start/prompts/01-mysql-analysis/requirements.md b/workshops/modernizer/clean-start/prompts/01-mysql-analysis/requirements.md similarity index 100% rename from workshops/modernizr/clean-start/prompts/01-mysql-analysis/requirements.md rename to workshops/modernizer/clean-start/prompts/01-mysql-analysis/requirements.md diff --git a/workshops/modernizr/clean-start/prompts/01-mysql-analysis/tasks.md b/workshops/modernizer/clean-start/prompts/01-mysql-analysis/tasks.md similarity index 100% rename from workshops/modernizr/clean-start/prompts/01-mysql-analysis/tasks.md rename to workshops/modernizer/clean-start/prompts/01-mysql-analysis/tasks.md diff --git a/workshops/modernizr/clean-start/prompts/02-a-dynamodb-data-modeling/design.md b/workshops/modernizer/clean-start/prompts/02-a-dynamodb-data-modeling/design.md similarity index 100% rename from workshops/modernizr/clean-start/prompts/02-a-dynamodb-data-modeling/design.md rename to workshops/modernizer/clean-start/prompts/02-a-dynamodb-data-modeling/design.md diff --git a/workshops/modernizr/clean-start/prompts/02-a-dynamodb-data-modeling/requirements.md b/workshops/modernizer/clean-start/prompts/02-a-dynamodb-data-modeling/requirements.md similarity index 100% rename from workshops/modernizr/clean-start/prompts/02-a-dynamodb-data-modeling/requirements.md rename to workshops/modernizer/clean-start/prompts/02-a-dynamodb-data-modeling/requirements.md diff --git a/workshops/modernizr/clean-start/prompts/02-a-dynamodb-data-modeling/tasks.md b/workshops/modernizer/clean-start/prompts/02-a-dynamodb-data-modeling/tasks.md similarity index 100% rename from workshops/modernizr/clean-start/prompts/02-a-dynamodb-data-modeling/tasks.md rename to workshops/modernizer/clean-start/prompts/02-a-dynamodb-data-modeling/tasks.md diff --git a/workshops/modernizr/clean-start/prompts/02-dynamodb-data-modeling/design.md b/workshops/modernizer/clean-start/prompts/02-dynamodb-data-modeling/design.md similarity index 100% rename from workshops/modernizr/clean-start/prompts/02-dynamodb-data-modeling/design.md rename to workshops/modernizer/clean-start/prompts/02-dynamodb-data-modeling/design.md diff --git a/workshops/modernizr/clean-start/prompts/02-dynamodb-data-modeling/requirements.md b/workshops/modernizer/clean-start/prompts/02-dynamodb-data-modeling/requirements.md similarity index 100% rename from workshops/modernizr/clean-start/prompts/02-dynamodb-data-modeling/requirements.md rename to workshops/modernizer/clean-start/prompts/02-dynamodb-data-modeling/requirements.md diff --git a/workshops/modernizr/clean-start/prompts/02-dynamodb-data-modeling/tasks.md b/workshops/modernizer/clean-start/prompts/02-dynamodb-data-modeling/tasks.md similarity index 100% rename from workshops/modernizr/clean-start/prompts/02-dynamodb-data-modeling/tasks.md rename to workshops/modernizer/clean-start/prompts/02-dynamodb-data-modeling/tasks.md diff --git a/workshops/modernizr/clean-start/prompts/03-dual-database-abstraction/design.md b/workshops/modernizer/clean-start/prompts/03-dual-database-abstraction/design.md similarity index 100% rename from workshops/modernizr/clean-start/prompts/03-dual-database-abstraction/design.md rename to workshops/modernizer/clean-start/prompts/03-dual-database-abstraction/design.md diff --git a/workshops/modernizr/clean-start/prompts/03-dual-database-abstraction/requirements.md b/workshops/modernizer/clean-start/prompts/03-dual-database-abstraction/requirements.md similarity index 100% rename from workshops/modernizr/clean-start/prompts/03-dual-database-abstraction/requirements.md rename to workshops/modernizer/clean-start/prompts/03-dual-database-abstraction/requirements.md diff --git a/workshops/modernizr/clean-start/prompts/03-dual-database-abstraction/tasks.md b/workshops/modernizer/clean-start/prompts/03-dual-database-abstraction/tasks.md similarity index 100% rename from workshops/modernizr/clean-start/prompts/03-dual-database-abstraction/tasks.md rename to workshops/modernizer/clean-start/prompts/03-dual-database-abstraction/tasks.md diff --git a/workshops/modernizr/clean-start/prompts/04-dynamodb-implementation/design.md b/workshops/modernizer/clean-start/prompts/04-dynamodb-implementation/design.md similarity index 100% rename from workshops/modernizr/clean-start/prompts/04-dynamodb-implementation/design.md rename to workshops/modernizer/clean-start/prompts/04-dynamodb-implementation/design.md diff --git a/workshops/modernizr/clean-start/prompts/04-dynamodb-implementation/requirements.md b/workshops/modernizer/clean-start/prompts/04-dynamodb-implementation/requirements.md similarity index 100% rename from workshops/modernizr/clean-start/prompts/04-dynamodb-implementation/requirements.md rename to workshops/modernizer/clean-start/prompts/04-dynamodb-implementation/requirements.md diff --git a/workshops/modernizr/clean-start/prompts/04-dynamodb-implementation/tasks.md b/workshops/modernizer/clean-start/prompts/04-dynamodb-implementation/tasks.md similarity index 100% rename from workshops/modernizr/clean-start/prompts/04-dynamodb-implementation/tasks.md rename to workshops/modernizer/clean-start/prompts/04-dynamodb-implementation/tasks.md diff --git a/workshops/modernizr/clean-start/prompts/05-feature-flags-system/design.md b/workshops/modernizer/clean-start/prompts/05-feature-flags-system/design.md similarity index 100% rename from workshops/modernizr/clean-start/prompts/05-feature-flags-system/design.md rename to workshops/modernizer/clean-start/prompts/05-feature-flags-system/design.md diff --git a/workshops/modernizr/clean-start/prompts/05-feature-flags-system/requirements.md b/workshops/modernizer/clean-start/prompts/05-feature-flags-system/requirements.md similarity index 100% rename from workshops/modernizr/clean-start/prompts/05-feature-flags-system/requirements.md rename to workshops/modernizer/clean-start/prompts/05-feature-flags-system/requirements.md diff --git a/workshops/modernizr/clean-start/prompts/05-feature-flags-system/tasks.md b/workshops/modernizer/clean-start/prompts/05-feature-flags-system/tasks.md similarity index 100% rename from workshops/modernizr/clean-start/prompts/05-feature-flags-system/tasks.md rename to workshops/modernizer/clean-start/prompts/05-feature-flags-system/tasks.md diff --git a/workshops/modernizr/clean-start/prompts/06-infrastructure-deployment/design.md b/workshops/modernizer/clean-start/prompts/06-infrastructure-deployment/design.md similarity index 100% rename from workshops/modernizr/clean-start/prompts/06-infrastructure-deployment/design.md rename to workshops/modernizer/clean-start/prompts/06-infrastructure-deployment/design.md diff --git a/workshops/modernizr/clean-start/prompts/06-infrastructure-deployment/requirements.md b/workshops/modernizer/clean-start/prompts/06-infrastructure-deployment/requirements.md similarity index 100% rename from workshops/modernizr/clean-start/prompts/06-infrastructure-deployment/requirements.md rename to workshops/modernizer/clean-start/prompts/06-infrastructure-deployment/requirements.md diff --git a/workshops/modernizr/clean-start/prompts/06-infrastructure-deployment/tasks.md b/workshops/modernizer/clean-start/prompts/06-infrastructure-deployment/tasks.md similarity index 100% rename from workshops/modernizr/clean-start/prompts/06-infrastructure-deployment/tasks.md rename to workshops/modernizer/clean-start/prompts/06-infrastructure-deployment/tasks.md diff --git a/workshops/modernizr/clean-start/prompts/07-data-migration-execution/design.md b/workshops/modernizer/clean-start/prompts/07-data-migration-execution/design.md similarity index 100% rename from workshops/modernizr/clean-start/prompts/07-data-migration-execution/design.md rename to workshops/modernizer/clean-start/prompts/07-data-migration-execution/design.md diff --git a/workshops/modernizr/clean-start/prompts/07-data-migration-execution/requirements.md b/workshops/modernizer/clean-start/prompts/07-data-migration-execution/requirements.md similarity index 100% rename from workshops/modernizr/clean-start/prompts/07-data-migration-execution/requirements.md rename to workshops/modernizer/clean-start/prompts/07-data-migration-execution/requirements.md diff --git a/workshops/modernizr/clean-start/prompts/07-data-migration-execution/tasks.md b/workshops/modernizer/clean-start/prompts/07-data-migration-execution/tasks.md similarity index 100% rename from workshops/modernizr/clean-start/prompts/07-data-migration-execution/tasks.md rename to workshops/modernizer/clean-start/prompts/07-data-migration-execution/tasks.md diff --git a/workshops/modernizr/clean-start/prompts/README.md b/workshops/modernizer/clean-start/prompts/README.md similarity index 100% rename from workshops/modernizr/clean-start/prompts/README.md rename to workshops/modernizer/clean-start/prompts/README.md diff --git a/workshops/modernizr/clean-start/tools/config.json b/workshops/modernizer/clean-start/tools/config.json similarity index 100% rename from workshops/modernizr/clean-start/tools/config.json rename to workshops/modernizer/clean-start/tools/config.json diff --git a/workshops/modernizr/clean-start/tools/contract_driven_migration_glue_mcp.py b/workshops/modernizer/clean-start/tools/contract_driven_migration_glue_mcp.py similarity index 98% rename from workshops/modernizr/clean-start/tools/contract_driven_migration_glue_mcp.py rename to workshops/modernizer/clean-start/tools/contract_driven_migration_glue_mcp.py index 814662af..5e7414ec 100644 --- a/workshops/modernizr/clean-start/tools/contract_driven_migration_glue_mcp.py +++ b/workshops/modernizer/clean-start/tools/contract_driven_migration_glue_mcp.py @@ -384,13 +384,13 @@ def get_mysql_config_from_mcp(use_private_ip=False): def verify_glue_connection(aws_config): """Verify that the CloudFormation-created Glue connection exists""" - print("🔗 Verifying Glue connection: mysql-modernizr-connection...") + print("🔗 Verifying Glue connection: mysql-modernizer-connection...") connection_script = f''' import boto3 glue = boto3.client('glue', region_name='{aws_config['region']}') try: - response = glue.get_connection(Name='mysql-modernizr-connection') + response = glue.get_connection(Name='mysql-modernizer-connection') connection = response['Connection'] print(f"Connection found: {{connection['Name']}}") print(f"Connection type: {{connection['ConnectionType']}}") @@ -407,7 +407,7 @@ def verify_glue_connection(aws_config): os.unlink(script_path) if "SUCCESS" in result.stdout: - print(" ✅ Glue connection verified: mysql-modernizr-connection") + print(" ✅ Glue connection verified: mysql-modernizer-connection") return True else: print(f" ❌ Connection not found: {result.stdout}") @@ -513,7 +513,7 @@ def create_glue_jobs_via_mcp(contract, created_views, mysql_config, config): 'MaxConcurrentRuns': 1 }}, Connections={{ - 'Connections': ['mysql-modernizr-connection'] + 'Connections': ['mysql-modernizer-connection'] }}, MaxRetries=0, Timeout=60 diff --git a/workshops/modernizr/clean-start/tools/contract_driven_migration_mcp.py b/workshops/modernizer/clean-start/tools/contract_driven_migration_mcp.py similarity index 100% rename from workshops/modernizr/clean-start/tools/contract_driven_migration_mcp.py rename to workshops/modernizer/clean-start/tools/contract_driven_migration_mcp.py diff --git a/workshops/modernizr/clean-start/tools/generate_mysql_views.py b/workshops/modernizer/clean-start/tools/generate_mysql_views.py similarity index 100% rename from workshops/modernizr/clean-start/tools/generate_mysql_views.py rename to workshops/modernizer/clean-start/tools/generate_mysql_views.py diff --git a/workshops/modernizr/tools/glue_script_template.py b/workshops/modernizer/clean-start/tools/glue_script_template.py similarity index 97% rename from workshops/modernizr/tools/glue_script_template.py rename to workshops/modernizer/clean-start/tools/glue_script_template.py index a94326c2..d5d2a4b4 100644 --- a/workshops/modernizr/tools/glue_script_template.py +++ b/workshops/modernizer/clean-start/tools/glue_script_template.py @@ -29,12 +29,12 @@ # Read from MySQL using the Glue connection try: - print(f"Attempting to read from MySQL using Glue connection: mysql-modernizr-connection") + print(f"Attempting to read from MySQL using Glue connection: mysql-modernizer-connection") mysql_df = glueContext.create_dynamic_frame.from_options( connection_type="mysql", connection_options={ "useConnectionProperties": "true", - "connectionName": "mysql-modernizr-connection", + "connectionName": "mysql-modernizer-connection", "dbtable": VIEW_NAME }, transformation_ctx="mysql_source" diff --git a/workshops/modernizr/contracts/migration_contract_generation_guide.md b/workshops/modernizer/contracts/migration_contract_generation_guide.md similarity index 100% rename from workshops/modernizr/contracts/migration_contract_generation_guide.md rename to workshops/modernizer/contracts/migration_contract_generation_guide.md diff --git a/workshops/modernizr/contracts/migration_contract_patterns.md b/workshops/modernizer/contracts/migration_contract_patterns.md similarity index 100% rename from workshops/modernizr/contracts/migration_contract_patterns.md rename to workshops/modernizer/contracts/migration_contract_patterns.md diff --git a/workshops/modernizr/contracts/migration_contract_schema.json b/workshops/modernizer/contracts/migration_contract_schema.json similarity index 100% rename from workshops/modernizr/contracts/migration_contract_schema.json rename to workshops/modernizer/contracts/migration_contract_schema.json diff --git a/workshops/modernizr/core-outputs/stage-01/01_1_API_access_patterns.md b/workshops/modernizer/core-outputs/stage-01/01_1_API_access_patterns.md similarity index 100% rename from workshops/modernizr/core-outputs/stage-01/01_1_API_access_patterns.md rename to workshops/modernizer/core-outputs/stage-01/01_1_API_access_patterns.md diff --git a/workshops/modernizr/core-outputs/stage-01/01_2_mysql_log_analysis.md b/workshops/modernizer/core-outputs/stage-01/01_2_mysql_log_analysis.md similarity index 100% rename from workshops/modernizr/core-outputs/stage-01/01_2_mysql_log_analysis.md rename to workshops/modernizer/core-outputs/stage-01/01_2_mysql_log_analysis.md diff --git a/workshops/modernizr/core-outputs/stage-01/01_3_table_structure_analysis.md b/workshops/modernizer/core-outputs/stage-01/01_3_table_structure_analysis.md similarity index 100% rename from workshops/modernizr/core-outputs/stage-01/01_3_table_structure_analysis.md rename to workshops/modernizer/core-outputs/stage-01/01_3_table_structure_analysis.md diff --git a/workshops/modernizr/core-outputs/stage-02/access_patterns_with_rps.md b/workshops/modernizer/core-outputs/stage-02/access_patterns_with_rps.md similarity index 100% rename from workshops/modernizr/core-outputs/stage-02/access_patterns_with_rps.md rename to workshops/modernizer/core-outputs/stage-02/access_patterns_with_rps.md diff --git a/workshops/modernizr/core-outputs/stage-02/dynamodb_data_model.md b/workshops/modernizer/core-outputs/stage-02/dynamodb_data_model.md similarity index 100% rename from workshops/modernizr/core-outputs/stage-02/dynamodb_data_model.md rename to workshops/modernizer/core-outputs/stage-02/dynamodb_data_model.md diff --git a/workshops/modernizr/core-outputs/stage-02/dynamodb_requirement.md b/workshops/modernizer/core-outputs/stage-02/dynamodb_requirement.md similarity index 100% rename from workshops/modernizr/core-outputs/stage-02/dynamodb_requirement.md rename to workshops/modernizer/core-outputs/stage-02/dynamodb_requirement.md diff --git a/workshops/modernizr/core-outputs/stage-02/migrationContract.json b/workshops/modernizer/core-outputs/stage-02/migrationContract.json similarity index 100% rename from workshops/modernizr/core-outputs/stage-02/migrationContract.json rename to workshops/modernizer/core-outputs/stage-02/migrationContract.json diff --git a/workshops/modernizr/database/README.md b/workshops/modernizer/database/README.md similarity index 100% rename from workshops/modernizr/database/README.md rename to workshops/modernizer/database/README.md diff --git a/workshops/modernizr/database/mysql-query.log b/workshops/modernizer/database/mysql-query.log similarity index 100% rename from workshops/modernizr/database/mysql-query.log rename to workshops/modernizer/database/mysql-query.log diff --git a/workshops/modernizr/database/mysql-query.zip b/workshops/modernizer/database/mysql-query.zip similarity index 100% rename from workshops/modernizr/database/mysql-query.zip rename to workshops/modernizer/database/mysql-query.zip diff --git a/workshops/modernizr/database/mysql_analysis_output.txt b/workshops/modernizer/database/mysql_analysis_output.txt similarity index 100% rename from workshops/modernizr/database/mysql_analysis_output.txt rename to workshops/modernizer/database/mysql_analysis_output.txt diff --git a/workshops/modernizr/database/mysql_log_parser.py b/workshops/modernizer/database/mysql_log_parser.py similarity index 100% rename from workshops/modernizr/database/mysql_log_parser.py rename to workshops/modernizer/database/mysql_log_parser.py diff --git a/workshops/modernizr/database/requirements.txt b/workshops/modernizer/database/requirements.txt similarity index 100% rename from workshops/modernizr/database/requirements.txt rename to workshops/modernizer/database/requirements.txt diff --git a/workshops/modernizr/docker/docker-compose.yml b/workshops/modernizer/docker/docker-compose.yml similarity index 100% rename from workshops/modernizr/docker/docker-compose.yml rename to workshops/modernizer/docker/docker-compose.yml diff --git a/workshops/modernizr/entity_relationships_diagram.md b/workshops/modernizer/entity_relationships_diagram.md similarity index 98% rename from workshops/modernizr/entity_relationships_diagram.md rename to workshops/modernizer/entity_relationships_diagram.md index 56740a0c..05ae6732 100644 --- a/workshops/modernizr/entity_relationships_diagram.md +++ b/workshops/modernizer/entity_relationships_diagram.md @@ -1,4 +1,4 @@ -# Entity Relationship Diagram - Modernizr E-commerce Platform +# Entity Relationship Diagram - Modernizer E-commerce Platform This diagram shows the entity relationships for the DynamoDB design based on the API access patterns analysis. diff --git a/workshops/modernizr/frontend/.env b/workshops/modernizer/frontend/.env similarity index 100% rename from workshops/modernizr/frontend/.env rename to workshops/modernizer/frontend/.env diff --git a/workshops/modernizr/frontend/.env.production b/workshops/modernizer/frontend/.env.production similarity index 100% rename from workshops/modernizr/frontend/.env.production rename to workshops/modernizer/frontend/.env.production diff --git a/workshops/modernizr/frontend/NAVIGATION.md b/workshops/modernizer/frontend/NAVIGATION.md similarity index 100% rename from workshops/modernizr/frontend/NAVIGATION.md rename to workshops/modernizer/frontend/NAVIGATION.md diff --git a/workshops/modernizr/frontend/README.md b/workshops/modernizer/frontend/README.md similarity index 100% rename from workshops/modernizr/frontend/README.md rename to workshops/modernizer/frontend/README.md diff --git a/workshops/modernizr/frontend/craco.config.js b/workshops/modernizer/frontend/craco.config.js similarity index 100% rename from workshops/modernizr/frontend/craco.config.js rename to workshops/modernizer/frontend/craco.config.js diff --git a/workshops/modernizr/frontend/package.json b/workshops/modernizer/frontend/package.json similarity index 100% rename from workshops/modernizr/frontend/package.json rename to workshops/modernizer/frontend/package.json diff --git a/workshops/modernizr/frontend/public/favicon.ico b/workshops/modernizer/frontend/public/favicon.ico similarity index 100% rename from workshops/modernizr/frontend/public/favicon.ico rename to workshops/modernizer/frontend/public/favicon.ico diff --git a/workshops/modernizr/frontend/public/index.html b/workshops/modernizer/frontend/public/index.html similarity index 100% rename from workshops/modernizr/frontend/public/index.html rename to workshops/modernizer/frontend/public/index.html diff --git a/workshops/modernizr/frontend/public/manifest.json b/workshops/modernizer/frontend/public/manifest.json similarity index 100% rename from workshops/modernizr/frontend/public/manifest.json rename to workshops/modernizer/frontend/public/manifest.json diff --git a/workshops/modernizr/frontend/public/robots.txt b/workshops/modernizer/frontend/public/robots.txt similarity index 100% rename from workshops/modernizr/frontend/public/robots.txt rename to workshops/modernizer/frontend/public/robots.txt diff --git a/workshops/modernizr/frontend/scripts/build-csp.js b/workshops/modernizer/frontend/scripts/build-csp.js similarity index 100% rename from workshops/modernizr/frontend/scripts/build-csp.js rename to workshops/modernizer/frontend/scripts/build-csp.js diff --git a/workshops/modernizr/frontend/src/App.tsx b/workshops/modernizer/frontend/src/App.tsx similarity index 100% rename from workshops/modernizr/frontend/src/App.tsx rename to workshops/modernizer/frontend/src/App.tsx diff --git a/workshops/modernizr/frontend/src/components/CategoryFilter.tsx b/workshops/modernizer/frontend/src/components/CategoryFilter.tsx similarity index 100% rename from workshops/modernizr/frontend/src/components/CategoryFilter.tsx rename to workshops/modernizer/frontend/src/components/CategoryFilter.tsx diff --git a/workshops/modernizr/frontend/src/components/ErrorBoundary.tsx b/workshops/modernizer/frontend/src/components/ErrorBoundary.tsx similarity index 100% rename from workshops/modernizr/frontend/src/components/ErrorBoundary.tsx rename to workshops/modernizer/frontend/src/components/ErrorBoundary.tsx diff --git a/workshops/modernizr/frontend/src/components/FormField.tsx b/workshops/modernizer/frontend/src/components/FormField.tsx similarity index 100% rename from workshops/modernizr/frontend/src/components/FormField.tsx rename to workshops/modernizer/frontend/src/components/FormField.tsx diff --git a/workshops/modernizr/frontend/src/components/Layout.tsx b/workshops/modernizer/frontend/src/components/Layout.tsx similarity index 100% rename from workshops/modernizr/frontend/src/components/Layout.tsx rename to workshops/modernizer/frontend/src/components/Layout.tsx diff --git a/workshops/modernizr/frontend/src/components/LoadingSpinner.tsx b/workshops/modernizer/frontend/src/components/LoadingSpinner.tsx similarity index 100% rename from workshops/modernizr/frontend/src/components/LoadingSpinner.tsx rename to workshops/modernizer/frontend/src/components/LoadingSpinner.tsx diff --git a/workshops/modernizr/frontend/src/components/PageErrorBoundary.tsx b/workshops/modernizer/frontend/src/components/PageErrorBoundary.tsx similarity index 100% rename from workshops/modernizr/frontend/src/components/PageErrorBoundary.tsx rename to workshops/modernizer/frontend/src/components/PageErrorBoundary.tsx diff --git a/workshops/modernizr/frontend/src/components/Pagination.tsx b/workshops/modernizer/frontend/src/components/Pagination.tsx similarity index 100% rename from workshops/modernizr/frontend/src/components/Pagination.tsx rename to workshops/modernizer/frontend/src/components/Pagination.tsx diff --git a/workshops/modernizr/frontend/src/components/ProductCard.tsx b/workshops/modernizer/frontend/src/components/ProductCard.tsx similarity index 100% rename from workshops/modernizr/frontend/src/components/ProductCard.tsx rename to workshops/modernizer/frontend/src/components/ProductCard.tsx diff --git a/workshops/modernizr/frontend/src/components/ProtectedRoute.tsx b/workshops/modernizer/frontend/src/components/ProtectedRoute.tsx similarity index 100% rename from workshops/modernizr/frontend/src/components/ProtectedRoute.tsx rename to workshops/modernizer/frontend/src/components/ProtectedRoute.tsx diff --git a/workshops/modernizr/frontend/src/components/SearchBar.tsx b/workshops/modernizer/frontend/src/components/SearchBar.tsx similarity index 100% rename from workshops/modernizr/frontend/src/components/SearchBar.tsx rename to workshops/modernizer/frontend/src/components/SearchBar.tsx diff --git a/workshops/modernizr/frontend/src/components/Toast.tsx b/workshops/modernizer/frontend/src/components/Toast.tsx similarity index 100% rename from workshops/modernizr/frontend/src/components/Toast.tsx rename to workshops/modernizer/frontend/src/components/Toast.tsx diff --git a/workshops/modernizr/frontend/src/contexts/AuthContext.tsx b/workshops/modernizer/frontend/src/contexts/AuthContext.tsx similarity index 100% rename from workshops/modernizr/frontend/src/contexts/AuthContext.tsx rename to workshops/modernizer/frontend/src/contexts/AuthContext.tsx diff --git a/workshops/modernizr/frontend/src/contexts/CartContext.tsx b/workshops/modernizer/frontend/src/contexts/CartContext.tsx similarity index 100% rename from workshops/modernizr/frontend/src/contexts/CartContext.tsx rename to workshops/modernizer/frontend/src/contexts/CartContext.tsx diff --git a/workshops/modernizr/frontend/src/index.css b/workshops/modernizer/frontend/src/index.css similarity index 100% rename from workshops/modernizr/frontend/src/index.css rename to workshops/modernizer/frontend/src/index.css diff --git a/workshops/modernizr/frontend/src/index.tsx b/workshops/modernizer/frontend/src/index.tsx similarity index 100% rename from workshops/modernizr/frontend/src/index.tsx rename to workshops/modernizer/frontend/src/index.tsx diff --git a/workshops/modernizr/frontend/src/pages/AdminMigrationControlPage.tsx b/workshops/modernizer/frontend/src/pages/AdminMigrationControlPage.tsx similarity index 100% rename from workshops/modernizr/frontend/src/pages/AdminMigrationControlPage.tsx rename to workshops/modernizer/frontend/src/pages/AdminMigrationControlPage.tsx diff --git a/workshops/modernizr/frontend/src/pages/CartPage.tsx b/workshops/modernizer/frontend/src/pages/CartPage.tsx similarity index 100% rename from workshops/modernizr/frontend/src/pages/CartPage.tsx rename to workshops/modernizer/frontend/src/pages/CartPage.tsx diff --git a/workshops/modernizr/frontend/src/pages/CategoriesPage.tsx b/workshops/modernizer/frontend/src/pages/CategoriesPage.tsx similarity index 100% rename from workshops/modernizr/frontend/src/pages/CategoriesPage.tsx rename to workshops/modernizer/frontend/src/pages/CategoriesPage.tsx diff --git a/workshops/modernizr/frontend/src/pages/CheckoutPage.tsx b/workshops/modernizer/frontend/src/pages/CheckoutPage.tsx similarity index 100% rename from workshops/modernizr/frontend/src/pages/CheckoutPage.tsx rename to workshops/modernizer/frontend/src/pages/CheckoutPage.tsx diff --git a/workshops/modernizr/frontend/src/pages/CreateProductPage.tsx b/workshops/modernizer/frontend/src/pages/CreateProductPage.tsx similarity index 100% rename from workshops/modernizr/frontend/src/pages/CreateProductPage.tsx rename to workshops/modernizer/frontend/src/pages/CreateProductPage.tsx diff --git a/workshops/modernizr/frontend/src/pages/EditProductPage.tsx b/workshops/modernizer/frontend/src/pages/EditProductPage.tsx similarity index 100% rename from workshops/modernizr/frontend/src/pages/EditProductPage.tsx rename to workshops/modernizer/frontend/src/pages/EditProductPage.tsx diff --git a/workshops/modernizr/frontend/src/pages/HomePage.tsx b/workshops/modernizer/frontend/src/pages/HomePage.tsx similarity index 100% rename from workshops/modernizr/frontend/src/pages/HomePage.tsx rename to workshops/modernizer/frontend/src/pages/HomePage.tsx diff --git a/workshops/modernizr/frontend/src/pages/LoginPage.tsx b/workshops/modernizer/frontend/src/pages/LoginPage.tsx similarity index 100% rename from workshops/modernizr/frontend/src/pages/LoginPage.tsx rename to workshops/modernizer/frontend/src/pages/LoginPage.tsx diff --git a/workshops/modernizr/frontend/src/pages/OrderConfirmationPage.tsx b/workshops/modernizer/frontend/src/pages/OrderConfirmationPage.tsx similarity index 100% rename from workshops/modernizr/frontend/src/pages/OrderConfirmationPage.tsx rename to workshops/modernizer/frontend/src/pages/OrderConfirmationPage.tsx diff --git a/workshops/modernizr/frontend/src/pages/OrderDetailPage.tsx b/workshops/modernizer/frontend/src/pages/OrderDetailPage.tsx similarity index 100% rename from workshops/modernizr/frontend/src/pages/OrderDetailPage.tsx rename to workshops/modernizer/frontend/src/pages/OrderDetailPage.tsx diff --git a/workshops/modernizr/frontend/src/pages/OrderHistoryPage.tsx b/workshops/modernizer/frontend/src/pages/OrderHistoryPage.tsx similarity index 100% rename from workshops/modernizr/frontend/src/pages/OrderHistoryPage.tsx rename to workshops/modernizer/frontend/src/pages/OrderHistoryPage.tsx diff --git a/workshops/modernizr/frontend/src/pages/ProductDetailPage.tsx b/workshops/modernizer/frontend/src/pages/ProductDetailPage.tsx similarity index 100% rename from workshops/modernizr/frontend/src/pages/ProductDetailPage.tsx rename to workshops/modernizer/frontend/src/pages/ProductDetailPage.tsx diff --git a/workshops/modernizr/frontend/src/pages/ProductsPage.tsx b/workshops/modernizer/frontend/src/pages/ProductsPage.tsx similarity index 100% rename from workshops/modernizr/frontend/src/pages/ProductsPage.tsx rename to workshops/modernizer/frontend/src/pages/ProductsPage.tsx diff --git a/workshops/modernizr/frontend/src/pages/ProfilePage.tsx b/workshops/modernizer/frontend/src/pages/ProfilePage.tsx similarity index 100% rename from workshops/modernizr/frontend/src/pages/ProfilePage.tsx rename to workshops/modernizer/frontend/src/pages/ProfilePage.tsx diff --git a/workshops/modernizr/frontend/src/pages/RegisterPage.tsx b/workshops/modernizer/frontend/src/pages/RegisterPage.tsx similarity index 100% rename from workshops/modernizr/frontend/src/pages/RegisterPage.tsx rename to workshops/modernizer/frontend/src/pages/RegisterPage.tsx diff --git a/workshops/modernizr/frontend/src/pages/SellerDashboardPage.tsx b/workshops/modernizer/frontend/src/pages/SellerDashboardPage.tsx similarity index 100% rename from workshops/modernizr/frontend/src/pages/SellerDashboardPage.tsx rename to workshops/modernizer/frontend/src/pages/SellerDashboardPage.tsx diff --git a/workshops/modernizr/frontend/src/pages/SellerProductsPage.tsx b/workshops/modernizer/frontend/src/pages/SellerProductsPage.tsx similarity index 100% rename from workshops/modernizr/frontend/src/pages/SellerProductsPage.tsx rename to workshops/modernizer/frontend/src/pages/SellerProductsPage.tsx diff --git a/workshops/modernizr/frontend/src/pages/UpgradeSellerPage.tsx b/workshops/modernizer/frontend/src/pages/UpgradeSellerPage.tsx similarity index 100% rename from workshops/modernizr/frontend/src/pages/UpgradeSellerPage.tsx rename to workshops/modernizer/frontend/src/pages/UpgradeSellerPage.tsx diff --git a/workshops/modernizr/frontend/src/react-app-env.d.ts b/workshops/modernizer/frontend/src/react-app-env.d.ts similarity index 100% rename from workshops/modernizr/frontend/src/react-app-env.d.ts rename to workshops/modernizer/frontend/src/react-app-env.d.ts diff --git a/workshops/modernizr/frontend/src/services/__tests__/auth.integration.test.ts b/workshops/modernizer/frontend/src/services/__tests__/auth.integration.test.ts similarity index 100% rename from workshops/modernizr/frontend/src/services/__tests__/auth.integration.test.ts rename to workshops/modernizer/frontend/src/services/__tests__/auth.integration.test.ts diff --git a/workshops/modernizr/frontend/src/services/__tests__/enhancedErrorService.test.ts b/workshops/modernizer/frontend/src/services/__tests__/enhancedErrorService.test.ts similarity index 100% rename from workshops/modernizr/frontend/src/services/__tests__/enhancedErrorService.test.ts rename to workshops/modernizer/frontend/src/services/__tests__/enhancedErrorService.test.ts diff --git a/workshops/modernizr/frontend/src/services/__tests__/secureStorage.integration.test.ts b/workshops/modernizer/frontend/src/services/__tests__/secureStorage.integration.test.ts similarity index 100% rename from workshops/modernizr/frontend/src/services/__tests__/secureStorage.integration.test.ts rename to workshops/modernizer/frontend/src/services/__tests__/secureStorage.integration.test.ts diff --git a/workshops/modernizr/frontend/src/services/__tests__/secureStorage.realToken.test.ts b/workshops/modernizer/frontend/src/services/__tests__/secureStorage.realToken.test.ts similarity index 100% rename from workshops/modernizr/frontend/src/services/__tests__/secureStorage.realToken.test.ts rename to workshops/modernizer/frontend/src/services/__tests__/secureStorage.realToken.test.ts diff --git a/workshops/modernizr/frontend/src/services/adminService.ts b/workshops/modernizer/frontend/src/services/adminService.ts similarity index 100% rename from workshops/modernizr/frontend/src/services/adminService.ts rename to workshops/modernizer/frontend/src/services/adminService.ts diff --git a/workshops/modernizr/frontend/src/services/api.ts b/workshops/modernizer/frontend/src/services/api.ts similarity index 100% rename from workshops/modernizr/frontend/src/services/api.ts rename to workshops/modernizer/frontend/src/services/api.ts diff --git a/workshops/modernizr/frontend/src/services/errorService.ts b/workshops/modernizer/frontend/src/services/errorService.ts similarity index 100% rename from workshops/modernizr/frontend/src/services/errorService.ts rename to workshops/modernizer/frontend/src/services/errorService.ts diff --git a/workshops/modernizr/frontend/src/services/logger.ts b/workshops/modernizer/frontend/src/services/logger.ts similarity index 100% rename from workshops/modernizr/frontend/src/services/logger.ts rename to workshops/modernizer/frontend/src/services/logger.ts diff --git a/workshops/modernizr/frontend/src/services/sanitizationService.ts b/workshops/modernizer/frontend/src/services/sanitizationService.ts similarity index 100% rename from workshops/modernizr/frontend/src/services/sanitizationService.ts rename to workshops/modernizer/frontend/src/services/sanitizationService.ts diff --git a/workshops/modernizr/frontend/src/services/secureStorage.ts b/workshops/modernizer/frontend/src/services/secureStorage.ts similarity index 100% rename from workshops/modernizr/frontend/src/services/secureStorage.ts rename to workshops/modernizer/frontend/src/services/secureStorage.ts diff --git a/workshops/modernizr/frontend/src/services/tokenRefreshService.ts b/workshops/modernizer/frontend/src/services/tokenRefreshService.ts similarity index 100% rename from workshops/modernizr/frontend/src/services/tokenRefreshService.ts rename to workshops/modernizer/frontend/src/services/tokenRefreshService.ts diff --git a/workshops/modernizr/frontend/src/setupTests.ts b/workshops/modernizer/frontend/src/setupTests.ts similarity index 100% rename from workshops/modernizr/frontend/src/setupTests.ts rename to workshops/modernizer/frontend/src/setupTests.ts diff --git a/workshops/modernizr/frontend/src/tests/components/ErrorBoundary.test.tsx b/workshops/modernizer/frontend/src/tests/components/ErrorBoundary.test.tsx similarity index 100% rename from workshops/modernizr/frontend/src/tests/components/ErrorBoundary.test.tsx rename to workshops/modernizer/frontend/src/tests/components/ErrorBoundary.test.tsx diff --git a/workshops/modernizr/frontend/src/tests/components/FormField.test.tsx b/workshops/modernizer/frontend/src/tests/components/FormField.test.tsx similarity index 100% rename from workshops/modernizr/frontend/src/tests/components/FormField.test.tsx rename to workshops/modernizer/frontend/src/tests/components/FormField.test.tsx diff --git a/workshops/modernizr/frontend/src/tests/components/LoadingSpinner.test.tsx b/workshops/modernizer/frontend/src/tests/components/LoadingSpinner.test.tsx similarity index 100% rename from workshops/modernizr/frontend/src/tests/components/LoadingSpinner.test.tsx rename to workshops/modernizer/frontend/src/tests/components/LoadingSpinner.test.tsx diff --git a/workshops/modernizr/frontend/src/tests/performance/component-performance.test.tsx b/workshops/modernizer/frontend/src/tests/performance/component-performance.test.tsx similarity index 100% rename from workshops/modernizr/frontend/src/tests/performance/component-performance.test.tsx rename to workshops/modernizer/frontend/src/tests/performance/component-performance.test.tsx diff --git a/workshops/modernizr/frontend/src/tests/services/errorService.test.ts b/workshops/modernizer/frontend/src/tests/services/errorService.test.ts similarity index 100% rename from workshops/modernizr/frontend/src/tests/services/errorService.test.ts rename to workshops/modernizer/frontend/src/tests/services/errorService.test.ts diff --git a/workshops/modernizr/frontend/src/utils/errorHandling.tsx b/workshops/modernizer/frontend/src/utils/errorHandling.tsx similarity index 100% rename from workshops/modernizr/frontend/src/utils/errorHandling.tsx rename to workshops/modernizer/frontend/src/utils/errorHandling.tsx diff --git a/workshops/modernizr/frontend/src/utils/lazyLoad.tsx b/workshops/modernizer/frontend/src/utils/lazyLoad.tsx similarity index 100% rename from workshops/modernizr/frontend/src/utils/lazyLoad.tsx rename to workshops/modernizer/frontend/src/utils/lazyLoad.tsx diff --git a/workshops/modernizr/frontend/src/utils/memoization.tsx b/workshops/modernizer/frontend/src/utils/memoization.tsx similarity index 100% rename from workshops/modernizr/frontend/src/utils/memoization.tsx rename to workshops/modernizer/frontend/src/utils/memoization.tsx diff --git a/workshops/modernizr/frontend/tailwind.config.js b/workshops/modernizer/frontend/tailwind.config.js similarity index 100% rename from workshops/modernizr/frontend/tailwind.config.js rename to workshops/modernizer/frontend/tailwind.config.js diff --git a/workshops/modernizr/frontend/tsconfig.json b/workshops/modernizer/frontend/tsconfig.json similarity index 100% rename from workshops/modernizr/frontend/tsconfig.json rename to workshops/modernizer/frontend/tsconfig.json diff --git a/workshops/modernizer/modernizer-db.yaml b/workshops/modernizer/modernizer-db.yaml new file mode 100644 index 00000000..6cdd93aa --- /dev/null +++ b/workshops/modernizer/modernizer-db.yaml @@ -0,0 +1,1984 @@ +Description: Provides VSCode Server, database instances, and required components without Cloud9. + +Parameters: + EnvironmentName: + Description: An environment name that is tagged to the resources. + Type: String + Default: DynamoDBID + DBLatestAmiId: + Type: 'AWS::SSM::Parameter::Value' + Default: '/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-arm64' + DbMasterUsername: + Description: The datbase master user name + Type: String + Default: dbuser + ################## VSCode Server ################# + VSCodeUser: + Type: String + Description: Username for VS code-server + Default: participant + VSCodeInstanceName: + Type: String + Description: EC2 Instance name for VS code-server + Default: VSCodeServer + VSCodeInstanceVolumeSize: + Type: Number + Description: VS code-server EC2 instance volume size in GB + Default: 40 + VSCodeInstanceType: + Description: VS code-server EC2 instance type + Type: String + Default: t4g.medium + AllowedPattern: ^(t4g|m6g|m7g|m8g|c6g|c7g)\.[0-9a-z]+$ + ConstraintDescription: Must be a valid t, c or m series Graviton EC2 instance type + VSCodeHomeFolder: + Type: String + Description: Folder to open in VS Code server + Default: /home/participant/workshop + PythonMajorMinor: + Type: String + Default: "3.13" + Description: "Python major.minor version (e.g., 3.13) for the Code instance. Latest patch version will be installed automatically." + AllowedPattern: "^[0-9]+\\.[0-9]+$" + ConstraintDescription: "Must be in format X.Y (e.g., 3.13)" + AllowedIP: + Type: String + Description: IP address allowed to access VSCode Server (use 0.0.0.0/0 for open access, not recommended) + Default: "15.248.6.46/32" + AllowedPattern: ^([0-9]{1,3}\.){3}[0-9]{1,3}(\/([0-9]|[1-2][0-9]|3[0-2]))?$ + ConstraintDescription: Must be a valid IP address in CIDR format (e.g., 1.2.3.4/32) + +Metadata: + AWS::CloudFormation::Interface: + ParameterGroups: + - Label: + default: General configuration + Parameters: + - EnvironmentName + - Label: + default: VSCode Server configuration + Parameters: + - VSCodeInstanceName + - VSCodeInstanceType + - VSCodeInstanceVolumeSize + - VSCodeUser + - VSCodeHomeFolder + ParameterLabels: + EnvironmentName: + default: Environment name + VSCodeInstanceName: + default: VSCode Instance Name + VSCodeInstanceType: + default: VSCode Instance type + VSCodeInstanceVolumeSize: + default: VSCode Attached volume size + VSCodeUser: + default: VSCode Username + VSCodeHomeFolder: + default: VSCode Home Folder + +Mappings: + DesignPatterns: + options: + UserDataURL: "https://amazon-dynamodb-labs.com/assets/UserDataC9.sh" + version: "1" + # AWS Managed Prefix Lists for EC2 InstanceConnect + AWSRegions2PrefixListID: + ap-south-1: + PrefixList: pl-0fa83cebf909345ca + eu-north-1: + PrefixList: pl-0bd77a95ba8e317a6 + eu-west-3: + PrefixList: pl-0f2a97ab210dbbae1 + eu-west-2: + PrefixList: pl-067eefa539e593d55 + eu-west-1: + PrefixList: pl-0839cc4c195a4e751 + ap-northeast-3: + PrefixList: pl-086543b458dc7add9 + ap-northeast-2: + PrefixList: pl-00ec8fd779e5b4175 + ap-northeast-1: + PrefixList: pl-08d491d20eebc3b95 + ca-central-1: + PrefixList: pl-0beea00ad1821f2ef + sa-east-1: + PrefixList: pl-029debe66aa9d13b3 + ap-southeast-1: + PrefixList: pl-073f7512b7b9a2450 + ap-southeast-2: + PrefixList: pl-0e1bc5673b8a57acc + eu-central-1: + PrefixList: pl-03384955215625250 + us-east-1: + PrefixList: pl-0e4bcff02b13bef1e + us-east-2: + PrefixList: pl-03915406641cb1f53 + us-west-1: + PrefixList: pl-0e99958a47b22d6ab + us-west-2: + PrefixList: pl-047d464325e7bf465 + + AWSRegionsPrefixListID: + # aws ec2 describe-managed-prefix-lists --region | jq -r '.PrefixLists[] | select (.PrefixListName == "com.amazonaws.global.cloudfront.origin-facing") | .PrefixListId' + ap-northeast-1: + PrefixList: pl-58a04531 + ap-northeast-2: + PrefixList: pl-22a6434b + ap-south-1: + PrefixList: pl-9aa247f3 + ap-southeast-1: + PrefixList: pl-31a34658 + ap-southeast-2: + PrefixList: pl-b8a742d1 + ca-central-1: + PrefixList: pl-38a64351 + eu-central-1: + PrefixList: pl-a3a144ca + eu-north-1: + PrefixList: pl-fab65393 + eu-west-1: + PrefixList: pl-4fa04526 + eu-west-2: + PrefixList: pl-93a247fa + eu-west-3: + PrefixList: pl-75b1541c + sa-east-1: + PrefixList: pl-5da64334 + us-east-1: + PrefixList: pl-3b927c52 + us-east-2: + PrefixList: pl-b6a144df + us-west-1: + PrefixList: pl-4ea04527 + us-west-2: + PrefixList: pl-82a045eb + + +Resources: + #LADV Role + DDBReplicationRole: + Type: AWS::IAM::Role + Properties: + AssumeRolePolicyDocument: + Version: '2012-10-17' + Statement: + - Effect: Allow + Principal: + Service: + - lambda.amazonaws.com + Action: + - sts:AssumeRole + Path: / + Policies: + - PolicyName: root + PolicyDocument: + Version: '2012-10-17' + Statement: + - Effect: Allow + Action: + - dynamodb:DescribeStream + - dynamodb:GetRecords + - dynamodb:GetShardIterator + - dynamodb:ListStreams + Resource: + - '*' + - Effect: Allow + Action: + - dynamodb:DeleteItem + - dynamodb:PutItem + Resource: + - '*' + - Effect: Allow + Action: + - logs:CreateLogGroup + - logs:CreateLogStream + - logs:PutLogEvents + Resource: + - '*' + + # Glue Service Role for MySQL to DynamoDB Migration + GlueServiceRole: + Type: AWS::IAM::Role + Properties: + AssumeRolePolicyDocument: + Version: '2012-10-17' + Statement: + - Effect: Allow + Principal: + Service: + - glue.amazonaws.com + Action: + - sts:AssumeRole + ManagedPolicyArns: + - !Sub arn:${AWS::Partition}:iam::aws:policy/service-role/AWSGlueServiceRole + - !Sub arn:${AWS::Partition}:iam::aws:policy/AmazonDynamoDBFullAccess + Policies: + - PolicyName: S3MigrationBucketAccess + PolicyDocument: + Version: '2012-10-17' + Statement: + - Effect: Allow + Action: + - s3:GetObject + - s3:PutObject + - s3:DeleteObject + - s3:ListBucket + Resource: + - !Sub ${MigrationS3Bucket.Arn}/* + - Effect: Allow + Action: + - s3:ListBucket + Resource: + - !GetAtt MigrationS3Bucket.Arn + - PolicyName: CloudWatchLogsAccess + PolicyDocument: + Version: '2012-10-17' + Statement: + - Effect: Allow + Action: + - logs:CreateLogGroup + - logs:CreateLogStream + - logs:PutLogEvents + - logs:DescribeLogGroups + - logs:DescribeLogStreams + Resource: + - !Sub arn:${AWS::Partition}:logs:${AWS::Region}:${AWS::AccountId}:log-group:/aws-glue/* + - !Sub arn:${AWS::Partition}:logs:${AWS::Region}:${AWS::AccountId}:log-group:/aws-glue/*:log-stream:* + - PolicyName: SecretsManagerAccess + PolicyDocument: + Version: '2012-10-17' + Statement: + - Effect: Allow + Action: + - secretsmanager:GetSecretValue + - secretsmanager:DescribeSecret + Resource: + - !Ref DbPasswordSecret + Tags: + - Key: Environment + Value: !Ref EnvironmentName + - Key: Purpose + Value: GlueETLMigration + ################## PERMISSIONS AND ROLES ################# + CodeInstanceRole: + Type: AWS::IAM::Role + Properties: + Tags: + - Key: Environment + Value: !Sub ${EnvironmentName} + AssumeRolePolicyDocument: + Version: 2012-10-17 + Statement: + - Effect: Allow + Principal: + Service: + - ec2.amazonaws.com + - ssm.amazonaws.com + - opensearchservice.amazonaws.com + - osis-pipelines.amazonaws.com + Action: + - sts:AssumeRole + ManagedPolicyArns: + - !Sub arn:${AWS::Partition}:iam::aws:policy/AdministratorAccess + Path: '/' + + ################ LAMBDA INSTANCE TYPE FINDER ################ + VSCodeFindTheInstanceTypeLambda: + Type: Custom::VSCodeFindTheInstanceTypeLambda + Properties: + Tags: + - Key: Environment + Value: !Sub ${EnvironmentName} + ServiceToken: + Fn::GetAtt: + - VSCodeFindTheInstanceTypeLambdaFunction + - Arn + Region: + Ref: AWS::Region + StackName: + Ref: AWS::StackName + InstanceType: + Ref: VSCodeInstanceType + + VSCodeFindTheInstanceTypeLambdaFunction: + Type: AWS::Lambda::Function + Metadata: + cfn_nag: + rules_to_suppress: + - id: W58 + reason: Lambda execution role has basic execution permissions + - id: W89 + reason: Bootstrap function does not need the scaffolding of a VPC or provisioned concurrency + - id: W92 + reason: Bootstrap function does not need provisioned concurrency + Properties: + Tags: + - Key: Environment + Value: !Sub ${EnvironmentName} + Handler: index.lambda_handler + Role: + Fn::GetAtt: + - VSCodeLambdaExecutionRole + - Arn + Runtime: python3.13 + MemorySize: 1024 + Timeout: 400 + Code: + ZipFile: | + import json + import boto3 + import random + import cfnresponse + import logging + import traceback + + logger = logging.getLogger(__name__) + + ec2 = boto3.client('ec2') + def lambda_handler(event, context): + print(event.values()) + print('context: {}'.format(context)) + responseData = {} + + status = cfnresponse.SUCCESS + if event['RequestType'] == 'Delete': + responseData = {'Success': 'Custom Resource removed'} + cfnresponse.send(event, context, status, responseData, 'CustomResourcePhysicalID') + elif event['RequestType'] == 'Update': + responseData = {'Success': 'No-op'} + cfnresponse.send(event, context, status, responseData, 'CustomResourcePhysicalID') + elif event['RequestType'] == 'Create': + try: + resp = ec2.describe_subnets( + Filters = [ + { + 'Name':'default-for-az', + 'Values': ['true'] + }]) + inst_types = list() + inst_types.append(event['ResourceProperties']['InstanceType']) + subnet_ids = dict() + for subnet in resp['Subnets']: + subnet_ids[subnet['AvailabilityZone']] = subnet['SubnetId'] + offerings = get_offerings(inst_types) + subnet_id = None + #hunt time + results = dict() + for instance in inst_types: + for az in offerings[instance]: + if az in subnet_ids: + subnet_id = subnet_ids[az] + if instance not in results: + results[instance] = subnet_ids[az] + instance_type, subnet = random.choice(list(results.items())) + responseData = {'InstanceType':instance_type, 'SubnetId': subnet} + cfnresponse.send(event, context, status, responseData, 'CustomResourcePhysicalID') + except Exception as err: + print(err) + status = cfnresponse.FAILED + print(traceback.format_exc()) + responseData = {'Error': traceback.format_exc(err)} + finally: + cfnresponse.send(event, context, status, responseData, 'CustomResourcePhysicalID') + + + def get_offerings(inst_types): + product_types = ('Linux/UNIX (Amazon VPC)', 'Windows (Amazon VPC)') + resp = ec2.describe_instance_type_offerings( + LocationType='availability-zone', + Filters = [ + { + 'Name': 'instance-type', + 'Values': inst_types + } + ]) + offerings = dict() + for inst in resp['InstanceTypeOfferings']: + if inst['InstanceType'] not in offerings: + offerings[inst['InstanceType']] = list() + offerings[inst['InstanceType']].append(inst['Location']) + + # TODO implement + return offerings + + VSCodeLambdaExecutionRole: + Type: AWS::IAM::Role + Metadata: + cfn_nag: + rules_to_suppress: + - id: W11 + reason: Describe Action doesn't support any resource condition + Properties: + AssumeRolePolicyDocument: + Version: 2012-10-17 + Statement: + - Effect: Allow + Principal: + Service: + - lambda.amazonaws.com + Action: + - sts:AssumeRole + Path: '/' + ManagedPolicyArns: + - !Sub arn:${AWS::Partition}:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole + Policies: + - PolicyName: !Sub VSCodeLambdaPolicy-${AWS::Region} + PolicyDocument: + Version: 2012-10-17 + Statement: + - Effect: Allow + Action: + - cloudformation:DescribeStacks + - cloudformation:DescribeStackEvents + - cloudformation:DescribeStackResource + - cloudformation:DescribeStackResources + Resource: + - !Sub arn:${AWS::Partition}:cloudformation:${AWS::Region}:${AWS::AccountId}:stack/* + - Effect: Allow + Action: + - ec2:AssociateIamInstanceProfile + - ec2:ModifyInstanceAttribute + - ec2:ReplaceIamInstanceProfileAssociation + - ec2:RebootInstances + Resource: + - !Sub arn:${AWS::Partition}:ec2:${AWS::Region}:${AWS::AccountId}:instance/* + - Effect: Allow + Action: + - ec2:DescribeInstances + - ec2:DescribeVolumesModifications + - ec2:DescribeVolumes + - ec2:DescribeIamInstanceProfileAssociations + - ec2:ModifyVolume + - ssm:DescribeInstanceInformation + - ssm:SendCommand + - ssm:GetCommandInvocation + - ec2:DescribeSubnets + - ec2:DescribeInstanceTypeOfferings + Resource: '*' + - Effect: Allow + Action: + - iam:ListInstanceProfiles + Resource: + - !Sub arn:${AWS::Partition}:iam::${AWS::AccountId}:instance-profile/* + - Effect: Allow + Action: + - iam:PassRole + Resource: + Fn::GetAtt: + - CodeInstanceRole + - Arn + + ############ RELATIONAL MIGRATION STAGING BUCKET ######### + MigrationS3Bucket: + Type: AWS::S3::Bucket + +################ VSCode Server ################ + VSCodeSecret: + Metadata: + cfn_nag: + rules_to_suppress: + - id: W77 + reason: The default KMS Key used by Secrets Manager is appropriate for this password which will be used to log into VSCodeServer, which has very limited permissions. In addition this secret will not be required to be shared across accounts + Type: AWS::SecretsManager::Secret + DeletionPolicy: Delete + UpdateReplacePolicy: Delete + Properties: + Name: !Sub ${AWS::StackName}-VSCodeServer + Description: VS code-server user details + GenerateSecretString: + PasswordLength: 16 + SecretStringTemplate: !Sub '{"username":"${VSCodeUser}"}' + GenerateStringKey: "password" + ExcludePunctuation: true + + DbPasswordSecret: + Metadata: + cfn_nag: + rules_to_suppress: + - id: W77 + reason: The default KMS Key used by Secrets Manager is appropriate for this password which will be used for database access + Type: AWS::SecretsManager::Secret + DeletionPolicy: Delete + UpdateReplacePolicy: Delete + Properties: + Name: !Sub ${AWS::StackName}-DatabasePassword + Description: Auto-generated MySQL database password + GenerateSecretString: + PasswordLength: 24 + ExcludeCharacters: '"@/\`{}$!&*()[]|;:<>?' + ExcludePunctuation: false + IncludeSpace: false + + SecretPlaintextLambdaRole: + Type: AWS::IAM::Role + Properties: + AssumeRolePolicyDocument: + Version: 2012-10-17 + Statement: + - Effect: Allow + Principal: + Service: !Sub lambda.${AWS::URLSuffix} + Action: sts:AssumeRole + ManagedPolicyArns: + - !Sub arn:${AWS::Partition}:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole + Policies: + - PolicyName: AwsSecretsManager + PolicyDocument: + Version: 2012-10-17 + Statement: + - Effect: Allow + Action: + - secretsmanager:GetSecretValue + Resource: + - !Ref VSCodeSecret + - !Ref DbPasswordSecret + + DbPasswordPlaintextLambda: + Type: AWS::Lambda::Function + Metadata: + cfn_nag: + rules_to_suppress: + - id: W58 + reason: Warning incorrectly reported. The role associated with the Lambda function has the AWSLambdaBasicExecutionRole managed policy attached, which includes permission to write CloudWatch Logs. See https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLambdaBasicExecutionRole.html + - id: W89 + reason: CloudFormation custom function does not need the scaffolding of a VPC, to do so would add unnecessary complexity + - id: W92 + reason: CloudFormation custom function does not need reserved concurrent executions, to do so would add unnecessary complexity + Properties: + Description: Return the value of the database password secret + Handler: index.lambda_handler + Runtime: python3.13 + MemorySize: 128 + Timeout: 10 + Architectures: + - arm64 + Role: !GetAtt SecretPlaintextLambdaRole.Arn + Code: + ZipFile: | + import boto3 + import json + import cfnresponse + import logging + + logger = logging.getLogger() + logger.setLevel(logging.INFO) + + def lambda_handler(event, context): + logger.debug(f'event: {event}') + logger.debug(f'context: {context}') + try: + if event['RequestType'] == 'Delete': + cfnresponse.send(event, context, cfnresponse.SUCCESS, responseData={}, reason='No action to take') + else: + resource_properties = event['ResourceProperties'] + secret_name = resource_properties['SecretArn'] + secrets_mgr = boto3.client('secretsmanager') + + logger.info('Getting secret from %s', secret_name) + + secret = secrets_mgr.get_secret_value(SecretId = secret_name) + logger.debug(f'secret: {secret}') + secret_value = secret['SecretString'] + + responseData = {'password': secret_value} + logger.debug(f'responseData: {responseData}') + cfnresponse.send(event, context, cfnresponse.SUCCESS, responseData=responseData, reason='OK', noEcho=True) + except Exception as e: + logger.error(e) + cfnresponse.send(event, context, cfnresponse.FAILED, responseData={}, reason=str(e)) + + DbPasswordPlaintext: + Type: Custom::DbPasswordPlaintextLambda + Properties: + ServiceToken: !GetAtt DbPasswordPlaintextLambda.Arn + ServiceTimeout: 15 + SecretArn: !Ref DbPasswordSecret + + SecretPlaintextLambda: + Type: AWS::Lambda::Function + Metadata: + cfn_nag: + rules_to_suppress: + - id: W58 + reason: Warning incorrectly reported. The role associated with the Lambda function has the AWSLambdaBasicExecutionRole managed policy attached, which includes permission to write CloudWatch Logs. See https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLambdaBasicExecutionRole.html + - id: W89 + reason: CloudFormation custom function does not need the scaffolding of a VPC, to do so would add unnecessary complexity + - id: W92 + reason: CloudFormation custom function does not need reserved concurrent executions, to do so would add unnecessary complexity + Properties: + Description: Return the value of the secret + Handler: index.lambda_handler + Runtime: python3.13 + MemorySize: 128 + Timeout: 10 + Architectures: + - arm64 + Role: !GetAtt SecretPlaintextLambdaRole.Arn + Code: + ZipFile: | + import boto3 + import json + import cfnresponse + import logging + + logger = logging.getLogger() + logger.setLevel(logging.INFO) + + def is_valid_json(json_string): + logger.debug(f'Calling is_valid_jason:{json_string}') + try: + json.loads(json_string) + logger.info('Secret is in json format') + return True + except json.JSONDecodeError: + logger.info('Secret is in string format') + return False + + def lambda_handler(event, context): + logger.debug(f'event: {event}') + logger.debug(f'context: {context}') + try: + if event['RequestType'] == 'Delete': + cfnresponse.send(event, context, cfnresponse.SUCCESS, responseData={}, reason='No action to take') + else: + resource_properties = event['ResourceProperties'] + secret_name = resource_properties['SecretArn'] + secrets_mgr = boto3.client('secretsmanager') + + logger.info('Getting secret from %s', secret_name) + + secret = secrets_mgr.get_secret_value(SecretId = secret_name) + logger.debug(f'secret: {secret}') + secret_value = secret['SecretString'] + + responseData = {} + if is_valid_json(secret_value): + responseData = secret_value + else: + responseData = {'secret': secret_value} + logger.debug(f'responseData: {responseData}') + logger.debug(f'type(responseData): {type(responseData)}') + cfnresponse.send(event, context, cfnresponse.SUCCESS, responseData=json.loads(responseData), reason='OK', noEcho=True) + except Exception as e: + logger.error(e) + cfnresponse.send(event, context, cfnresponse.FAILED, responseData={}, reason=str(e)) + + SecretPlaintext: + Type: Custom::SecretPlaintextLambda + Properties: + ServiceToken: !GetAtt SecretPlaintextLambda.Arn + ServiceTimeout: 15 + SecretArn: !Ref VSCodeSecret + + VSCodeSSMDoc: + Type: AWS::SSM::Document + Properties: + DocumentType: Command + Content: + schemaVersion: "2.2" + description: Bootstrap VS code-server instance + parameters: + LinuxFlavor: + type: String + default: "al2023" + VSCodePassword: + type: String + default: !Ref AWS::StackId + PythonMajorMinor: + type: String + default: "3.13" + # all mainSteps scripts are in in /var/lib/amazon/ssm//document/orchestration///_script.sh + mainSteps: + # This step was needed to avoid "Can't create transaction lock" error likely due to competing install + - name: RemoveTransactionLock + action: aws:runShellScript + inputs: + timeoutSeconds: 300 + runCommand: + - "#!/bin/bash" + - sudo rm -f /var/lib/rpm/.rpm.lock + - name: InstallCloudWatchAgent + action: aws:configurePackage + inputs: + name: AmazonCloudWatchAgent + action: Install + - name: ConfigureCloudWatchAgent + action: aws:runDocument + inputs: + documentType: SSMDocument + documentPath: AmazonCloudWatch-ManageAgent + documentParameters: + action: configure + mode: ec2 + optionalConfigurationSource: default + optionalRestart: "yes" + - name: InstallBasePackagesDnf + action: aws:runShellScript + precondition: + StringEquals: + - "{{ LinuxFlavor }}" + - al2023 + inputs: + timeoutSeconds: 300 + runCommand: + - "#!/bin/bash" + - dnf install -y --allowerasing curl gnupg whois argon2 unzip nginx openssl + - name: AddUserDnf + action: aws:runShellScript + precondition: + StringEquals: + - "{{ LinuxFlavor }}" + - al2023 + inputs: + timeoutSeconds: 300 + runCommand: + - "#!/bin/bash" + - !Sub | + echo 'Adding user: ${VSCodeUser}' + adduser -c '' ${VSCodeUser} + passwd -l ${VSCodeUser} + echo "${VSCodeUser}:{{ VSCodePassword }}" | chpasswd + usermod -aG wheel ${VSCodeUser} + echo "participant ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/participant + sudo chmod 440 /etc/sudoers.d/participant + - echo "User added. Checking configuration" + - !Sub getent passwd ${VSCodeUser} + - name: UpdateProfile + action: aws:runShellScript + inputs: + timeoutSeconds: 300 + runCommand: + - "#!/bin/bash" + - echo LANG=en_US.utf-8 >> /etc/environment + - echo LC_ALL=en_US.UTF-8 >> /etc/environment + - !Sub echo 'PATH=$PATH:/home/${VSCodeUser}/.local/bin' >> /home/${VSCodeUser}/.bashrc + - !Sub echo 'export PATH' >> /home/${VSCodeUser}/.bashrc + - !Sub echo 'export AWS_REGION=${AWS::Region}' >> /home/${VSCodeUser}/.bashrc + - !Sub echo 'export AWS_ACCOUNTID=${AWS::AccountId}' >> /home/${VSCodeUser}/.bashrc + - !Sub echo 'export NEXT_TELEMETRY_DISABLED=1' >> /home/${VSCodeUser}/.bashrc + - !Sub echo "export PS1='\[\033[01;32m\]\u:\[\033[01;34m\]\w\[\033[00m\]\$ '" >> /home/${VSCodeUser}/.bashrc + - !Sub chown -R ${VSCodeUser}:${VSCodeUser} /home/${VSCodeUser} + - name: InstallAWSCLI + action: aws:runShellScript + inputs: + timeoutSeconds: 300 + runCommand: + - "#!/bin/bash" + - mkdir -p /tmp + - curl -fsSL https://awscli.amazonaws.com/awscli-exe-linux-$(uname -m).zip -o /tmp/aws-cli.zip + - !Sub chown -R ${VSCodeUser}:${VSCodeUser} /tmp/aws-cli.zip + - unzip -q -d /tmp /tmp/aws-cli.zip + - sudo /tmp/aws/install + - rm -rf /tmp/aws + - echo "AWS CLI installed. Checking configuration" + - aws --version + - name: InstallGitDnf + action: aws:runShellScript + precondition: + StringEquals: + - "{{ LinuxFlavor }}" + - al2023 + inputs: + timeoutSeconds: 300 + runCommand: + - "#!/bin/bash" + - dnf install -y git + - !Sub sudo -u ${VSCodeUser} git config --global user.email "participant@example.com" + - !Sub sudo -u ${VSCodeUser} git config --global user.name "Workshop Participant" + - !Sub sudo -u ${VSCodeUser} git config --global init.defaultBranch "main" + - echo "Git installed. Checking configuration" + - git --version + - name: ConfigureCodeServer + action: aws:runShellScript + inputs: + timeoutSeconds: 600 + runCommand: + - "#!/bin/bash" + - !Sub export HOME=/home/${VSCodeUser} + - curl -fsSL https://code-server.dev/install.sh | bash -s -- 2>&1 + - !Sub systemctl enable --now code-server@${VSCodeUser} 2>&1 + - !Sub | + tee /etc/nginx/conf.d/code-server.conf <&1 + - systemctl status nginx --no-pager + - echo "CodeServer installed. Checking configuration" + - code-server -v + - !Sub systemctl status code-server@${VSCodeUser} --no-pager + - name: InstallLADVDeps + action: aws:runShellScript + inputs: + timeoutSeconds: 1200 + runCommand: + - "#!/bin/bash" + # Workshop files are no longer downloaded + - echo "Workshop folder setup (no download required)" + - !Sub echo "${DDBReplicationRole.Arn}" > ${VSCodeHomeFolder}/ddb-replication-role-arn.txt + - !Sub chown -R ${VSCodeUser}:${VSCodeUser} ${VSCodeHomeFolder} + - echo "Installing pyenv dependencies..." + - dnf install -y make gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel tk-devel libffi-devel xz-devel > /dev/null + - echo "Installing pyenv for VSCode user..." + - !Sub sudo -u ${VSCodeUser} bash -c 'curl https://pyenv.run | bash' + - echo "Configuring pyenv in shell profiles..." + - !Sub echo 'export PYENV_ROOT="$HOME/.pyenv"' >> /home/${VSCodeUser}/.bashrc + - !Sub echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> /home/${VSCodeUser}/.bashrc + - !Sub echo 'eval "$(pyenv init -)"' >> /home/${VSCodeUser}/.bashrc + - echo "Installing Python {{ PythonMajorMinor }}:latest using pyenv..." + - !Sub sudo -u ${VSCodeUser} bash -c 'source ~/.bashrc && pyenv install {{ PythonMajorMinor }}:latest' + - echo "Getting installed Python version and setting global..." + - !Sub sudo -u ${VSCodeUser} bash -c 'source ~/.bashrc && PYTHON_VERSION=$(pyenv versions --bare | grep "^{{ PythonMajorMinor }}" | tail -1) && echo "Setting global Python version to $PYTHON_VERSION" && pyenv global $PYTHON_VERSION' + - echo "Installing required Python packages..." + - !Sub sudo -u ${VSCodeUser} bash -c 'source ~/.bashrc && pip install boto3 opensearch-py' + - echo "Creating symlink for backward compatibility..." + - !Sub sudo -u ${VSCodeUser} bash -c 'source ~/.bashrc && sudo ln -sf $(pyenv which python) /usr/local/bin/python' + - !Sub chown -R ${VSCodeUser}:${VSCodeUser} /home/${VSCodeUser}/.pyenv + - echo "Python installation completed. Version:" + - !Sub sudo -u ${VSCodeUser} bash -c 'source ~/.bashrc && python --version' + - name: InstallNode + action: aws:runShellScript + inputs: + timeoutSeconds: 600 + runCommand: + - "#!/bin/bash" + - echo "Installing Node.js using nvm..." + - !Sub | + # Install nvm as participant user + sudo -u ${VSCodeUser} bash -c 'curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash' + - !Sub | + # Install Node.js 18 as participant user and set as default + sudo -u ${VSCodeUser} bash -c 'export NVM_DIR="$HOME/.nvm" && [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && nvm install 18 && nvm use 18 && nvm alias default 18' + - echo "Adding nvm configuration to shell profiles..." + - !Sub | + # Add to .bashrc for interactive bash shells + cat >> /home/${VSCodeUser}/.bashrc <> /home/${VSCodeUser}/.zshrc <> /home/${VSCodeUser}/.profile < /etc/mysql/mysql.conf.d/remote-access.cnf <> /etc/my.cnf <> /home/${VSCodeUser}/.bashrc < /home/${VSCodeUser}/.aws/config < /home/${VSCodeUser}/.aws/amazonq/mcp.json <<'\''EOF'\'' + { + "mcpServers": { + "awslabs.dynamodb-mcp-server": { + "command": "uvx", + "args": ["awslabs.dynamodb-mcp-server@latest"], + "env": { + "DDB-MCP-READONLY": "true", + "AWS_PROFILE": "default", + "AWS_REGION": "us-west-2", + "FASTMCP_LOG_LEVEL": "ERROR" + }, + "disabled": false, + "autoApprove": [] + }, + "mysql": { + "type": "stdio", + "command": "uvx", + "args": [ + "--from", + "mysql-mcp-server", + "mysql_mcp_server" + ], + "env": { + "MYSQL_HOST": "127.0.0.1", + "MYSQL_PORT": "3306", + "MYSQL_USER": "${DbMasterUsername}", + "MYSQL_PASSWORD": "${DbPasswordPlaintext.password}", + "MYSQL_DATABASE": "online_shopping_store" + } + } + } + } + EOF' + - echo "Modernizr setup completed successfully." + - name: InstallDocker + action: aws:runShellScript + inputs: + timeoutSeconds: 1200 + runCommand: + - "#!/bin/bash" + - "set -euo pipefail" + - echo "Installing Docker..." + - yum install docker -y + - systemctl start docker + - systemctl enable docker + - !Sub "usermod -aG docker ${VSCodeUser}" + - echo "Installing Docker Compose..." + - "curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose" + - "chmod +x /usr/local/bin/docker-compose" + - echo "Verifying Docker installation..." + - "docker --version" + - "docker-compose --version" + - echo "Docker installation completed successfully." + - name: CloneWorkshop + action: aws:runShellScript + inputs: + timeoutSeconds: 1200 + runCommand: + - "#!/bin/bash" + - "set -euo pipefail" + - echo "Cloning workshop repository..." + - !Sub | + # Clone repository as participant user + sudo -u ${VSCodeUser} bash -c 'cd /home/${VSCodeUser} && git clone https://github.com/aws-samples/aws-dynamodb-examples.git' + - !Sub | + # Copy files as participant user + sudo -u ${VSCodeUser} bash -c 'cd /home/${VSCodeUser}/aws-dynamodb-examples/workshops/modernizr && cp -R * /home/${VSCodeUser}/modernizr/' + - echo "Workshop repository cloned successfully." + - name: ConfigureBackendEnv + action: aws:runShellScript + inputs: + timeoutSeconds: 300 + runCommand: + - "#!/bin/bash" + - "set -euo pipefail" + - echo "Configuring backend .env file with database credentials..." + - !Sub | + # Update .env file with correct database credentials as participant user + if [ -f "/home/${VSCodeUser}/modernizr/backend/.env" ]; then + sudo -u ${VSCodeUser} sed -i "s/^DB_USER=.*/DB_USER=\"${DbMasterUsername}\"/" /home/${VSCodeUser}/modernizr/backend/.env + sudo -u ${VSCodeUser} sed -i "s/^DB_PASSWORD=.*/DB_PASSWORD=\"${DbPasswordPlaintext.password}\"/" /home/${VSCodeUser}/modernizr/backend/.env + sudo -u ${VSCodeUser} sed -i "s/^JWT_SECRET=.*/JWT_SECRET=63de917288d776db7e6761b183bc1fd8ffc5905565d30c635294c25cc574adc496062bc59cc4370479ecbf1e826fff3c12abe4a6ecbc5203a4d58ca24a86e6fa/" /home/${VSCodeUser}/modernizr/backend/.env + echo "Updated .env file with database credentials and JWT secret" + else + echo "Warning: .env file not found, creating new one with full configuration" + sudo -u ${VSCodeUser} bash -c 'cat > /home/${VSCodeUser}/modernizr/backend/.env < abort_time_remaining_ms): + logger.info(f'Instance {instance_id} not ready. Sleeping: {sleep_ms/1000}s') + time.sleep(sleep_ms/1000) + retry = True + else: + logger.info(f'Instance {instance_id} not ready, timed out. Time remaining {time_remaining_ms/1000}s < Abort time remaining {abort_time_remaining_ms/1000}s') + logger.error(e, exc_info=True) + cfnresponse.send(event, context, cfnresponse.FAILED, responseData={}, reason='Timed out. Time remaining: ' + str(time_remaining_ms/1000) + 's < Abort time remaining: ' + str(abort_time_remaining_ms/1000) + 's') + retry = False + + except Exception as e: + logger.error(e, exc_info=True) + cfnresponse.send(event, context, cfnresponse.FAILED, responseData={}, reason=str(e)) + retry = False + + RunVSCodeSSMDoc: + Type: Custom::RunSSMDocLambda + DependsOn: VSCodeInstance + Properties: + ServiceToken: !GetAtt RunSSMDocLambda.Arn + ServiceTimeout: 600 + InstanceId: !Ref VSCodeInstance + DocumentName: !Ref VSCodeSSMDoc + CloudWatchLogGroupName: !Sub /aws/ssm/${VSCodeSSMDoc} + VSCodePassword: !GetAtt SecretPlaintext.password + LinuxFlavor: al2023 + PythonMajorMinor: !Ref PythonMajorMinor + + CodeInstanceProfile: + Type: AWS::IAM::InstanceProfile + Properties: + Roles: + - !Ref CodeInstanceRole + + VSCodeInstance: + Type: AWS::EC2::Instance + Properties: + ImageId: !Ref DBLatestAmiId + InstanceType: !GetAtt VSCodeFindTheInstanceTypeLambda.InstanceType + BlockDeviceMappings: + - DeviceName: /dev/xvda + Ebs: + VolumeSize: !Ref VSCodeInstanceVolumeSize + VolumeType: gp3 + DeleteOnTermination: true + Encrypted: true + Monitoring: true + SecurityGroupIds: + - !GetAtt SecurityGroup.GroupId + IamInstanceProfile: !Ref CodeInstanceProfile + SubnetId: !GetAtt VSCodeFindTheInstanceTypeLambda.SubnetId + UserData: + Fn::Base64: !Sub | + #!/bin/bash -ex + exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1 + echo "Starting VSCode Server setup at $(date)" + + # Update system + yum update -y + + # Install base packages + yum install -y curl wget git unzip nginx openssl which + + # Create participant user + useradd -m ${VSCodeUser} + echo "${VSCodeUser}:$(openssl rand -base64 32)" | chpasswd + usermod -aG wheel ${VSCodeUser} + echo "${VSCodeUser} ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/${VSCodeUser} + chmod 440 /etc/sudoers.d/${VSCodeUser} + + # Set up environment + echo 'export AWS_REGION=${AWS::Region}' >> /home/${VSCodeUser}/.bashrc + echo 'export AWS_ACCOUNT_ID=${AWS::AccountId}' >> /home/${VSCodeUser}/.bashrc + echo 'export PATH=$PATH:/home/${VSCodeUser}/.local/bin' >> /home/${VSCodeUser}/.bashrc + echo 'export MYSQL_PASSWORD=${DbPasswordPlaintext.password}' >> /home/${VSCodeUser}/.bashrc + echo 'export MYSQL_USERNAME=${DbMasterUsername}' >> /home/${VSCodeUser}/.bashrc + + # Install AWS CLI + curl "https://awscli.amazonaws.com/awscli-exe-linux-aarch64.zip" -o "awscliv2.zip" + unzip awscliv2.zip + ./aws/install + rm -rf aws awscliv2.zip + + # Note: MySQL setup is handled by SSM document to ensure proper timing and error handling + echo "MySQL will be configured by SSM document after instance initialization" + + # Install Node.js via NodeSource + curl -fsSL https://rpm.nodesource.com/setup_18.x | bash - + yum install -y nodejs + + # Install Python 3.13 via pyenv + yum groupinstall -y "Development tools" + yum install -y zlib-devel bzip2-devel readline-devel sqlite-devel openssl-devel tk-devel libffi-devel xz-devel + + # Install pyenv as participant user + sudo -u ${VSCodeUser} bash -c 'curl https://pyenv.run | bash' + sudo -u ${VSCodeUser} bash -c 'echo "export PYENV_ROOT=\"\$HOME/.pyenv\"" >> ~/.bashrc' + sudo -u ${VSCodeUser} bash -c 'echo "command -v pyenv >/dev/null || export PATH=\"\$PYENV_ROOT/bin:\$PATH\"" >> ~/.bashrc' + sudo -u ${VSCodeUser} bash -c 'echo "eval \"\$(pyenv init -)\"" >> ~/.bashrc' + + # Install Python 3.13 + sudo -u ${VSCodeUser} bash -c 'source ~/.bashrc && pyenv install ${PythonMajorMinor}:latest && pyenv global $(pyenv versions --bare | grep "^${PythonMajorMinor}" | tail -1)' + + # Install pip packages + sudo -u ${VSCodeUser} bash -c 'source ~/.bashrc && pip install boto3 opensearch-py' + + # Install uv + sudo -u ${VSCodeUser} bash -c 'curl -LsSf https://astral.sh/uv/install.sh | sh' + + # Install Docker + yum install -y docker + systemctl enable docker + systemctl start docker + usermod -aG docker ${VSCodeUser} + + # Install Docker Compose + curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose + chmod +x /usr/local/bin/docker-compose + + # Install code-server + curl -fsSL https://code-server.dev/install.sh | bash + + # Configure code-server + mkdir -p /home/${VSCodeUser}/.config/code-server + cat > /home/${VSCodeUser}/.config/code-server/config.yaml << EOF + bind-addr: 127.0.0.1:8080 + auth: password + password: ${DbPasswordPlaintext.password} + cert: false + EOF + + # Configure nginx for code-server + cat > /etc/nginx/conf.d/code-server.conf << 'EOF' + server { + listen 80; + server_name _; + + location /healthz { + return 200 '{"status":"alive"}'; + add_header Content-Type application/json; + } + + location / { + proxy_pass http://127.0.0.1:8080/; + proxy_set_header Host $host; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection upgrade; + proxy_set_header Accept-Encoding gzip; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } + } + EOF + + # Start services + systemctl enable nginx + systemctl start nginx + systemctl enable code-server@${VSCodeUser} + systemctl start code-server@${VSCodeUser} + + # Create workshop folder and write DDB role ARN + mkdir -p ${VSCodeHomeFolder} + echo "${DDBReplicationRole.Arn}" > ${VSCodeHomeFolder}/ddb-replication-role-arn.txt + + # Clone modernizr workshop + sudo -u ${VSCodeUser} bash -c 'cd /home/${VSCodeUser} && git clone https://github.com/aws-samples/aws-dynamodb-examples.git' + sudo -u ${VSCodeUser} bash -c 'mkdir -p /home/${VSCodeUser}/modernizr' + sudo -u ${VSCodeUser} bash -c 'cd /home/${VSCodeUser}/aws-dynamodb-examples/workshops/modernizr && cp -R * /home/${VSCodeUser}/modernizr/' + + # Set permissions + chown -R ${VSCodeUser}:${VSCodeUser} ${VSCodeHomeFolder} + chown -R ${VSCodeUser}:${VSCodeUser} /home/${VSCodeUser} + + echo "VSCode Server setup completed at $(date)" + Tags: + - Key: Name + Value: !Ref VSCodeInstanceName + + + SecurityGroup: + Type: AWS::EC2::SecurityGroup + Metadata: + cfn_nag: + rules_to_suppress: + - id: F1000 + reason: All outbound traffic should be allowed from this instance. The EC2 instance is provisioned in the default VPC, which already has this egress rule, and it is not possible to duplicate this egress rule in the default VPC + Properties: + GroupDescription: SG for VSCodeServer - allow HTTP access from specified IP + SecurityGroupIngress: + - Description: Allow HTTP from specified IP address + IpProtocol: tcp + FromPort: 80 + ToPort: 80 + CidrIp: !Ref AllowedIP + - Description: Allow MySQL from specified IP address + IpProtocol: tcp + FromPort: 3306 + ToPort: 3306 + CidrIp: !Ref AllowedIP + - Description: Allow MySQL from VPC CIDR (for Glue connectivity) + IpProtocol: tcp + FromPort: 3306 + ToPort: 3306 + CidrIp: 172.31.0.0/16 + - Description: "Allow Instance Connect" + FromPort: 22 + ToPort: 22 + IpProtocol: tcp + SourcePrefixListId: !FindInMap [AWSRegions2PrefixListID, !Ref 'AWS::Region', PrefixList] + + # Self-referencing security group rule for Glue job communication + SecurityGroupSelfIngress: + Type: AWS::EC2::SecurityGroupIngress + Properties: + Description: Allow all traffic from same security group (required for AWS Glue) + GroupId: !GetAtt SecurityGroup.GroupId + IpProtocol: -1 + SourceSecurityGroupId: !GetAtt SecurityGroup.GroupId + + # VPC Endpoints for Glue to access AWS services + # AWS Glue requires Gateway endpoints for S3 and DynamoDB + RouteTableLookupRole: + Type: AWS::IAM::Role + Properties: + AssumeRolePolicyDocument: + Version: 2012-10-17 + Statement: + - Effect: Allow + Principal: + Service: lambda.amazonaws.com + Action: sts:AssumeRole + ManagedPolicyArns: + - !Sub arn:${AWS::Partition}:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole + Policies: + - PolicyName: EC2RouteTableAccess + PolicyDocument: + Version: 2012-10-17 + Statement: + - Effect: Allow + Action: + - ec2:DescribeRouteTables + - ec2:DescribeSubnets + Resource: '*' + + RouteTableLookupFunction: + Type: AWS::Lambda::Function + Metadata: + cfn_nag: + rules_to_suppress: + - id: W58 + reason: Lambda execution role has basic execution permissions + - id: W89 + reason: Lambda function does not need VPC configuration + - id: W92 + reason: Lambda function does not need provisioned concurrency + Properties: + Handler: index.handler + Role: !GetAtt RouteTableLookupRole.Arn + Runtime: python3.13 + MemorySize: 128 + Timeout: 60 + Code: + ZipFile: | + import boto3 + import cfnresponse + import logging + + logger = logging.getLogger() + logger.setLevel(logging.INFO) + + def handler(event, context): + try: + if event['RequestType'] == 'Delete': + cfnresponse.send(event, context, cfnresponse.SUCCESS, {}) + return + + subnet_id = event['ResourceProperties']['SubnetId'] + vpc_id = event['ResourceProperties']['VpcId'] + + ec2 = boto3.client('ec2') + + # First check if subnet has explicit route table association + response = ec2.describe_route_tables( + Filters=[ + {'Name': 'association.subnet-id', 'Values': [subnet_id]} + ] + ) + + if response['RouteTables']: + route_table_id = response['RouteTables'][0]['RouteTableId'] + logger.info(f'Found explicit route table: {route_table_id}') + else: + # If no explicit association, find main route table for VPC + response = ec2.describe_route_tables( + Filters=[ + {'Name': 'vpc-id', 'Values': [vpc_id]}, + {'Name': 'association.main', 'Values': ['true']} + ] + ) + if response['RouteTables']: + route_table_id = response['RouteTables'][0]['RouteTableId'] + logger.info(f'Using main route table: {route_table_id}') + else: + raise Exception(f'No route table found for VPC {vpc_id}') + + cfnresponse.send(event, context, cfnresponse.SUCCESS, {'RouteTableId': route_table_id}) + + except Exception as e: + logger.error(f'Error: {str(e)}') + cfnresponse.send(event, context, cfnresponse.FAILED, {}, str(e)) + + RouteTableLookup: + Type: Custom::RouteTableLookup + Properties: + ServiceToken: !GetAtt RouteTableLookupFunction.Arn + SubnetId: !GetAtt VSCodeInstance.SubnetId + VpcId: !GetAtt VSCodeInstance.VpcId + + S3VPCEndpoint: + Type: AWS::EC2::VPCEndpoint + Properties: + VpcId: !GetAtt VSCodeInstance.VpcId + ServiceName: !Sub com.amazonaws.${AWS::Region}.s3 + VpcEndpointType: Gateway + RouteTableIds: + - !GetAtt RouteTableLookup.RouteTableId + + DynamoDBVPCEndpoint: + Type: AWS::EC2::VPCEndpoint + Properties: + VpcId: !GetAtt VSCodeInstance.VpcId + ServiceName: !Sub com.amazonaws.${AWS::Region}.dynamodb + VpcEndpointType: Gateway + RouteTableIds: + - !GetAtt RouteTableLookup.RouteTableId + + # VPC Endpoint for AWS Secrets Manager (required for Glue connections with stored credentials) + SecretsManagerVPCEndpoint: + Type: AWS::EC2::VPCEndpoint + Properties: + VpcId: !GetAtt VSCodeInstance.VpcId + ServiceName: !Sub com.amazonaws.${AWS::Region}.secretsmanager + VpcEndpointType: Interface + SubnetIds: + - !GetAtt VSCodeInstance.SubnetId + SecurityGroupIds: + - !GetAtt SecurityGroup.GroupId + PolicyDocument: + Version: '2012-10-17' + Statement: + - Effect: Allow + Principal: '*' + Action: + - secretsmanager:GetSecretValue + - secretsmanager:DescribeSecret + Resource: '*' + + # AWS Glue Connection for MySQL Database + MySQLGlueConnection: + Type: AWS::Glue::Connection + DependsOn: + - VSCodeInstance + - SecurityGroupSelfIngress + Properties: + CatalogId: !Ref AWS::AccountId + ConnectionInput: + Name: mysql-modernizr-connection + Description: MySQL connection for DynamoDB modernization workshop + ConnectionType: JDBC + ConnectionProperties: + JDBC_CONNECTION_URL: !Sub "jdbc:mysql://${VSCodeInstance.PrivateIp}:3306/online_shopping_store" + USERNAME: !Ref DbMasterUsername + PASSWORD: !GetAtt DbPasswordPlaintext.password + PhysicalConnectionRequirements: + AvailabilityZone: !GetAtt VSCodeInstance.AvailabilityZone + SecurityGroupIdList: + - !GetAtt SecurityGroup.GroupId + SubnetId: !GetAtt VSCodeInstance.SubnetId + + +Outputs: + EnvironmentName: + Description: Environment Name + Value: !Ref EnvironmentName + VSCodeURL: + Description: VSCode Server URL (Direct HTTP Access) + Value: !Sub http://${VSCodeInstance.PublicDnsName} + VSCodePassword: + Description: VSCode Server Password (stored in AWS Secrets Manager) + Value: !GetAtt SecretPlaintext.password + VSCodePublicIP: + Description: VSCode Server Public IP Address + Value: !GetAtt VSCodeInstance.PublicIp + VSCodeInstanceId: + Description: VSCode Server Instance ID (MySQL is installed on this instance) + Value: !Ref VSCodeInstance + VSCodeVpcId: + Description: VPC ID where the VSCode instance is deployed + Value: !GetAtt VSCodeInstance.VpcId + VSCodeSubnetId: + Description: Subnet ID where the VSCode instance is deployed + Value: !GetAtt VSCodeInstance.SubnetId + VSCodeSecurityGroupId: + Description: Security Group ID associated with the VSCode instance + Value: !GetAtt SecurityGroup.GroupId + VSCodePrivateIP: + Description: Private IP Address of VSCode instance (use this for JDBC connections from Glue) + Value: !GetAtt VSCodeInstance.PrivateIp + MigrationS3Bucket: + Description: S3 Bucket for Migration + Value: !Ref MigrationS3Bucket + DDBReplicationRoleArn: + Description: DynamoDB Replication Role ARN + Value: !GetAtt DDBReplicationRole.Arn + GlueServiceRoleArn: + Description: Glue Service Role ARN for MySQL to DynamoDB Migration + Value: !GetAtt GlueServiceRole.Arn + MySQLCredentials: + Description: MySQL Database Credentials + Value: !Sub "Username: ${DbMasterUsername}, Password: ${DbPasswordPlaintext.password}" + DatabasePasswordSecret: + Description: AWS Secrets Manager Secret Name for Database Password + Value: !Ref DbPasswordSecret diff --git a/workshops/modernizr/prompts/00-mysql-dynamodb-migration-orchestrator/design.md b/workshops/modernizer/prompts/00-mysql-dynamodb-migration-orchestrator/design.md similarity index 100% rename from workshops/modernizr/prompts/00-mysql-dynamodb-migration-orchestrator/design.md rename to workshops/modernizer/prompts/00-mysql-dynamodb-migration-orchestrator/design.md diff --git a/workshops/modernizr/prompts/00-mysql-dynamodb-migration-orchestrator/requirements.md b/workshops/modernizer/prompts/00-mysql-dynamodb-migration-orchestrator/requirements.md similarity index 100% rename from workshops/modernizr/prompts/00-mysql-dynamodb-migration-orchestrator/requirements.md rename to workshops/modernizer/prompts/00-mysql-dynamodb-migration-orchestrator/requirements.md diff --git a/workshops/modernizr/prompts/00-mysql-dynamodb-migration-orchestrator/tasks.md b/workshops/modernizer/prompts/00-mysql-dynamodb-migration-orchestrator/tasks.md similarity index 100% rename from workshops/modernizr/prompts/00-mysql-dynamodb-migration-orchestrator/tasks.md rename to workshops/modernizer/prompts/00-mysql-dynamodb-migration-orchestrator/tasks.md diff --git a/workshops/modernizr/prompts/01-mysql-analysis/design.md b/workshops/modernizer/prompts/01-mysql-analysis/design.md similarity index 100% rename from workshops/modernizr/prompts/01-mysql-analysis/design.md rename to workshops/modernizer/prompts/01-mysql-analysis/design.md diff --git a/workshops/modernizr/prompts/01-mysql-analysis/requirements.md b/workshops/modernizer/prompts/01-mysql-analysis/requirements.md similarity index 100% rename from workshops/modernizr/prompts/01-mysql-analysis/requirements.md rename to workshops/modernizer/prompts/01-mysql-analysis/requirements.md diff --git a/workshops/modernizr/prompts/01-mysql-analysis/tasks.md b/workshops/modernizer/prompts/01-mysql-analysis/tasks.md similarity index 100% rename from workshops/modernizr/prompts/01-mysql-analysis/tasks.md rename to workshops/modernizer/prompts/01-mysql-analysis/tasks.md diff --git a/workshops/modernizr/prompts/02-dynamodb-data-modeling/design.md b/workshops/modernizer/prompts/02-dynamodb-data-modeling/design.md similarity index 100% rename from workshops/modernizr/prompts/02-dynamodb-data-modeling/design.md rename to workshops/modernizer/prompts/02-dynamodb-data-modeling/design.md diff --git a/workshops/modernizr/prompts/02-dynamodb-data-modeling/requirements.md b/workshops/modernizer/prompts/02-dynamodb-data-modeling/requirements.md similarity index 100% rename from workshops/modernizr/prompts/02-dynamodb-data-modeling/requirements.md rename to workshops/modernizer/prompts/02-dynamodb-data-modeling/requirements.md diff --git a/workshops/modernizr/prompts/02-dynamodb-data-modeling/tasks.md b/workshops/modernizer/prompts/02-dynamodb-data-modeling/tasks.md similarity index 100% rename from workshops/modernizr/prompts/02-dynamodb-data-modeling/tasks.md rename to workshops/modernizer/prompts/02-dynamodb-data-modeling/tasks.md diff --git a/workshops/modernizr/prompts/03-dual-database-abstraction/design.md b/workshops/modernizer/prompts/03-dual-database-abstraction/design.md similarity index 100% rename from workshops/modernizr/prompts/03-dual-database-abstraction/design.md rename to workshops/modernizer/prompts/03-dual-database-abstraction/design.md diff --git a/workshops/modernizr/prompts/03-dual-database-abstraction/requirements.md b/workshops/modernizer/prompts/03-dual-database-abstraction/requirements.md similarity index 100% rename from workshops/modernizr/prompts/03-dual-database-abstraction/requirements.md rename to workshops/modernizer/prompts/03-dual-database-abstraction/requirements.md diff --git a/workshops/modernizr/prompts/03-dual-database-abstraction/tasks.md b/workshops/modernizer/prompts/03-dual-database-abstraction/tasks.md similarity index 100% rename from workshops/modernizr/prompts/03-dual-database-abstraction/tasks.md rename to workshops/modernizer/prompts/03-dual-database-abstraction/tasks.md diff --git a/workshops/modernizr/prompts/04-dynamodb-implementation/design.md b/workshops/modernizer/prompts/04-dynamodb-implementation/design.md similarity index 100% rename from workshops/modernizr/prompts/04-dynamodb-implementation/design.md rename to workshops/modernizer/prompts/04-dynamodb-implementation/design.md diff --git a/workshops/modernizr/prompts/04-dynamodb-implementation/requirements.md b/workshops/modernizer/prompts/04-dynamodb-implementation/requirements.md similarity index 100% rename from workshops/modernizr/prompts/04-dynamodb-implementation/requirements.md rename to workshops/modernizer/prompts/04-dynamodb-implementation/requirements.md diff --git a/workshops/modernizr/prompts/04-dynamodb-implementation/tasks.md b/workshops/modernizer/prompts/04-dynamodb-implementation/tasks.md similarity index 100% rename from workshops/modernizr/prompts/04-dynamodb-implementation/tasks.md rename to workshops/modernizer/prompts/04-dynamodb-implementation/tasks.md diff --git a/workshops/modernizr/prompts/05-feature-flags-system/design.md b/workshops/modernizer/prompts/05-feature-flags-system/design.md similarity index 100% rename from workshops/modernizr/prompts/05-feature-flags-system/design.md rename to workshops/modernizer/prompts/05-feature-flags-system/design.md diff --git a/workshops/modernizr/prompts/05-feature-flags-system/requirements.md b/workshops/modernizer/prompts/05-feature-flags-system/requirements.md similarity index 100% rename from workshops/modernizr/prompts/05-feature-flags-system/requirements.md rename to workshops/modernizer/prompts/05-feature-flags-system/requirements.md diff --git a/workshops/modernizr/prompts/05-feature-flags-system/tasks.md b/workshops/modernizer/prompts/05-feature-flags-system/tasks.md similarity index 100% rename from workshops/modernizr/prompts/05-feature-flags-system/tasks.md rename to workshops/modernizer/prompts/05-feature-flags-system/tasks.md diff --git a/workshops/modernizr/prompts/06-infrastructure-deployment/design.md b/workshops/modernizer/prompts/06-infrastructure-deployment/design.md similarity index 100% rename from workshops/modernizr/prompts/06-infrastructure-deployment/design.md rename to workshops/modernizer/prompts/06-infrastructure-deployment/design.md diff --git a/workshops/modernizr/prompts/06-infrastructure-deployment/requirements.md b/workshops/modernizer/prompts/06-infrastructure-deployment/requirements.md similarity index 100% rename from workshops/modernizr/prompts/06-infrastructure-deployment/requirements.md rename to workshops/modernizer/prompts/06-infrastructure-deployment/requirements.md diff --git a/workshops/modernizr/prompts/06-infrastructure-deployment/tasks.md b/workshops/modernizer/prompts/06-infrastructure-deployment/tasks.md similarity index 100% rename from workshops/modernizr/prompts/06-infrastructure-deployment/tasks.md rename to workshops/modernizer/prompts/06-infrastructure-deployment/tasks.md diff --git a/workshops/modernizr/prompts/07-data-migration-execution/design.md b/workshops/modernizer/prompts/07-data-migration-execution/design.md similarity index 100% rename from workshops/modernizr/prompts/07-data-migration-execution/design.md rename to workshops/modernizer/prompts/07-data-migration-execution/design.md diff --git a/workshops/modernizr/prompts/07-data-migration-execution/requirements.md b/workshops/modernizer/prompts/07-data-migration-execution/requirements.md similarity index 100% rename from workshops/modernizr/prompts/07-data-migration-execution/requirements.md rename to workshops/modernizer/prompts/07-data-migration-execution/requirements.md diff --git a/workshops/modernizr/prompts/07-data-migration-execution/tasks.md b/workshops/modernizer/prompts/07-data-migration-execution/tasks.md similarity index 100% rename from workshops/modernizr/prompts/07-data-migration-execution/tasks.md rename to workshops/modernizer/prompts/07-data-migration-execution/tasks.md diff --git a/workshops/modernizr/prompts/README.md b/workshops/modernizer/prompts/README.md similarity index 97% rename from workshops/modernizr/prompts/README.md rename to workshops/modernizer/prompts/README.md index 31177453..d141eb05 100644 --- a/workshops/modernizr/prompts/README.md +++ b/workshops/modernizer/prompts/README.md @@ -1,12 +1,12 @@ -# Database Modernizr Workflow Guide 🚀 +# Database Modernizer Workflow Guide 🚀 This guide provides step-by-step instructions for executing the complete database modernization workflow from MySQL to DynamoDB using AWS services and AI-powered automation. The modernization workflow consists of 7 stages that you need to run to incrementally modernize your application. -![Stages](modernizr-stages.png) +![Stages](modernizer-stages.png) -For simplicity, during this workshop you will be working with some stages that were alreaady generated, however you can find the clean files to run this workshop on your own in the `workshops/modernizr/clean-start` folder. When we execute this workshop from scratch, it takes around 11 hours to complete. +For simplicity, during this workshop you will be working with some stages that were alreaady generated, however you can find the clean files to run this workshop on your own in the `workshops/modernizer/clean-start` folder. When we execute this workshop from scratch, it takes around 11 hours to complete. We want you focused on the most important sections of this workshop: @@ -23,7 +23,7 @@ We want you focused on the most important sections of this workshop: ### 1. AWS Infrastructure Deployment -Deploy the `modernizr-db.yaml` CloudFormation template to create the required infrastructure: +Deploy the `modernizer-db.yaml` CloudFormation template to create the required infrastructure: **What it creates:** - MySQL database (simulates on-premises setup) @@ -43,7 +43,7 @@ Deploy the `modernizr-db.yaml` CloudFormation template to create the required in **🔧 Manual Configuration Step:** 1. Go to **AWS Glue Connections** console -2. Edit connection named `mysql-modernizr-connection` +2. Edit connection named `mysql-modernizer-connection` 3. Update password (found in CloudFormation outputs) 4. **Save the connection** @@ -107,7 +107,7 @@ Deploy the `modernizr-db.yaml` CloudFormation template to create the required in ```json { "mcpServers": { - "modernizr-mysql-mcp-server": { + "modernizer-mysql-mcp-server": { "type": "stdio", "command": "uvx", "args": [ diff --git a/workshops/modernizer/prompts/modernizer-stages.png b/workshops/modernizer/prompts/modernizer-stages.png new file mode 100644 index 00000000..9d624be6 Binary files /dev/null and b/workshops/modernizer/prompts/modernizer-stages.png differ diff --git a/workshops/modernizr/tools/config.json b/workshops/modernizer/tools/config.json similarity index 100% rename from workshops/modernizr/tools/config.json rename to workshops/modernizer/tools/config.json diff --git a/workshops/modernizr/tools/contract_driven_migration_glue_mcp.py b/workshops/modernizer/tools/contract_driven_migration_glue_mcp.py similarity index 98% rename from workshops/modernizr/tools/contract_driven_migration_glue_mcp.py rename to workshops/modernizer/tools/contract_driven_migration_glue_mcp.py index 0cf98284..4b314c2a 100644 --- a/workshops/modernizr/tools/contract_driven_migration_glue_mcp.py +++ b/workshops/modernizer/tools/contract_driven_migration_glue_mcp.py @@ -382,13 +382,13 @@ def get_mysql_config_from_mcp(use_private_ip=False): def verify_glue_connection(aws_config): """Verify that the CloudFormation-created Glue connection exists""" - print("🔗 Verifying Glue connection: mysql-modernizr-connection...") + print("🔗 Verifying Glue connection: mysql-modernizer-connection...") connection_script = f''' import boto3 glue = boto3.client('glue', region_name='{aws_config['region']}') try: - response = glue.get_connection(Name='mysql-modernizr-connection') + response = glue.get_connection(Name='mysql-modernizer-connection') connection = response['Connection'] print(f"Connection found: {{connection['Name']}}") print(f"Connection type: {{connection['ConnectionType']}}") @@ -405,7 +405,7 @@ def verify_glue_connection(aws_config): os.unlink(script_path) if "SUCCESS" in result.stdout: - print(" ✅ Glue connection verified: mysql-modernizr-connection") + print(" ✅ Glue connection verified: mysql-modernizer-connection") return True else: print(f" ❌ Connection not found: {result.stdout}") @@ -511,7 +511,7 @@ def create_glue_jobs_via_mcp(contract, created_views, mysql_config, config): 'MaxConcurrentRuns': 1 }}, Connections={{ - 'Connections': ['mysql-modernizr-connection'] + 'Connections': ['mysql-modernizer-connection'] }}, MaxRetries=0, Timeout=60 diff --git a/workshops/modernizr/tools/contract_driven_migration_mcp.py b/workshops/modernizer/tools/contract_driven_migration_mcp.py similarity index 100% rename from workshops/modernizr/tools/contract_driven_migration_mcp.py rename to workshops/modernizer/tools/contract_driven_migration_mcp.py diff --git a/workshops/modernizr/tools/generate_mysql_views.py b/workshops/modernizer/tools/generate_mysql_views.py similarity index 100% rename from workshops/modernizr/tools/generate_mysql_views.py rename to workshops/modernizer/tools/generate_mysql_views.py diff --git a/workshops/modernizr/clean-start/tools/glue_script_template.py b/workshops/modernizer/tools/glue_script_template.py similarity index 97% rename from workshops/modernizr/clean-start/tools/glue_script_template.py rename to workshops/modernizer/tools/glue_script_template.py index a94326c2..d5d2a4b4 100644 --- a/workshops/modernizr/clean-start/tools/glue_script_template.py +++ b/workshops/modernizer/tools/glue_script_template.py @@ -29,12 +29,12 @@ # Read from MySQL using the Glue connection try: - print(f"Attempting to read from MySQL using Glue connection: mysql-modernizr-connection") + print(f"Attempting to read from MySQL using Glue connection: mysql-modernizer-connection") mysql_df = glueContext.create_dynamic_frame.from_options( connection_type="mysql", connection_options={ "useConnectionProperties": "true", - "connectionName": "mysql-modernizr-connection", + "connectionName": "mysql-modernizer-connection", "dbtable": VIEW_NAME }, transformation_ctx="mysql_source" diff --git a/workshops/modernizr/prompts/modernizr-stages.png b/workshops/modernizr/prompts/modernizr-stages.png deleted file mode 100644 index b60bf4d8..00000000 Binary files a/workshops/modernizr/prompts/modernizr-stages.png and /dev/null differ