- Implemented gitzone services command for managing MongoDB and MinIO containers - Added smart port assignment (20000-30000 range) to avoid conflicts - Project-specific container names for complete isolation - Data persistence in .nogit/ directories - MongoDB Compass connection string generation with network IP detection - Auto-configuration via .nogit/env.json with secure defaults - Commands: start, stop, restart, status, config, compass, logs, remove, clean - Interactive confirmations for destructive operations - Comprehensive documentation and Task Venture Capital GmbH legal update
		
			
				
	
	
		
			121 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			121 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # GitZone Services Command Implementation Plan
 | |
| 
 | |
| ## Overview
 | |
| Implement the `gitzone services` command to manage MongoDB and MinIO containers for development projects.
 | |
| 
 | |
| ## Tasks
 | |
| 
 | |
| ### Module Structure Setup
 | |
| - [x] Create `ts/mod_services/` directory
 | |
| - [x] Create `mod.plugins.ts` with required imports
 | |
| - [x] Create `helpers.ts` with utility functions
 | |
| - [x] Create `classes.serviceconfiguration.ts` for config handling
 | |
| - [x] Create `classes.dockercontainer.ts` for Docker operations
 | |
| - [x] Create `classes.servicemanager.ts` for service management
 | |
| - [x] Create `index.ts` with main command logic
 | |
| 
 | |
| ### Core Functionality
 | |
| - [x] Implement ServiceConfiguration class
 | |
|   - [x] Load/create `.nogit/env.json` configuration
 | |
|   - [x] Generate random available ports (20000-30000 range)
 | |
|   - [x] Preserve existing custom values
 | |
|   - [x] Provide default values for missing fields
 | |
| 
 | |
| - [x] Implement DockerContainer class
 | |
|   - [x] Check container status
 | |
|   - [x] Start/stop/restart containers
 | |
|   - [x] Execute Docker commands
 | |
|   - [x] Handle container logs
 | |
|   - [x] Manage volumes and port bindings
 | |
| 
 | |
| - [x] Implement ServiceManager class
 | |
|   - [x] Manage MongoDB containers
 | |
|   - [x] Manage MinIO containers
 | |
|   - [x] Handle container lifecycle
 | |
|   - [x] Generate project-specific container names
 | |
|   - [x] Manage data directories in `.nogit/`
 | |
|   - [x] Generate MongoDB Compass connection strings
 | |
| 
 | |
| ### Commands Implementation
 | |
| - [x] `start` command - Start services (mongo|s3|all)
 | |
| - [x] `stop` command - Stop services (mongo|s3|all)
 | |
| - [x] `restart` command - Restart services (mongo|s3|all)
 | |
| - [x] `status` command - Show service status
 | |
| - [x] `config` command - Show current configuration
 | |
| - [x] `compass` command - Show MongoDB Compass connection string
 | |
| - [x] `logs` command - Show service logs with line count
 | |
| - [x] `remove` command - Remove containers (preserve data)
 | |
| - [x] `clean` command - Remove containers and data
 | |
| 
 | |
| ### Integration
 | |
| - [x] Add `@push.rocks/smartshell` to main plugins.ts
 | |
| - [x] Add `@push.rocks/smartnetwork` to main plugins.ts
 | |
| - [x] Add `@push.rocks/smartinteraction` to main plugins.ts
 | |
| - [x] Register services command in `gitzone.cli.ts`
 | |
| 
 | |
| ### Features
 | |
| - [x] Auto-configuration with smart defaults
 | |
| - [x] Random port assignment to avoid conflicts
 | |
| - [x] Project isolation with unique container names
 | |
| - [x] Data persistence in `.nogit/` directories
 | |
| - [x] Status display (running/stopped/not installed)
 | |
| - [x] Interactive confirmations for destructive operations
 | |
| - [x] Colored console output
 | |
| - [x] MinIO bucket auto-creation
 | |
| - [x] MongoDB Compass connection string with network IP
 | |
| 
 | |
| ### Testing
 | |
| - [ ] Test service start/stop operations
 | |
| - [ ] Test configuration creation and updates
 | |
| - [ ] Test port collision handling
 | |
| - [ ] Test data persistence
 | |
| - [ ] Test MongoDB Compass connection string generation
 | |
| - [ ] Test all command variations
 | |
| 
 | |
| ## Configuration Format
 | |
| ```json
 | |
| {
 | |
|   "PROJECT_NAME": "derived-from-package-name",
 | |
|   "MONGODB_HOST": "localhost",
 | |
|   "MONGODB_NAME": "project-name",
 | |
|   "MONGODB_PORT": "random-port",
 | |
|   "MONGODB_USER": "defaultadmin",
 | |
|   "MONGODB_PASS": "defaultpass",
 | |
|   "S3_HOST": "localhost",
 | |
|   "S3_PORT": "random-port",
 | |
|   "S3_CONSOLE_PORT": "s3-port+1",
 | |
|   "S3_USER": "defaultadmin",
 | |
|   "S3_PASS": "defaultpass",
 | |
|   "S3_BUCKET": "project-name-documents"
 | |
| }
 | |
| ```
 | |
| 
 | |
| ## Command Examples
 | |
| ```bash
 | |
| gitzone services start          # Start all services
 | |
| gitzone services start mongo    # Start only MongoDB
 | |
| gitzone services stop           # Stop all services
 | |
| gitzone services status         # Check service status
 | |
| gitzone services config         # Show configuration
 | |
| gitzone services compass        # Show MongoDB Compass connection string
 | |
| gitzone services logs mongo 50  # Show last 50 lines of MongoDB logs
 | |
| gitzone services remove         # Remove containers (preserve data)
 | |
| gitzone services clean          # Remove containers and data
 | |
| ```
 | |
| 
 | |
| ## Progress Notes
 | |
| Implementation started: 2025-08-14
 | |
| Implementation completed: 2025-08-14
 | |
| 
 | |
| ## Summary
 | |
| Successfully implemented the `gitzone services` command in TypeScript, providing a complete replacement for the `services.sh` shell script. The implementation includes:
 | |
| 
 | |
| 1. **Complete Docker service management** for MongoDB and MinIO containers
 | |
| 2. **Smart configuration management** with automatic port assignment and conflict avoidance
 | |
| 3. **MongoDB Compass support** with network IP detection for remote connections
 | |
| 4. **Project isolation** using project-specific container names
 | |
| 5. **Data persistence** in `.nogit/` directories
 | |
| 6. **Interactive confirmations** for destructive operations
 | |
| 7. **Comprehensive command set** including start, stop, restart, status, config, compass, logs, remove, and clean commands
 | |
| 
 | |
| The module is fully integrated into the gitzone CLI and ready for testing. |