{"_id":"@adamramdaniyunus/autodeploy-cli","_rev":"2-ca86bc7ffc9aceaef9064385ab121cd4","name":"@adamramdaniyunus/autodeploy-cli","dist-tags":{"latest":"1.1.2"},"versions":{"1.1.0":{"name":"@adamramdaniyunus/autodeploy-cli","version":"1.1.0","keywords":["deploy","deployment","cli","git","automation","vps","server","devops","nodejs","php","nginx","ssl","letsencrypt","pm2","ssh","auto-deploy","continuous-deployment"],"author":{"name":"AutoDeploy CLI"},"license":"MIT","_id":"@adamramdaniyunus/autodeploy-cli@1.1.0","maintainers":[{"name":"adamramdaniyunus","email":"adamramdani1122@gmail.com"}],"homepage":"https://github.com/adamramdaniyunus/autodeploy-tools#readme","bugs":{"url":"https://github.com/adamramdaniyunus/autodeploy-tools/issues"},"bin":{"autodeploy":"bin/cli.js"},"dist":{"shasum":"8ff45e797e8ed4aa632bc8e3958994178cdde962","tarball":"https://registry.npmjs.org/@adamramdaniyunus/autodeploy-cli/-/autodeploy-cli-1.1.0.tgz","fileCount":15,"integrity":"sha512-v1jCetakuf83Pth3KDqHjEaC+S4mwJeHRUKsnmgRVUS+kWWmW2VQCz1z6OWebN8SOOY1S7X20ltDEbSeHmUMtw==","signatures":[{"sig":"MEUCIQDpc/zmSwE/5Ich3pKwJlv9GD0ImhPB6o63KFbTlyGs9gIgLlINsue/M0G2SOTnvyqzitsjG0SrM8mtgemk3wmJQLI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76240},"main":"bin/cli.js","type":"module","engines":{"node":">=16.0.0"},"gitHead":"bd9c9c86c394b199e5b6ab96363548e119cc599f","scripts":{"link":"npm link","test":"echo \"Error: no test specified\" && exit 1","start":"node bin/cli.js","unlink":"npm unlink -g autodeploy-cli"},"_npmUser":{"name":"adamramdaniyunus","email":"adamramdani1122@gmail.com"},"repository":{"url":"git+https://github.com/adamramdaniyunus/autodeploy-tools.git","type":"git"},"_npmVersion":"10.8.2","description":"CLI tool for automatic deployment with git push - setup once, deploy forever!","directories":{},"_nodeVersion":"20.19.2","dependencies":{"ora":"^8.0.1","chalk":"^5.3.0","dotenv":"^16.3.1","js-yaml":"^4.1.0","inquirer":"^9.2.12","node-ssh":"^13.1.0","commander":"^11.1.0"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/autodeploy-cli_1.1.0_1765869243543_0.7363552850428992","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@adamramdaniyunus/autodeploy-cli","version":"1.1.2","description":"CLI tool for automatic deployment with git push - setup once, deploy forever!","main":"bin/cli.js","type":"module","bin":{"autodeploy":"bin/cli.js"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node bin/cli.js","link":"npm link","unlink":"npm unlink -g autodeploy-cli"},"keywords":["deploy","deployment","cli","git","automation","vps","server","devops","nodejs","php","nginx","ssl","letsencrypt","pm2","ssh","auto-deploy","continuous-deployment"],"author":{"name":"AutoDeploy CLI"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/adamramdaniyunus/autodeploy-tools.git"},"bugs":{"url":"https://github.com/adamramdaniyunus/autodeploy-tools/issues"},"homepage":"https://github.com/adamramdaniyunus/autodeploy-tools#readme","engines":{"node":">=16.0.0"},"dependencies":{"commander":"^11.1.0","inquirer":"^9.2.12","chalk":"^5.3.0","ora":"^8.0.1","node-ssh":"^13.1.0","dotenv":"^16.3.1","js-yaml":"^4.1.0"},"devDependencies":{},"_id":"@adamramdaniyunus/autodeploy-cli@1.1.2","gitHead":"86ea6bc11e58262b6115d02629313fe85bd697f6","_nodeVersion":"20.19.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-DHvHFzYywUpPNGlbsiGiMEnPGm77tybqeJoKZiL24eUC3Pq59TvSIYAzWcu2r1fEx0gkQvbSunyLWEOQ5tVE+Q==","shasum":"83e08e3b3444fb2e284bc9656ad863907e723663","tarball":"https://registry.npmjs.org/@adamramdaniyunus/autodeploy-cli/-/autodeploy-cli-1.1.2.tgz","fileCount":15,"unpackedSize":76744,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDf3LVseYRHTFvT95OCY71xGYDF/DQpvu5b9AUOySSeaAIhAMDE2MtLot3hLJ/gxvUeoohIe68A2NmcFWfgWL/feNQ3"}]},"_npmUser":{"name":"adamramdaniyunus","email":"adamramdani1122@gmail.com"},"directories":{},"maintainers":[{"name":"adamramdaniyunus","email":"adamramdani1122@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/autodeploy-cli_1.1.2_1765869680737_0.8075156460486279"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-16T07:14:03.431Z","modified":"2025-12-16T07:21:21.087Z","1.1.0":"2025-12-16T07:14:03.696Z","1.1.2":"2025-12-16T07:21:20.877Z"},"bugs":{"url":"https://github.com/adamramdaniyunus/autodeploy-tools/issues"},"author":{"name":"AutoDeploy CLI"},"license":"MIT","homepage":"https://github.com/adamramdaniyunus/autodeploy-tools#readme","keywords":["deploy","deployment","cli","git","automation","vps","server","devops","nodejs","php","nginx","ssl","letsencrypt","pm2","ssh","auto-deploy","continuous-deployment"],"repository":{"type":"git","url":"git+https://github.com/adamramdaniyunus/autodeploy-tools.git"},"description":"CLI tool for automatic deployment with git push - setup once, deploy forever!","maintainers":[{"name":"adamramdaniyunus","email":"adamramdani1122@gmail.com"}],"readme":"# AutoDeploy CLI\n\n[![npm version](https://badge.fury.io/js/@adamramdaniyunus%2Fautodeploy-cli.svg)](https://www.npmjs.com/package/@adamramdaniyunus/autodeploy-cli)\n[![npm downloads](https://img.shields.io/npm/dm/@adamramdaniyunus/autodeploy-cli.svg)](https://www.npmjs.com/package/@adamramdaniyunus/autodeploy-cli)\n[![license](https://img.shields.io/npm/l/@adamramdaniyunus/autodeploy-cli.svg)](https://github.com/adamramdaniyunus/autodeploy-tools/blob/main/LICENSE)\n\nCLI tool for automatic deployment with git push - setup once, deploy forever!\n\n## Overview\n\nAutoDeploy CLI is a command-line tool for automatic deployment that makes the application deployment process incredibly easy. Developers only need to set it up once, and then deployments can be done with a simple command or even automatically on git push.\n\n### Key Features\n\n- **No SSH Required** - Everything is done automatically from the CLI\n- **No Git PAT Setup** - Uses git repository directly\n- **No Manual Installation** - Automatic server setup\n- **Simple Deployment** - Deploy with one command or git push\n- **Easy Domain & SSL** - Automatic Nginx and Let's Encrypt setup\n- **Server Monitoring** - Status command to check server\n- **Easy Rollback** - Return to previous version easily\n\n### Supported Applications\n\n- **Node.js** - Express, Next.js, NestJS, Koa, etc.\n- **PHP** - Laravel, CodeIgniter, WordPress, Symfony, etc.\n- **Laravel + React** - Full-stack monorepo with React frontend (Vite/Webpack)\n- **Static** - HTML/CSS/JS, React (build), Vue (build), Angular (build)\n- **Python** - Flask, Django, FastAPI\n\n---\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Quick Start](#quick-start)\n- [Commands](#commands)\n- [Configuration](#configuration)\n- [Examples](#examples)\n- [Troubleshooting](#troubleshooting)\n- [FAQ](#faq)\n- [Contributing](#contributing)\n- [License](#license)\n\n---\n\n## Installation\n\n### Prerequisites\n\n**Local Machine:**\n- Node.js 16 or higher\n- npm (comes with Node.js)\n- Git installed and configured\n\n**VPS/Server:**\n- Ubuntu 20.04+ or Debian 10+ (recommended)\n- SSH access with username and password\n- Root access or user with sudo privileges\n- Ports open: 22 (SSH), 80 (HTTP), 443 (HTTPS)\n\n### Install Globally\n\n```bash\nnpm install -g @adamramdaniyunus/autodeploy-cli\n```\n\nVerify installation:\n```bash\nautodeploy --version\nautodeploy --help\n```\n\n### Install Locally in Project\n\n```bash\nnpm install @adamramdaniyunus/autodeploy-cli --save-dev\n```\n\nUse with npx:\n```bash\nnpx autodeploy --help\n```\n\nOr add to package.json scripts:\n```json\n{\n  \"scripts\": {\n    \"deploy\": \"autodeploy deploy\",\n    \"status\": \"autodeploy status\"\n  }\n}\n```\n\n---\n\n## Quick Start\n\n### 1. Initialize Configuration\n\nNavigate to your project directory:\n```bash\ncd /path/to/your/project\n```\n\nRun init command:\n```bash\nautodeploy init\n```\n\nAnswer the setup questions:\n- Project name\n- VPS IP Address\n- VPS Username & Password\n- Deploy path on server\n- Git repository URL\n- Domain name (optional)\n- **Git authentication method** (PAT/SSH/None)\n  - If PAT: Enter your GitHub Personal Access Token\n  - If SSH: SSH key will be generated and displayed\n- Application type (nodejs, php, static, python)\n- Build command (optional)\n- Start command (for Node.js/Python)\n- Application port\n\n**Note:** AutoDeploy will automatically setup Git credentials on your server so it can pull from private repositories.\n\n### 2. Deploy Your Application\n\n```bash\nautodeploy deploy\n```\n\n### 3. Check Status\n\n```bash\nautodeploy status\n```\n\n### 4. Setup Git Hook (Optional)\n\nFor auto-deploy on git push:\n\n```bash\ncp node_modules/@adamramdaniyunus/autodeploy-cli/hooks/pre-push .git/hooks/pre-push\nchmod +x .git/hooks/pre-push\n```\n\nEdit `.git/hooks/pre-push` and uncomment:\n```bash\nnode_modules/.bin/autodeploy deploy || true\n```\n\nNow you can deploy with:\n```bash\ngit push\n```\n\n---\n\n## Commands\n\n### `autodeploy init`\n\nInitialize deployment configuration (one-time setup).\n\n```bash\nautodeploy init\n```\n\nCreates `deploy-config.yml` with all your settings.\n\n### `autodeploy deploy`\n\nDeploy application to server.\n\n```bash\nautodeploy deploy                    # Deploy default branch\nautodeploy deploy --branch develop   # Deploy specific branch\n```\n\n### `autodeploy status`\n\nCheck server and deployment status.\n\n```bash\nautodeploy status\n```\n\nShows:\n- Server uptime, memory, disk usage\n- Git branch and commit info\n- Application status (for Node.js)\n- SSL certificate expiry\n- Recent deployment history\n\n### `autodeploy rollback`\n\nRollback to previous deployment.\n\n```bash\nautodeploy rollback                  # Interactive selection\nautodeploy rollback --version abc123 # Rollback to specific commit\n```\n\n### `autodeploy domain`\n\nManage domain and SSL configuration.\n\n```bash\nautodeploy domain --add example.com     # Add domain\nautodeploy domain --remove example.com  # Remove domain\nautodeploy domain --list                # List domains\n```\n\nSSL certificate automatically installed with Let's Encrypt.\n\n### `autodeploy logs`\n\nView deployment logs.\n\n```bash\nautodeploy logs                  # Last 50 lines\nautodeploy logs --lines 100      # Last 100 lines\n```\n\n---\n\n## Configuration\n\nConfiguration is stored in `deploy-config.yml`:\n\n```yaml\nproject:\n  name: my-app\n  type: nodejs\n\nserver:\n  host: 192.168.1.100\n  username: root\n  password: your-password\n  port: 22\n  deployPath: /var/www/html\n\ngit:\n  repository: https://github.com/user/repo.git\n  branch: main\n  authMethod: pat  # pat, ssh, or none\n  token: ghp_xxxxxxxxxxxxxxxxxxxx  # GitHub Personal Access Token (keep secret!)\n\nbuild:\n  command: npm run build\n  startCommand: npm start\n  port: 3000\n\ndomain: example.com\n```\n\n**Important:** The `deploy-config.yml` file is automatically added to `.gitignore` during initialization to prevent credentials from being committed to git. The `.autodeploy/` directory is also excluded.\n\nIf you need to manually add these entries:\n```bash\necho \"deploy-config.yml\" >> .gitignore\necho \".autodeploy/\" >> .gitignore\n```\n\n### Git Authentication\n\nAutoDeploy supports three authentication methods:\n\n1.  **Personal Access Token (PAT)** - Recommended\n    -   Create token at: https://github.com/settings/tokens\n    -   Select scope: `repo` (full control of private repositories)\n    -   AutoDeploy will store it securely on server\n\n2.  **SSH Key**\n    -   AutoDeploy generates SSH key on server\n    -   You add public key to GitHub manually\n    -   More secure, no password storage\n\n3.  **None**\n    -   For public repositories\n    -   Or if you want to setup credentials manually\n\n---\n\n## Examples\n\n### Example 1: Deploy Node.js Express App\n\n```bash\n# Initialize\nautodeploy init\n\n# Configuration:\n# - App type: nodejs\n# - Start command: npm start\n# - Port: 3000\n# - Domain: api.example.com\n\n# Deploy\nautodeploy deploy\n\n# Check status\nautodeploy status\n```\n\n### Example 2: Deploy PHP Laravel App\n\n```bash\n# Initialize\nautodeploy init\n\n# Configuration:\n# - App type: php\n# - Build command: composer install --no-dev && php artisan migrate\n# - Domain: app.example.com\n\n# Deploy\nautodeploy deploy\n```\n\n### Example 3: Deploy Static React App\n\n```bash\n# Initialize\nautodeploy init\n\n# Configuration:\n# - App type: static\n# - Build command: npm install && npm run build && cp -r build/* .\n# - Domain: www.example.com\n\n# Deploy\nautodeploy deploy\n```\n\n### Example 4: Deploy Laravel + React Monorepo\n\n```bash\n# Initialize\nautodeploy init\n\n# Configuration:\n# - App type: laravel-react\n# - Frontend dir: resources/ts\n# - Frontend build: npm run build\n# - Composer install: yes\n# - Laravel optimize: yes\n# - Run migrations: no (safer to run manually)\n# - Domain: app.example.com\n\n# Deploy\nautodeploy deploy\n\n# This will automatically:\n# 1. Pull latest code from git\n# 2. Install npm dependencies\n# 3. Build React app with Vite\n# 4. Install composer dependencies\n# 5. Run Laravel optimizations (config/route/view cache)\n# 6. Reload PHP-FPM (auto-detects version)\n```\n\n**Typical Laravel + React Structure:**\n```\nmy-app/\n├── app/              # Laravel backend\n├── resources/\n│   ├── ts/          # React components (TypeScript)\n│   └── views/\n├── public/\n│   └── build/       # Built React assets (auto-generated by Vite)\n├── package.json     # Frontend dependencies\n├── composer.json    # Backend dependencies\n└── vite.config.js   # Vite configuration\n```\n\n### Example 5: Rollback After Error\n\n```bash\n# Check logs\nautodeploy logs\n\n# Rollback to previous version\nautodeploy rollback\n\n# Select version from list\n# Verify\nautodeploy status\n```\n\n### Example 6: Add Domain & SSL\n\n```bash\n# Add domain\nautodeploy domain --add example.com\n\n# Enter email for SSL certificate\n# SSL automatically installed\n\n# Verify\ncurl https://example.com\n```\n\n---\n\n## Troubleshooting\n\n### \"Connection refused\" during init\n\n**Causes:**\n- Incorrect VPS IP\n- SSH port not open\n- Firewall blocking SSH\n\n**Solutions:**\n```bash\n# Test SSH manually\nssh username@vps-ip\n\n# Check firewall\nsudo ufw status\nsudo ufw allow 22\n```\n\n### \"Permission denied\"\n\n**Causes:**\n- User doesn't have access to deploy path\n- Need sudo privileges\n\n**Solutions:**\n- Use root user\n- Or use user with sudo access\n- Check deploy path permissions\n\n### \"SSL certificate failed\"\n\n**Causes:**\n- Domain not pointing to VPS IP\n- Ports 80/443 not open\n- Another web server using port 80/443\n\n**Solutions:**\n```bash\n# Check DNS\nnslookup your-domain.com\n\n# Check ports\nsudo netstat -tuln | grep -E ':(80|443)'\n\n# Open ports\nsudo ufw allow 80\nsudo ufw allow 443\n```\n\n### \"Application not starting\" (Node.js)\n\n**Causes:**\n- Dependencies not installed\n- Incorrect start command\n- Port already in use\n- Syntax errors in code\n\n**Solutions:**\n```bash\n# Check logs\nautodeploy logs\n\n# Verify locally first\nnpm install\nnpm start\n\n# Check port usage\nsudo lsof -i :3000\n```\n\n### \"Build failed\"\n\n**Solutions:**\n```bash\n# Test build locally\nnpm run build\n\n# Check build logs\nautodeploy logs\n\n# Verify all dependencies in package.json\n```\n\n---\n\n## FAQ\n\n### General Questions\n\n**Q: Is it free?**  \nA: Yes, AutoDeploy CLI is open source with MIT license. Free to use, modify, and distribute.\n\n**Q: Who should use this tool?**  \nA: Developers who want easy deployment, freelancers, startups/small teams, students learning web development.\n\n**Q: How long does initial setup take?**  \nA: Initial setup takes about 3-5 minutes. After that, deployments only take 30 seconds.\n\n**Q: Is it safe to store passwords in the config file?**  \nA: The `deploy-config.yml` file should be added to `.gitignore` to prevent it from being committed to git.\n\n### Server Requirements\n\n**Q: Which VPS providers are supported?**  \nA: Ubuntu 20.04+, Debian 10+, CentOS 7+ (experimental).\n\n**Q: Can I use shared hosting?**  \nA: No. AutoDeploy requires SSH access and the ability to install software.\n\n**Q: What are the minimum VPS specifications?**  \nA: RAM: 512MB minimum (1GB recommended), Storage: 10GB minimum, CPU: 1 core minimum.\n\n**Q: Do I need a domain?**  \nA: No. Domain is optional. Without a domain, the application can be accessed via IP:PORT.\n\n### Deployment\n\n**Q: How long does deployment take?**  \nA: Node.js app: 30-60 seconds, PHP app: 20-40 seconds, Static site: 10-20 seconds.\n\n**Q: Does deployment cause downtime?**  \nA: Node.js: PM2 performs zero-downtime restart. PHP: Minimal downtime (< 1 second). Static: No downtime.\n\n**Q: What happens if deployment fails?**  \nA: Errors are displayed in the terminal, the application keeps running with the previous version, and you can rollback if needed.\n\n### Domain & SSL\n\n**Q: Is SSL free?**  \nA: Yes, using Let's Encrypt which is free.\n\n**Q: How long is the SSL certificate valid?**  \nA: 90 days. Auto-renewal is set up automatically by certbot.\n\n**Q: Does the domain need to be pointing before setup?**  \nA: Yes, for SSL certificate to succeed, the domain must already be pointing to the VPS IP.\n\n### Advanced\n\n**Q: Can I customize the build command?**  \nA: Yes, during `autodeploy init` or by editing `deploy-config.yml`.\n\n**Q: Can it integrate with CI/CD?**  \nA: Yes, it can be called from CI/CD pipelines.\n\n---\n\n## Deployment Flow\n\n```\n1. Developer commits code\n   git add .\n   git commit -m \"New feature\"\n\n2. Deploy command\n   autodeploy deploy\n\n3. CLI connects to server via SSH\n\n4. Pull latest code from git\n\n5. Install dependencies\n   npm install / composer install\n\n6. Run build command (if any)\n   npm run build\n\n7. Restart application\n   PM2 restart / PHP-FPM reload\n\n8. Save deployment history\n\n9. Deployment complete\n```\n\n### Laravel + React Deployment Flow\n\n```\n1. Developer commits code\n   git add .\n   git commit -m \"New feature\"\n\n2. Deploy command\n   autodeploy deploy\n\n3. CLI connects to server via SSH\n\n4. Pull latest code from git\n\n5. Install frontend dependencies\n   npm install\n\n6. Build React application\n   npm run build (Vite)\n   → Output to public/build/\n\n7. Install backend dependencies\n   composer install --no-dev --optimize-autoloader\n\n8. Run Laravel optimizations\n   php artisan config:cache\n   php artisan route:cache\n   php artisan view:cache\n\n9. Run migrations (if enabled)\n   php artisan migrate\n\n10. Reload PHP-FPM\n    Auto-detect PHP version (8.1, 8.2, 8.3, etc.)\n    systemctl reload php8.3-fpm\n\n11. Save deployment history\n\n12. Deployment complete\n```\n\n---\n\n## Project Structure\n\n```\ndeploy-tools/\n├── bin/\n│   └── cli.js                 # CLI entry point\n├── src/\n│   ├── commands/              # Command implementations\n│   │   ├── init.js           # Setup wizard\n│   │   ├── deploy.js         # Deployment logic\n│   │   ├── status.js         # Server monitoring\n│   │   ├── rollback.js       # Rollback functionality\n│   │   ├── domain.js         # Domain & SSL management\n│   │   └── logs.js           # Log viewer\n│   └── utils/                 # Utility functions\n│       ├── config.js         # Config file management\n│       └── ssh.js            # SSH client wrapper\n├── hooks/                     # Git hooks templates\n│   ├── pre-push              # Auto-deploy on push\n│   └── README.md\n├── package.json\n├── deploy-config.example.yml\n└── README.md\n```\n\n---\n\n## Contributing\n\nContributions are welcome! Here's how you can help:\n\n### Development Setup\n\n```bash\n# Clone repository\ngit clone <repo-url>\ncd deploy-tools\n\n# Install dependencies\nnpm install\n\n# Test CLI\nnode bin/cli.js --help\n```\n\n### Adding New Commands\n\n1. Create new file in `src/commands/your-command.js`\n2. Export async function\n3. Register in `bin/cli.js`\n\n### Code Style\n\n- Use ES6+ modules\n- Async/await for asynchronous operations\n- Chalk for colored output\n- Ora for spinners\n- Inquirer for interactive prompts\n\n### Pull Request Process\n\n1. Fork repository\n2. Create feature branch: `git checkout -b feature/amazing-feature`\n3. Commit changes: `git commit -m 'Add amazing feature'`\n4. Push to branch: `git push origin feature/amazing-feature`\n5. Open Pull Request\n\n### Ideas for Contribution\n\n- Add SSH key authentication support\n- Add automated tests\n- Support for Docker deployments\n- Database migration support\n- Environment variables management\n- Slack/Discord notifications\n- Health check monitoring\n- Multi-server deployment\n- CI/CD integration\n- Web dashboard\n\n---\n\n## Roadmap\n\n### Version 1.0 (Current)\n- [x] Basic deployment functionality\n- [x] Domain & SSL management\n- [x] Rollback support\n- [x] Server monitoring\n- [x] Deployment logs\n\n### Version 1.1 (Planned)\n- [ ] SSH key authentication\n- [ ] Environment variables management\n- [ ] Database migration support\n- [ ] Health check monitoring\n\n### Version 2.0 (Future)\n- [ ] Multi-server deployment\n- [ ] Docker support\n- [ ] CI/CD integration\n- [ ] Web dashboard\n- [ ] Slack/Discord notifications\n- [ ] Auto-scaling support\n\n---\n\n## Technical Stack\n\n### Dependencies\n- **commander** - CLI framework\n- **inquirer** - Interactive prompts\n- **chalk** - Colored terminal output\n- **ora** - Loading spinners\n- **node-ssh** - SSH client\n- **js-yaml** - YAML parser\n\n### Server Requirements\n- Ubuntu/Debian (recommended)\n- SSH access\n- Root or sudo privileges\n\n---\n\n## Security Considerations\n\n1. **Password Storage**\n   - Stored in `deploy-config.yml`\n   - File added to `.gitignore`\n   - Never committed to git\n\n2. **Recommended Practices**\n   ```bash\n   # Protect config file\n   chmod 600 deploy-config.yml\n   \n   # Add to gitignore\n   echo \"deploy-config.yml\" >> .gitignore\n   ```\n\n3. **Future Improvements**\n   - SSH key authentication (planned)\n   - Encrypted config file (planned)\n\n---\n\n## Comparison with Other Tools\n\n### vs Heroku\n- **AutoDeploy**: Deploy to your own VPS, cheaper for long-term\n- **Heroku**: Platform as a Service, more expensive but easier\n\n### vs Vercel/Netlify\n- **AutoDeploy**: Full control, supports all types of apps\n- **Vercel/Netlify**: Focused on static sites and serverless\n\n### vs Docker\n- **AutoDeploy**: Simpler, no need to learn Docker\n- **Docker**: More powerful, but steeper learning curve\n\n### vs Manual SSH\n- **AutoDeploy**: Automatic, one command, has rollback\n- **Manual SSH**: Complex, prone to error, no history\n\n---\n\n## Support\n\n- **Documentation**: This README\n- **GitHub Issues**: Report bugs or request features\n- **Repository**: https://github.com/adamramdaniyunus/autodeploy-tools\n\n---\n\n## License\n\nMIT License\n\nCopyright (c) 2025 AutoDeploy CLI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n---\n\n**Made with care for developers who want simple, powerful deployment**\n","readmeFilename":"README.md"}