generateProject function

Future<void> generateProject({
  1. required String projectName,
  2. required String org,
})

Generates a complete Karna MVC project.

Implementation

Future<void> generateProject({
  required String projectName,
  required String org,
}) async {
  // Step 1: flutter create
  Logger.step('Creating Flutter project...');
  await runOrFail('flutter', ['create', '--org', org, projectName]);

  if (!Directory(projectName).existsSync()) {
    Logger.error('flutter create failed.');
    exit(1);
  }
  Logger.success('Flutter project created');

  // Step 2: Add dependencies
  Logger.step('Adding dependencies...');
  await runOrFail(
    'flutter',
    [
      'pub',
      'add',
      'provider',
      'http',
      'shared_preferences',
      'hive_ce',
      'hive_ce_flutter'
    ],
    workingDirectory: projectName,
  );
  Logger.success('Dependencies added');

  // Step 3: Scaffold architecture
  Logger.step('Scaffolding Karna MVC architecture...');
  await _scaffoldCore(projectName);
  Logger.success('Core architecture scaffolded');

  // Step 4: Clean up default files
  await _cleanup(projectName);

  Logger.newLine();
  Logger.info("✨ Karna MVC project '$projectName' created successfully!");
  Logger.newLine();
  Logger.info('📝 Next steps:');
  Logger.info('   cd $projectName');
  Logger.info('   karna feature auth');
  Logger.info(
      '   flutter run --dart-define=BASE_URL=http://localhost:8080/api');
}