{"id":31943096,"url":"https://github.com/pyfunc/xedit","last_synced_at":"2026-07-16T23:03:18.933Z","repository":{"id":315062517,"uuid":"1057937479","full_name":"pyfunc/xedit","owner":"pyfunc","description":null,"archived":false,"fork":false,"pushed_at":"2025-09-16T12:08:06.000Z","size":35,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-16T14:33:56.034Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pyfunc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-16T12:06:26.000Z","updated_at":"2025-09-16T12:08:10.000Z","dependencies_parsed_at":"2025-09-16T14:34:36.438Z","dependency_job_id":"1bbc0315-c564-4462-bea9-c09310456cfe","html_url":"https://github.com/pyfunc/xedit","commit_stats":null,"previous_names":["pyfunc/xedit"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/pyfunc/xedit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyfunc%2Fxedit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyfunc%2Fxedit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyfunc%2Fxedit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyfunc%2Fxedit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyfunc","download_url":"https://codeload.github.com/pyfunc/xedit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyfunc%2Fxedit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279018579,"owners_count":26086404,"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-10-14T02:00:06.444Z","response_time":60,"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-10-14T09:48:39.255Z","updated_at":"2025-10-14T09:48:41.105Z","avatar_url":"https://github.com/pyfunc.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# xedit\n\n\n### Porównanie rozwiązań:\n\n| Cecha | Edit1 (Node.js) | Edit2 (Python) | Edit3 (Go) |\n|-------|-----------------|----------------|------------|\n| **Rozmiar obrazu Docker** | ~150MB | ~180MB | ~25MB |\n| **Czas startu** | ~2s | ~3s | \u003c1s |\n| **Zużycie RAM** | ~50MB | ~80MB | ~15MB |\n| **Edytor kodu** | CodeMirror | Monaco | Ace |\n| **Wizualizacja JSON** | JSONEditor (pełna) | Podstawowa | Zaawansowana |\n| **Wizualizacja YAML** | Drzewo | Preview | Preview |\n| **Wizualizacja XML** | Drzewo | Preview | Kolorowanie |\n| **Łatwość instalacji** | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |\n\n### 🏆 **REKOMENDACJA: Edit1 (Node.js)**\n\n**Dlaczego Edit1 jest najlepszy:**\n\n1. **Najprostsza instalacja** - tylko `npm install` i `npm start`\n2. **Najlepszy edytor wizualny** - JSONEditor oferuje pełną edycję wizualną z tree/form/code view\n3. **Najszybszy development** - hot reload, bogaty ekosystem npm\n4. **Najprostsza konfiguracja** - Docker Compose gotowy do użycia\n\n### Szybki start dla każdego rozwiązania:\n\n#### **Edit1 (Node.js) - REKOMENDOWANE** 🟢\n\n```bash\n# Utwórz folder projektu\nmkdir edit1 \u0026\u0026 cd edit1\n\n# Utwórz package.json\ncat \u003e package.json \u003c\u003c 'EOF'\n{\n  \"name\": \"edit1-visual-editor\",\n  \"version\": \"1.0.0\",\n  \"scripts\": {\n    \"start\": \"node server.js\"\n  },\n  \"dependencies\": {\n    \"express\": \"^4.18.2\",\n    \"body-parser\": \"^1.20.2\",\n    \"cors\": \"^2.8.5\"\n  }\n}\nEOF\n\n# Utwórz Dockerfile\ncat \u003e Dockerfile \u003c\u003c 'EOF'\nFROM node:18-alpine\nRUN apk add --no-cache git\nWORKDIR /app\nCOPY package*.json ./\nRUN npm install\nCOPY . .\nRUN mkdir -p /app/data\nEXPOSE 3001\nCMD [\"npm\", \"start\"]\nEOF\n\n# Utwórz docker-compose.yml\ncat \u003e docker-compose.yml \u003c\u003c 'EOF'\nversion: '3.8'\nservices:\n  edit1:\n    build: .\n    container_name: edit1-editor\n    ports:\n      - \"3001:3001\"\n    volumes:\n      - ./data:/app/data\n      - ./public:/app/public\n    restart: unless-stopped\nEOF\n\n# Utwórz skrypt uruchamiający\ncat \u003e edit1 \u003c\u003c 'EOF'\n#!/bin/bash\nFILE=$1\nif [ -z \"$FILE\" ]; then\n    echo \"Usage: edit1 \u003cfilename.json|yaml|xml\u003e\"\n    exit 1\nfi\ndocker-compose up -d --build\nsleep 2\necho \"Opening http://localhost:3001?file=$FILE\"\nopen \"http://localhost:3001?file=$FILE\" 2\u003e/dev/null || xdg-open \"http://localhost:3001?file=$FILE\" 2\u003e/dev/null || echo \"Open manually: http://localhost:3001?file=$FILE\"\nEOF\n\nchmod +x edit1\n\n# Skopiuj pliki server.js i public/index.html z artifactów powyżej\n\n# Uruchom\n./edit1 config.json\n```\n\n#### **Edit2 (Python)**\n\n```bash\n# Utwórz folder projektu  \nmkdir edit2 \u0026\u0026 cd edit2\n\n# Utwórz requirements.txt\ncat \u003e requirements.txt \u003c\u003c 'EOF'\nFlask==2.3.3\nFlask-CORS==4.0.0\nPyYAML==6.0.1\nEOF\n\n# Utwórz Dockerfile\ncat \u003e Dockerfile \u003c\u003c 'EOF'\nFROM python:3.11-slim\nRUN apt-get update \u0026\u0026 apt-get install -y git \u0026\u0026 rm -rf /var/lib/apt/lists/*\nWORKDIR /app\nCOPY requirements.txt .\nRUN pip install --no-cache-dir -r requirements.txt\nCOPY . .\nRUN mkdir -p /app/data\nEXPOSE 3002\nCMD [\"python\", \"app.py\"]\nEOF\n\n# Skopiuj app.py i templates/index.html z artifactów\n\n# Uruchom\ndocker build -t edit2 .\ndocker run -d -p 3002:3002 -v $(pwd)/data:/app/data edit2\n```\n\n#### **Edit3 (Go)**\n\n```bash\n# Utwórz folder projektu\nmkdir edit3 \u0026\u0026 cd edit3\n\n# Utwórz go.mod\ncat \u003e go.mod \u003c\u003c 'EOF'\nmodule edit3\ngo 1.21\nrequire (\n    github.com/gin-gonic/gin v1.9.1\n    github.com/gin-contrib/cors v1.4.0\n    gopkg.in/yaml.v3 v3.0.1\n)\nEOF\n\n# Utwórz Dockerfile\ncat \u003e Dockerfile \u003c\u003c 'EOF'\nFROM golang:1.21-alpine AS builder\nRUN apk add --no-cache git\nWORKDIR /app\nCOPY go.mod go.sum ./\nRUN go mod download\nCOPY . .\nRUN CGO_ENABLED=0 GOOS=linux go build -o edit3 .\n\nFROM alpine:latest\nRUN apk --no-cache add ca-certificates git\nWORKDIR /app\nCOPY --from=builder /app/edit3 .\nCOPY --from=builder /app/static ./static\nRUN mkdir -p /app/data\nEXPOSE 3003\nCMD [\"./edit3\"]\nEOF\n\n# Skopiuj main.go i static/index.html z artifactów\n\n# Uruchom\ndocker build -t edit3 .\ndocker run -d -p 3003:3003 -v $(pwd)/data:/app/data edit3\n```\n\n### Funkcjonalności wspólne dla wszystkich rozwiązań:\n\n✅ **Edycja wizualna i tekstowa jednocześnie**\n✅ **Kolorowanie składni**\n✅ **Automatyczne zapisywanie do Git**\n✅ **Historia wersji z możliwością przywracania**\n✅ **Walidacja formatów przed zapisem**\n✅ **Docker dla łatwego deploymentu**\n✅ **Brak konieczności konfiguracji**\n\n### Użycie:\n\n```bash\n# Dla każdego edytora:\nedit1 config.yaml    # Node.js (port 3001)\nedit2 data.json      # Python (port 3002)  \nedit3 settings.xml   # Go (port 3003)\n\n# Pliki są automatycznie:\n# - Tworzone jeśli nie istnieją\n# - Wersjonowane w Git\n# - Zapisywane w folderze ./data\n```\n\n### Dodatkowe ulepszenia (opcjonalne):\n\n1. **Instalacja globalna (dla Edit1)**:\n```bash\nnpm install -g edit1-visual-editor\nedit1 myfile.json\n```\n\n2. **Aliasy w ~/.bashrc**:\n```bash\nalias edit-json='edit1'\nalias edit-yaml='edit1'\nalias edit-xml='edit1'\n```\n\n3. **Integracja z VS Code**:\n```json\n{\n  \"terminal.integrated.commandsToSkipShell\": [\"edit1\", \"edit2\", \"edit3\"]\n}\n```\n\n**Wybierz Edit1 (Node.js)** jeśli chcesz najłatwiejsze rozwiązanie z najlepszym edytorem wizualnym! 🚀\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpyfunc%2Fxedit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpyfunc%2Fxedit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpyfunc%2Fxedit/lists"}