ndev-stack 0.2.0__tar.gz → 0.3.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. {ndev_stack-0.2.0/ndev_stack.egg-info → ndev_stack-0.3.1}/PKG-INFO +66 -6
  2. ndev_stack-0.2.0/PKG-INFO → ndev_stack-0.3.1/README.md +561 -522
  3. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/__init__.py +1 -1
  4. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/common/constants.py +1 -0
  5. ndev_stack-0.3.1/ndev/common/modules/__init__.py +23 -0
  6. ndev_stack-0.3.1/ndev/common/modules/base.py +251 -0
  7. ndev_stack-0.3.1/ndev/common/modules/builtin/mailpit/manifest.json +16 -0
  8. ndev_stack-0.3.1/ndev/common/modules/builtin/mailpit/module.py +291 -0
  9. ndev_stack-0.3.1/ndev/common/modules/builtin/mongodb/manifest.json +19 -0
  10. ndev_stack-0.3.1/ndev/common/modules/builtin/mongodb/module.py +280 -0
  11. ndev_stack-0.3.1/ndev/common/modules/builtin/postgres/manifest.json +15 -0
  12. ndev_stack-0.3.1/ndev/common/modules/builtin/postgres/module.py +318 -0
  13. ndev_stack-0.3.1/ndev/common/modules/builtin/redis/manifest.json +15 -0
  14. ndev_stack-0.3.1/ndev/common/modules/builtin/redis/module.py +312 -0
  15. ndev_stack-0.3.1/ndev/common/modules/manager.py +214 -0
  16. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/linux/cli.py +9 -0
  17. ndev_stack-0.3.1/ndev/linux/commands/modules.py +194 -0
  18. ndev_stack-0.3.1/ndev/linux/commands/mongodb.py +73 -0
  19. ndev_stack-0.3.1/ndev/linux/commands/postgres.py +72 -0
  20. ndev_stack-0.3.1/ndev/linux/commands/restart.py +52 -0
  21. ndev_stack-0.3.1/ndev/linux/commands/start.py +51 -0
  22. ndev_stack-0.3.1/ndev/linux/commands/status.py +109 -0
  23. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/linux/commands/stop.py +21 -10
  24. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/linux/commands/vhost.py +22 -5
  25. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/linux/runtime/upgrade.py +123 -10
  26. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/linux/tui.py +196 -153
  27. ndev_stack-0.3.1/ndev/win/bin/shim.exe +0 -0
  28. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/win/cli.py +501 -55
  29. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/win/core/paths.py +7 -1
  30. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/win/core/php.py +18 -28
  31. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/win/core/redis_core.py +8 -5
  32. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/win/core/setup.py +27 -27
  33. ndev_stack-0.3.1/ndev/win/core/shim.py +284 -0
  34. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/win/core/upgrade.py +130 -25
  35. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/win/tui.py +191 -164
  36. ndev_stack-0.2.0/README.md → ndev_stack-0.3.1/ndev_stack.egg-info/PKG-INFO +582 -501
  37. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev_stack.egg-info/SOURCES.txt +18 -1
  38. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/pyproject.toml +4 -3
  39. ndev_stack-0.3.1/tests/test_shim.py +86 -0
  40. ndev_stack-0.2.0/ndev/linux/commands/restart.py +0 -33
  41. ndev_stack-0.2.0/ndev/linux/commands/start.py +0 -33
  42. ndev_stack-0.2.0/ndev/linux/commands/status.py +0 -80
  43. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/__main__.py +0 -0
  44. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/cli.py +0 -0
  45. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/common/__init__.py +0 -0
  46. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/common/config.py +0 -0
  47. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/common/github.py +0 -0
  48. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/common/logger.py +0 -0
  49. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/common/manifest.py +0 -0
  50. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/common/utils.py +0 -0
  51. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/linux/__init__.py +0 -0
  52. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/linux/chroot/manager.py +0 -0
  53. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/linux/chroot/packages.py +0 -0
  54. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/linux/chroot/shell.py +0 -0
  55. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/linux/commands/available.py +0 -0
  56. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/linux/commands/clean.py +0 -0
  57. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/linux/commands/ctl.py +0 -0
  58. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/linux/commands/current.py +0 -0
  59. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/linux/commands/db.py +0 -0
  60. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/linux/commands/doctor.py +0 -0
  61. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/linux/commands/grok.py +0 -0
  62. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/linux/commands/install.py +0 -0
  63. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/linux/commands/list.py +0 -0
  64. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/linux/commands/logs.py +0 -0
  65. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/linux/commands/mailpit.py +0 -0
  66. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/linux/commands/reload.py +0 -0
  67. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/linux/commands/setup.py +0 -0
  68. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/linux/commands/uninstall.py +0 -0
  69. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/linux/commands/update.py +0 -0
  70. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/linux/commands/upgrade.py +0 -0
  71. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/linux/commands/use.py +0 -0
  72. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/linux/php/builder.py +0 -0
  73. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/linux/php/downloader.py +0 -0
  74. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/linux/php/extensions.py +0 -0
  75. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/linux/php/installer.py +0 -0
  76. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/linux/php/resolver.py +0 -0
  77. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/linux/php/templates.py +0 -0
  78. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/linux/runtime/fpm.py +0 -0
  79. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/linux/runtime/mailpit.py +0 -0
  80. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/linux/runtime/pma.py +0 -0
  81. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/linux/runtime/process.py +0 -0
  82. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/linux/runtime/sockets.py +0 -0
  83. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/main.py +0 -0
  84. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/tui.py +0 -0
  85. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/win/__init__.py +0 -0
  86. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/win/commands/__init__.py +0 -0
  87. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/win/core/__init__.py +0 -0
  88. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/win/core/db.py +0 -0
  89. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/win/core/elevate.py +0 -0
  90. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/win/core/ext.py +0 -0
  91. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/win/core/fcgi.py +0 -0
  92. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/win/core/grok.py +0 -0
  93. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/win/core/logs.py +0 -0
  94. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/win/core/mailpit.py +0 -0
  95. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/win/core/mkcert.py +0 -0
  96. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/win/core/pma.py +0 -0
  97. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/win/core/services.py +0 -0
  98. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/win/core/vhost.py +0 -0
  99. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/win/templates/vhost.conf.tmpl +0 -0
  100. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev/win/templates/vhost_ssl.conf.tmpl +0 -0
  101. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev_stack.egg-info/dependency_links.txt +0 -0
  102. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev_stack.egg-info/entry_points.txt +0 -0
  103. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev_stack.egg-info/requires.txt +0 -0
  104. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/ndev_stack.egg-info/top_level.txt +0 -0
  105. {ndev_stack-0.2.0 → ndev_stack-0.3.1}/setup.cfg +0 -0
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ndev-stack
3
- Version: 0.2.0
4
- Summary: Cross-platform developer stack manager for PHP, FastCGI/PHP-FPM, MariaDB, Redis, Nginx, SSL, and Mailpit on Linux and Windows
3
+ Version: 0.3.1
4
+ Summary: Cross-platform developer stack manager for PHP, FastCGI/PHP-FPM, MariaDB, Redis, PostgreSQL, MongoDB, Nginx, SSL, and Mailpit on Linux and Windows
5
5
  Author-email: Ankit Karan <ankit.karan99@gmail.com>
6
6
  Project-URL: Homepage, https://github.com/ankitkaran99/ndev
7
7
  Project-URL: Repository, https://github.com/ankitkaran99/ndev
@@ -236,9 +236,15 @@ ndev ui
236
236
  | `ndev pma` | Manage phpMyAdmin background service (`http://127.0.0.1:8080`) |
237
237
  | `ndev ext` | Manage PECL extensions (`list`, `install`, `enable`, `disable`) |
238
238
  | `ndev grok` | Public HTTP tunneling for local virtual hosts via ngrok |
239
+ | `ndev postgres` | Manage PostgreSQL server (`install`, `start`, `stop`, `restart`, `status`) |
240
+ | `ndev mongodb` | Manage MongoDB server (`install`, `start`, `stop`, `restart`, `status`) |
241
+ | `ndev module list` | List all dynamic modules and status in `<userdir>/.ndev/modules/` |
242
+ | `ndev module <action>`| Manage dynamic module lifecycle (`install`, `start`, `stop`, `restart`, `status`, `open`) |
243
+ | `ndev module create` | Scaffold a new dynamic module with manifest and template code |
239
244
  | `ndev upgrade` | Check for and upgrade stack components (Nginx, MariaDB, Redis, PMA, Mailpit, mkcert, Composer) |
240
245
  | `ndev upgrade --check` | Check component versions against upstream releases without upgrading |
241
246
  | `ndev shell` | Interactive developer subshell pre-loaded with PHP/Composer/MySQL/Redis on PATH |
247
+ | `ndev shim` | Manage Windows binary shims and PATH registration (`list`, `init`, `add`, `rm`) |
242
248
  | `ndev doctor` | Run environment diagnostics and health checks |
243
249
  | `ndev logs` | View and tail service and virtual host logs |
244
250
  | `ndev clean` | Clean up downloads cache and stale runtime state |
@@ -256,10 +262,6 @@ ndev ui
256
262
  # Aliases: ndev tui, ndev dashboard
257
263
  ```
258
264
 
259
- <p align="center">
260
- <img src="ui.png" alt="ndev TUI Dashboard" width="90%">
261
- </p>
262
-
263
265
  - **Live Status Grid**: Monitor real-time status, PIDs, and active ports for Nginx, MariaDB, Redis, PMA, Mailpit, and PHP worker pools.
264
266
  - **One-Click Component Setup & Upgrades**: Install uninstalled services (**Redis**, **PMA**, **Mailpit**, **Nginx**, **MariaDB**, **mkcert**, **Composer**) or upgrade existing components with single-click UI actions.
265
267
  - **Interactive Virtual Host Manager**: Create new virtual hosts (`+ Create VHost`) with automatic local SSL (`mkcert`) and an integrated folder-picker dialog.
@@ -500,6 +502,64 @@ ndev clean
500
502
 
501
503
  ---
502
504
 
505
+ ### 10. Extensible Dynamic Modules (`ndev module`)
506
+
507
+ `ndev` features a modular architecture where core services (`nginx`, `mariadb`, `php`, `phpmyadmin`, `ngrok`) are augmented with dynamic modules (`mailpit`, `redis`, `postgres`, `mongodb`, and custom community modules) located in `<userdir>/.ndev/modules/<module_name>/`.
508
+
509
+ #### Module Commands:
510
+ ```bash
511
+ # List all discovered modules and running status
512
+ ndev module list
513
+
514
+ # Manage module lifecycle
515
+ ndev module install mailpit
516
+ ndev module start redis
517
+ ndev module status postgres
518
+ ndev module status mongodb
519
+ ndev module open mailpit # Opens web UI if available
520
+ ndev module restart redis
521
+ ndev module stop redis
522
+
523
+ # Direct convenience commands also work seamlessly:
524
+ ndev start mailpit
525
+ ndev stop redis
526
+ ndev postgres start
527
+ ndev postgres status
528
+ ndev mongodb start
529
+ ndev mongodb status
530
+
531
+ # Scaffold a new custom module
532
+ ndev module create my-service --display-name "My Custom Service" --category queue --port 9000
533
+ ```
534
+
535
+ #### Module Structure (`~/.ndev/modules/<name>/`):
536
+ ```text
537
+ ~/.ndev/modules/my-service/
538
+ ├── manifest.json # Module metadata, ports, categories, and web UI definitions
539
+ └── module.py # Python lifecycle handler (is_installed, install, start, stop, restart, status, open_ui)
540
+ ```
541
+
542
+ **Sample `manifest.json`:**
543
+ ```json
544
+ {
545
+ "name": "my-service",
546
+ "display_name": "My Custom Service",
547
+ "version": "1.0.0",
548
+ "description": "Custom queue worker service",
549
+ "category": "queue",
550
+ "ports": [9000],
551
+ "web_ui": "http://127.0.0.1:9000",
552
+ "platforms": ["windows", "linux"],
553
+ "entrypoint": "module.py"
554
+ }
555
+ ```
556
+
557
+ Dynamic modules appear automatically inside the **TUI Dashboard (`ndev ui`)**, where you can start, stop, restart, and open web interfaces with a single click.
558
+
559
+ > 📖 **Looking to build your own module?** See the full [**ndev Module Developer Guide (MODULE_DEV_GUIDE.md)**](MODULE_DEV_GUIDE.md) for step-by-step instructions, manifest schema, and boilerplate templates.
560
+
561
+ ---
562
+
503
563
  ## Configuration Files
504
564
 
505
565
  ### Windows