{"id":49212151,"url":"https://github.com/nks-hub/webdev-console","last_synced_at":"2026-04-23T22:00:58.306Z","repository":{"id":351991224,"uuid":"1212663917","full_name":"nks-hub/webdev-console","owner":"nks-hub","description":"NKS WebDev Console — cross-platform local dev environment (Apache, MySQL, PHP, Node.js, Redis, Cloudflare Tunnel). Electron + Vue 3 + .NET 9 daemon.","archived":false,"fork":false,"pushed_at":"2026-04-17T11:08:12.000Z","size":4244,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-17T12:21:19.801Z","etag":null,"topics":["apache","cloudflare-tunnel","dotnet","electron","local-development","mamp-alternative","mariadb","mkcert","mysql","nks-hub","php","redis","vue","webdev","xampp-alternative"],"latest_commit_sha":null,"homepage":null,"language":"C#","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/nks-hub.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-16T15:51:46.000Z","updated_at":"2026-04-17T11:08:15.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/nks-hub/webdev-console","commit_stats":null,"previous_names":["nks-hub/webdev-console"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/nks-hub/webdev-console","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nks-hub%2Fwebdev-console","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nks-hub%2Fwebdev-console/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nks-hub%2Fwebdev-console/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nks-hub%2Fwebdev-console/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nks-hub","download_url":"https://codeload.github.com/nks-hub/webdev-console/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nks-hub%2Fwebdev-console/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32200159,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-23T20:19:26.138Z","status":"ssl_error","status_checked_at":"2026-04-23T20:19:23.520Z","response_time":53,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["apache","cloudflare-tunnel","dotnet","electron","local-development","mamp-alternative","mariadb","mkcert","mysql","nks-hub","php","redis","vue","webdev","xampp-alternative"],"created_at":"2026-04-23T22:00:57.334Z","updated_at":"2026-04-23T22:00:58.299Z","avatar_url":"https://github.com/nks-hub.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build \u0026 Release](https://github.com/nks-hub/webdev-console/actions/workflows/build.yml/badge.svg)](https://github.com/nks-hub/webdev-console/actions/workflows/build.yml)\n[![CI](https://github.com/nks-hub/webdev-console/actions/workflows/ci.yml/badge.svg)](https://github.com/nks-hub/webdev-console/actions/workflows/ci.yml)\n[![Latest Release](https://img.shields.io/github/v/release/nks-hub/webdev-console?label=release)](https://github.com/nks-hub/webdev-console/releases)\n[![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)\n[![.NET](https://img.shields.io/badge/.NET-9.0-512BD4)](https://dotnet.microsoft.com/)\n[![Electron](https://img.shields.io/badge/Electron-34-47848F)](https://www.electronjs.org/)\n[![Vue 3](https://img.shields.io/badge/Vue-3-42b883)](https://vuejs.org/)\n[![Cross-platform](https://img.shields.io/badge/platform-Windows%20%7C%20macOS%20%7C%20Linux-blue)](https://github.com/nks-hub/webdev-console/releases)\n\n# NKS WebDev Console\n\nLocal development environment for **Windows, macOS, and Linux** — manages Apache, PHP, MySQL/MariaDB, SSL, mail catching, Redis, Node, Cloudflare tunnels and DNS for `.local` / `.test` domains. A modern replacement for MAMP PRO, XAMPP, WampServer, Laragon and similar tools.\n\n## Features\n\n- ✅ **Cross-platform** — Windows (NSIS + portable), macOS (DMG + ZIP, Apple Silicon), Linux (AppImage)\n- ✅ **One daemon, many plugins** — Apache, PHP, MySQL, MariaDB, SSL (mkcert), Mailpit, Redis, Node, Caddy, Cloudflare and Hosts editor loaded as isolated `.NET 9` plugin DLLs\n- ✅ **Per-site PHP** — each site can pin its own PHP version, INI overrides (memory, timeouts, upload limits, Xdebug, OPcache, extensions) and Apache Fcgid timeouts\n- ✅ **MAMP PRO migration** — built-in importer reads MAMP PRO's SQLite database, recreates vhosts, copies SSL certs and migrates databases (verified on 17 sites + 66 databases)\n- ✅ **Three interfaces** — Electron GUI, `wdc` CLI, or REST API with Bearer-token auth\n- ✅ **MCP server** — 47 tools that let Claude Code (or any MCP client) manage your local stack: sites, databases, services, SSL, plugins, backups, Cloudflare tunnels\n- ✅ **Cloudflare integration** — built-in tunnel management, DNS records, route configuration via `cloudflared`\n- ✅ **Elevated by default on Windows** — single UAC prompt at launch, no per-operation prompts for hosts-file edits\n- ✅ **Self-contained daemon** — .NET 9 published with `--self-contained`, no separate runtime install needed\n- ✅ **Type-safe** — strict TypeScript on the frontend, `nullable enable` on the backend, 595+ xUnit tests\n\n## Requirements\n\n### Running the pre-built app\n\n- **Windows** 10 / 11 (x64) — administrator rights for hosts-file editing\n- **macOS** 14+ (Apple Silicon, arm64)\n- **Linux** — any glibc 2.28+ distribution (Ubuntu 22.04+, Debian 12+, Fedora 38+)\n\n### Building from source\n\n| Tool     | Version | Notes                                                |\n| -------- | ------- | ---------------------------------------------------- |\n| .NET SDK | 9.0+    | macOS: `brew install dotnet@9`                       |\n| Node.js  | 20 LTS+ | Tested with 22 (CI) and 23.x                         |\n| Python   | 3.11+   | Optional — only for running the catalog-api locally  |\n| Git      | any     |                                                      |\n\n## Installation\n\n### Pre-built releases\n\nDownload the latest installer from [GitHub Releases](https://github.com/nks-hub/webdev-console/releases):\n\n- Windows: `NKS.WebDev.Console-\u003cversion\u003e-setup-x64.exe` (NSIS) or `*-portable-x64.exe`\n- macOS: `NKS.WebDev.Console-\u003cversion\u003e-mac-arm64.dmg` or `*.zip`\n- Linux: `NKS.WebDev.Console-\u003cversion\u003e-linux-x86_64.AppImage`\n\n### From source\n\n```bash\ngit clone https://github.com/nks-hub/webdev-console.git\ncd webdev-console\n\n# 1. Build the .NET solution (daemon + plugin SDK + tests)\ndotnet build WebDevConsole.sln -c Release\n\n# 2. Install frontend dependencies (~150 MB Electron binary on first run)\ncd src/frontend\nnpm install\n\n# 3. Build the platform installer\nnpm run dist          # Windows (NSIS + portable)\nnpm run dist:mac      # macOS (DMG + ZIP)\nnpm run dist:linux    # Linux (AppImage)\n```\n\nOutput lands in `src/frontend/release/`.\n\n## Quick Start\n\nStart the daemon + Electron in development:\n\n```bash\n# Terminal 1 — daemon\ndotnet run --project src/daemon/NKS.WebDevConsole.Daemon\n\n# Terminal 2 — Electron with hot-reload\ncd src/frontend \u0026\u0026 npm run dev\n```\n\nOn Windows, `run.cmd` from the repo root does both (supports `--no-build`, `--daemon-only`, `--frontend-only`).\n\nCreate your first site:\n\n```bash\nwdc site create --name my-app --php 8.3 --domain my-app.local --ssl\nwdc service start apache\n```\n\nOpen `https://my-app.local/` — the site is served from `~/wdc/sites/my-app/` with PHP 8.3 through Apache + mod_fcgid and a mkcert-signed SSL certificate.\n\n## Usage\n\n### CLI\n\nThe `wdc` binary (System.CommandLine) is published alongside the daemon:\n\n```bash\nwdc site list                                 # list all sites\nwdc site create --name my-app --php 8.3 \\\n                --domain my-app.local --ssl   # create + provision SSL\nwdc service start apache\nwdc database list\nwdc binaries catalog                          # available PHP / Apache / MySQL versions\nwdc doctor                                    # 13 health checks\nwdc --json site list                          # machine-readable output for scripts\n```\n\nAll write commands have `HttpRequestException` handling; list commands emit TSV when piped.\n\n### REST API + auth\n\nThe daemon writes its listening port + fresh Bearer token at startup:\n\n| OS      | Port file                          |\n| ------- | ---------------------------------- |\n| Windows | `%TEMP%\\nks-wdc-daemon.port`       |\n| macOS   | `$TMPDIR/nks-wdc-daemon.port`      |\n| Linux   | `/tmp/nks-wdc-daemon.port`         |\n\nFormat: line 1 = port (e.g. `5000`), line 2 = base64 token. The token rotates on every restart.\n\n```bash\nPORT=$(sed -n 1p $TMPDIR/nks-wdc-daemon.port)\nTOKEN=$(sed -n 2p $TMPDIR/nks-wdc-daemon.port)\ncurl -H \"Authorization: Bearer $TOKEN\" http://localhost:$PORT/api/status\n# → {\"status\":\"running\",\"version\":\"0.2.3\",\"plugins\":13,\"uptime\":215437}\n```\n\nOpenAPI spec is exposed at `/openapi/v1.json`.\n\n### MCP server (Claude Code)\n\n```bash\ncd services/mcp-server\nnpm install \u0026\u0026 npm run build\nclaude mcp add --scope user nks-wdc node \"$(pwd)/dist/index.js\"\n```\n\n| Module      | Tools | Examples                                                   |\n| ----------- | ----- | ---------------------------------------------------------- |\n| sites       | 6     | list, get, create, delete, get_metrics, get_access_log     |\n| services    | 3     | list, start, stop                                          |\n| system      | 3     | status, system_info, recent_activity                       |\n| databases   | 6     | list, create, drop, tables, query, execute                 |\n| ssl         | 4     | list_certs, install_ca, generate_cert, revoke_cert         |\n| php         | 2     | set_default, toggle_extension                              |\n| binaries    | 5     | list_catalog, list_installed, install, uninstall, refresh  |\n| plugins     | 5     | list, get, enable, disable, info                           |\n| backup      | 3     | create, list, restore                                      |\n| settings    | 2     | get, update                                                |\n| cloudflare  | 9     | tunnels, dns, routes, …                                    |\n\nDestructive tools (`drop_database`, `delete_site`, `revoke_cert`, `restore_backup`, `execute`) require `confirm: \"YES\"`.\n\n### MAMP PRO migration\n\n```bash\nwdc migrate mamp --port 3308              # dry-run\nwdc migrate mamp --port 3308 --apply      # actually migrate\n```\n\nReads `%APPDATA%\\Appsolute\\MAMPPRO\\userdb\\mamp.db` and rebuilds sites + databases in WDC.\n\n## Architecture\n\n```\nwebdev-console/\n├── src/\n│   ├── daemon/                              # C# .NET 9\n│   │   ├── NKS.WebDevConsole.Daemon         # ASP.NET Core REST service\n│   │   ├── NKS.WebDevConsole.Core           # shared services + models\n│   │   ├── NKS.WebDevConsole.Cli            # `wdc` CLI (System.CommandLine)\n│   │   └── NKS.WebDevConsole.Plugin.SDK     # plugin contract\n│   └── frontend/                            # Electron 34 + Vue 3 + Element Plus + Tailwind v4\n├── services/\n│   ├── catalog-api/                         # FastAPI sidecar (binary + version catalog)\n│   └── mcp-server/                          # TypeScript stdio MCP server (47 tools)\n├── tests/                                   # xUnit tests (Daemon + Core)\n├── scripts/                                 # build helpers\n└── .github/workflows/                       # CI matrix — Windows, macOS, Linux\n```\n\n### Related repositories\n\nNKS WebDev Console ships as four co-operating public repositories:\n\n| Repo | Purpose |\n|------|---------|\n| [`nks-hub/webdev-console`](https://github.com/nks-hub/webdev-console) | This repo — daemon, CLI, Electron frontend, Plugin SDK |\n| [`nks-hub/webdev-console-plugins`](https://github.com/nks-hub/webdev-console-plugins) | 13 official plugins (Apache, PHP, MySQL, …) |\n| [`nks-hub/webdev-console-binaries`](https://github.com/nks-hub/webdev-console-binaries) | Versioned runtime binaries (PHP, Apache, Nginx, Caddy, …) |\n| [`nks-hub/wdc-catalog-api`](https://github.com/nks-hub/wdc-catalog-api) | FastAPI catalog + config-sync service |\n\nA single `v*` tag push to this repo triggers **Build \u0026 Release** (Win/macOS/Linux installers), **Publish Plugin SDK** (GitHub Packages NuGet), **Defender Submission** and **Release Security Scan** in parallel.\n\n## Development\n\n### Tests\n\n```bash\ndotnet test WebDevConsole.sln                  # 595+ tests (daemon + core)\ncd services/catalog-api \u0026\u0026 pytest              # FastAPI sidecar tests\ncd services/mcp-server \u0026\u0026 node e2e-test.mjs    # MCP smoke tests (27 assertions)\n```\n\n### Cutting a release\n\n```bash\ngit tag v0.2.3\ngit push --tags\n```\n\nGitHub Actions builds all three platforms and uploads to Releases. macOS code-signing uses `CSC_LINK` + `CSC_KEY_PASSWORD` secrets when present; notarization requires `APPLE_ID`, `APPLE_APP_SPECIFIC_PASSWORD`, `APPLE_TEAM_ID`.\n\n### CI matrix\n\n| OS             | Daemon RID  | Output                                            |\n| -------------- | ----------- | ------------------------------------------------- |\n| `windows-2022` | `win-x64`   | `*-setup-x64.exe` (NSIS) + `*-portable-x64.exe`   |\n| `macos-14`     | `osx-arm64` | `*-mac-arm64.dmg` + `*-mac-arm64.zip`             |\n| `ubuntu-24.04` | `linux-x64` | `*.AppImage`                                      |\n\n## Contributing\n\nContributions are welcome! For major changes please open an issue first.\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feat/amazing-feature`)\n3. Keep `dotnet test` + frontend build green\n4. Commit your changes — one-line conventional commit messages, no AI attribution\n5. Open a Pull Request — CI runs the matrix build for all three platforms\n\n## Support\n\n- 📧 **Email:** dev@nks-hub.cz\n- 🐛 **Bug reports:** [GitHub Issues](https://github.com/nks-hub/webdev-console/issues)\n- 💬 **Discussions:** [GitHub Discussions](https://github.com/nks-hub/webdev-console/discussions)\n\n## License\n\nMIT License — see [LICENSE](LICENSE) for details.\n\n---\n\n\u003cp align=\"center\"\u003e\n  Made with ❤️ by \u003ca href=\"https://github.com/nks-hub\"\u003eNKS Hub\u003c/a\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnks-hub%2Fwebdev-console","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnks-hub%2Fwebdev-console","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnks-hub%2Fwebdev-console/lists"}