#!/usr/bin/env node const { execSync } = require('child_process'); const chalk = require('chalk'); const path = require('path'); const fs = require('fs'); const rootDir = process.cwd(); const backendDir = path.join(rootDir, 'packages/backend'); const frontendDir = path.join(rootDir, 'packages/frontend'); // Create shell scripts for each service const backendScript = path.join(rootDir, 'scripts', 'start-backend.sh'); const frontendScript = path.join(rootDir, 'scripts', 'start-frontend.sh'); // Write shell scripts fs.writeFileSync(backendScript, `#!/bin/bash cd "${backendDir}" echo "๐Ÿš€ Starting Backend Server..." yarn start `, { mode: 0o755 }); fs.writeFileSync(frontendScript, `#!/bin/bash cd "${frontendDir}" echo "๐Ÿš€ Starting Frontend Dev Server..." yarn dev `, { mode: 0o755 }); console.log(chalk.cyan.bold('๐Ÿ“ฆ Starting development environment')); try { // Clean up ports first console.log(chalk.blue('๐Ÿงน Cleaning up ports...')); execSync('yarn kill:ports', { stdio: 'inherit' }); // Build packages console.log(chalk.blue('๐Ÿ”จ Building packages...')); execSync('yarn build --ignore frontend', { stdio: 'inherit' }); console.log(chalk.green('โœ… Build complete')); console.log(chalk.blue('๐Ÿš€ Starting services in separate terminals...')); // Open new terminals with the shell scripts execSync(`open -a Terminal ${backendScript}`); execSync(`open -a Terminal ${frontendScript}`); console.log(chalk.green('โœ… Services started in separate terminal windows')); console.log(chalk.cyan('Backend running at:') + chalk.yellow(' http://localhost:8000')); console.log(chalk.cyan('Frontend running at:') + chalk.yellow(' http://localhost:3000')); } catch (error) { console.error(chalk.red(`โŒ Error: ${error.message}`)); process.exit(1); }