{"id":29924955,"url":"https://github.com/2ue/docoman","last_synced_at":"2025-08-02T11:10:53.261Z","repository":{"id":307143599,"uuid":"1028497132","full_name":"2ue/docoman","owner":"2ue","description":null,"archived":false,"fork":false,"pushed_at":"2025-07-29T16:10:24.000Z","size":107,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-29T19:05:30.459Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/2ue.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-29T16:04:35.000Z","updated_at":"2025-07-29T16:10:27.000Z","dependencies_parsed_at":"2025-07-29T19:05:44.413Z","dependency_job_id":null,"html_url":"https://github.com/2ue/docoman","commit_stats":null,"previous_names":["2ue/docoman"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/2ue/docoman","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2ue%2Fdocoman","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2ue%2Fdocoman/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2ue%2Fdocoman/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2ue%2Fdocoman/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/2ue","download_url":"https://codeload.github.com/2ue/docoman/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2ue%2Fdocoman/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268378812,"owners_count":24240896,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-02T02:00:12.353Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-08-02T11:10:48.998Z","updated_at":"2025-08-02T11:10:53.237Z","avatar_url":"https://github.com/2ue.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Docoman - Docker Compose Manager\n\nA modern web-based Docker Compose file management system with React frontend and Node.js backend.\n\n## Features\n\n- 📁 **File Management**: Create, edit, delete, and organize Docker Compose files\n- 🚀 **Service Control**: Start, stop, and monitor Docker Compose services\n- 📊 **Real-time Status**: Live status updates for all services\n- 🔍 **YAML Validation**: Real-time syntax validation and error highlighting\n- 🎨 **Modern UI**: Beautiful interface built with React, Tailwind CSS, and shadcn-ui\n- 🔄 **WebSocket Support**: Real-time updates and live logs\n- 📱 **Responsive Design**: Works on desktop and mobile devices\n\n## Architecture\n\n- **Frontend**: React 18 + TypeScript + Vite + Tailwind CSS + shadcn-ui\n- **Backend**: Node.js + TypeScript + Express + WebSocket\n- **State Management**: Jotai atoms\n- **Data Fetching**: React Query\n- **Package Management**: pnpm workspace\n\n## Prerequisites\n\n- Node.js 18 or higher\n- pnpm 8 or higher\n- Docker and Docker Compose\n- Git\n\n## Quick Start\n\n### 1. Clone and Install\n\n```bash\ngit clone \u003crepository-url\u003e\ncd docoman\npnpm install\n```\n\n### 2. Development\n\nStart both frontend and backend in development mode:\n\n```bash\npnpm dev\n```\n\nThis will start:\n- Frontend on http://localhost:3000\n- Backend on http://localhost:3001\n\n### 3. Production Build\n\n```bash\npnpm build\n```\n\n### 4. Docker Deployment\n\n```bash\npnpm docker:build\npnpm docker:up\n```\n\nThe application will be available at http://localhost:3000\n\n## Configuration\n\n### Backend Configuration\n\nCopy `.env.example` to `.env` in `packages/backend/`:\n\n```bash\n# Environment\nNODE_ENV=development\nPORT=3001\n\n# Docker Compose file directory\nCOMPOSE_DIRECTORY=../../docker-compose-files\n\n# Logging\nLOG_LEVEL=info\n\n# Security\nCORS_ORIGIN=http://localhost:3000\n```\n\n### Directory Structure\n\n```\ndocoman/\n├── packages/\n│   ├── frontend/          # React application\n│   └── backend/           # Node.js API server\n├── docker-compose-files/  # Managed Docker Compose files\n├── docker-compose.yml     # Application deployment\n└── README.md\n```\n\n## API Endpoints\n\n### File Management\n- `GET /api/files` - List all Docker Compose files\n- `GET /api/files/:filename` - Get file content\n- `POST /api/files` - Create new file\n- `PUT /api/files/:filename` - Update file\n- `DELETE /api/files/:filename` - Delete file\n\n### Service Control\n- `POST /api/services/:filename/start` - Start services\n- `POST /api/services/:filename/stop` - Stop services\n- `GET /api/services/:filename/status` - Get service status\n\n### WebSocket Events\n- Service start/stop progress updates\n- Real-time log streaming\n- Status change notifications\n\n## Development\n\n### Frontend Development\n\n```bash\ncd packages/frontend\npnpm dev          # Start development server\npnpm build        # Build for production\npnpm lint         # Run linting\npnmp typecheck    # Type checking\n```\n\n### Backend Development\n\n```bash\ncd packages/backend\npnpm dev          # Start with hot reload\npnpm build        # Build TypeScript\npnpm start        # Run production build\n```\n\n### Code Style\n\nThe project uses:\n- ESLint for code linting\n- Prettier for code formatting\n- TypeScript for type safety\n\nRun linting and type checking:\n\n```bash\npnpm lint\npnpm typecheck\n```\n\n## Docker Deployment\n\n### Using Docker Compose\n\n```bash\n# Build and start\ndocker-compose up -d\n\n# View logs\ndocker-compose logs -f\n\n# Stop services\ndocker-compose down\n```\n\n### Environment Variables\n\nThe Docker deployment uses these environment variables:\n\n- `NODE_ENV=production`\n- `PORT=3001`\n- `COMPOSE_DIRECTORY=/app/compose-files`\n\n### Volume Mounts\n\n- `/var/run/docker.sock` - Docker socket for container management\n- `./docker-compose-files:/app/compose-files` - Compose file storage\n\n## Security Considerations\n\n- The application requires access to the Docker socket\n- No authentication is implemented - designed for trusted environments\n- CORS is configured for the specified origin\n- File operations are restricted to the configured directory\n\n## Troubleshooting\n\n### Common Issues\n\n1. **Docker not available**\n   - Ensure Docker and Docker Compose are installed\n   - Check Docker socket permissions\n\n2. **Permission denied**\n   - Ensure the user has access to Docker socket\n   - Check file system permissions\n\n3. **Port conflicts**\n   - Change ports in configuration files\n   - Check for other services using the same ports\n\n4. **WebSocket connection failed**\n   - Check network configuration\n   - Verify proxy settings\n\n### Logs\n\nView application logs:\n\n```bash\n# Development\npnpm dev\n\n# Docker\ndocker-compose logs -f backend\ndocker-compose logs -f frontend\n```\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes\n4. Run tests and linting\n5. Submit a pull request\n\n## License\n\nMIT License\n\n## Support\n\nFor issues and questions, please create an issue in the repository.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F2ue%2Fdocoman","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F2ue%2Fdocoman","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F2ue%2Fdocoman/lists"}