#!/usr/bin/env node const { spawn, exec } = require('child_process'); const os = require('os'); const isWindows = process.platform === 'win32'; console.log('šŸš€ Starting minimal development environment...'); // Detect architecture const arch = os.arch(); const isAppleSilicon = arch === 'arm64' && process.platform === 'darwin'; console.log(`šŸ–„ļø Detected architecture: ${arch}`); console.log(`šŸŽ Apple Silicon: ${isAppleSilicon ? 'Yes' : 'No'}`); // Use minimal compose file (only PostgreSQL and Redis) const composeFile = 'docker-compose.dev.minimal.yml'; console.log(`šŸ“¦ Using minimal Docker Compose file: ${composeFile}`); // Check if docker-compose is available exec('docker-compose --version', (error) => { if (error) { console.error('āŒ docker-compose not found'); console.error('šŸ’” Please install Docker Desktop or use: npm run dev:simple'); process.exit(1); } console.log('āœ… docker-compose found, starting services...'); // Start Docker services const dockerProcess = spawn('docker-compose', ['-f', composeFile, 'up', '-d'], { stdio: 'inherit', shell: isWindows }); dockerProcess.on('close', (code) => { if (code === 0) { console.log('āœ… Docker services started'); console.log('šŸ—„ļø PostgreSQL: localhost:5432'); console.log('šŸ“¦ Redis: localhost:6379'); console.log('šŸ“§ Note: Mailhog not included (use npm run dev:simple for email testing)'); // Wait a bit for services to be ready setTimeout(() => { console.log('šŸš€ Starting Next.js development server...'); // Start Next.js dev server const nextProcess = spawn('npm', ['run', 'dev:next'], { stdio: 'inherit', shell: isWindows, env: { ...process.env, DATABASE_URL: 'postgresql://portfolio_user:portfolio_dev_pass@localhost:5432/portfolio_dev?schema=public', REDIS_URL: 'redis://localhost:6379', NODE_ENV: 'development' } }); nextProcess.on('close', (code) => { console.log(`Next.js dev server exited with code ${code}`); }); // Handle process signals process.on('SIGINT', () => { console.log('\nšŸ›‘ Stopping development environment...'); nextProcess.kill('SIGTERM'); // Stop Docker services const stopProcess = spawn('docker-compose', ['-f', composeFile, 'down'], { stdio: 'inherit', shell: isWindows }); stopProcess.on('close', () => { console.log('āœ… Development environment stopped'); process.exit(0); }); }); }, 5000); // Wait 5 seconds for services to be ready } else { console.error('āŒ Failed to start Docker services'); console.error('šŸ’” Try using: npm run dev:simple'); process.exit(1); } }); });