fastapi-spawn 0.4.11__tar.gz → 0.4.13__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 (70) hide show
  1. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/PKG-INFO +54 -1
  2. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/README.md +53 -0
  3. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/__init__.py +1 -1
  4. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/cli.py +8 -0
  5. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/pyproject.toml +1 -1
  6. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/.gitignore +0 -0
  7. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/LICENSE +0 -0
  8. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/config.py +0 -0
  9. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/constants.py +0 -0
  10. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/generator.py +0 -0
  11. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/interactive.py +0 -0
  12. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/alembic/alembic.ini.j2 +0 -0
  13. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/alembic/env.py.j2 +0 -0
  14. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/app/__init__.py.j2 +0 -0
  15. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/app/api/deps.py.j2 +0 -0
  16. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/app/api/graphql.py.j2 +0 -0
  17. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/app/api/v1/auth/router.py.j2 +0 -0
  18. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/app/api/v1/auth/sso.py.j2 +0 -0
  19. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/app/api/v1/health/router.py.j2 +0 -0
  20. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/app/api/v1/payments/router.py.j2 +0 -0
  21. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/app/api/v1/router.py.j2 +0 -0
  22. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/app/api/v1/streaming/router.py.j2 +0 -0
  23. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/app/api/v1/ws/router.py.j2 +0 -0
  24. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/app/core/ai.py.j2 +0 -0
  25. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/app/core/config.py.j2 +0 -0
  26. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/app/core/email.py.j2 +0 -0
  27. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/app/core/exceptions.py.j2 +0 -0
  28. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/app/core/logger.py.j2 +0 -0
  29. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/app/core/logging.py.j2 +0 -0
  30. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/app/core/monitoring.py.j2 +0 -0
  31. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/app/core/notifications.py.j2 +0 -0
  32. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/app/core/ocr.py.j2 +0 -0
  33. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/app/core/search.py.j2 +0 -0
  34. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/app/core/security.py.j2 +0 -0
  35. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/app/core/storage.py.j2 +0 -0
  36. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/app/core/vector_db.py.j2 +0 -0
  37. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/app/core/ws_manager.py.j2 +0 -0
  38. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/app/db/session.py.j2 +0 -0
  39. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/app/frontend/index.html.j2 +0 -0
  40. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/app/main.py.j2 +0 -0
  41. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/app/middleware/__init__.py.j2 +0 -0
  42. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/app/middleware/rate_limit.py.j2 +0 -0
  43. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/app/middleware/request_logger.py.j2 +0 -0
  44. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/base/Makefile.j2 +0 -0
  45. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/base/README.md.j2 +0 -0
  46. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/base/env.j2 +0 -0
  47. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/base/env_example.j2 +0 -0
  48. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/base/gitignore.j2 +0 -0
  49. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/base/pre_commit.j2 +0 -0
  50. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/base/pyproject.toml.j2 +0 -0
  51. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/ci/github/publish.yml.j2 +0 -0
  52. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/ci/github/tests.yml.j2 +0 -0
  53. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/ci/gitlab/gitlab-ci.yml.j2 +0 -0
  54. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/db/seed.py.j2 +0 -0
  55. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/docker/Dockerfile.j2 +0 -0
  56. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/docker/docker-compose.yml.j2 +0 -0
  57. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/docker/dockerignore.j2 +0 -0
  58. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/infra/docker/docker-compose.prod.yml.j2 +0 -0
  59. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/infra/helm/Chart.yaml.j2 +0 -0
  60. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/infra/helm/values.yaml.j2 +0 -0
  61. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/infra/terraform/main.tf.j2 +0 -0
  62. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/infra/terraform/variables.tf.j2 +0 -0
  63. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/root/main.py.j2 +0 -0
  64. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/tasks/arq_worker.py.j2 +0 -0
  65. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/tasks/celery_app.py.j2 +0 -0
  66. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/tasks/sample_tasks.py.j2 +0 -0
  67. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/tests/conftest.py.j2 +0 -0
  68. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/templates/tests/test_health.py.j2 +0 -0
  69. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/utils.py +0 -0
  70. {fastapi_spawn-0.4.11 → fastapi_spawn-0.4.13}/fastapi_spawn/validators.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastapi-spawn
3
- Version: 0.4.11
3
+ Version: 0.4.13
4
4
  Summary: A powerful CLI tool to scaffold production-ready FastAPI projects with flexible database, auth, broker, and deployment options.
5
5
  Project-URL: Homepage, https://github.com/Bishwajitgarai/fastapi-spawn
6
6
  Project-URL: Documentation, https://github.com/Bishwajitgarai/fastapi-spawn#readme
@@ -100,6 +100,30 @@ fastapi-spawn add alembic
100
100
  fastapi-spawn add sentry
101
101
  ```
102
102
 
103
+ ```
104
+
105
+ ---
106
+
107
+ ## 🆘 Built-in Help & Auto-Suggestions
108
+
109
+ `fastapi-spawn` comes with an integrated global help menu and intelligent typo correction:
110
+
111
+ ```bash
112
+ # Display the interactive global help menu
113
+ fastapi-spawn help
114
+
115
+ # Or use the standard flag
116
+ fastapi-spawn --help
117
+ ```
118
+
119
+ ### Auto-Typo Correction (Did you mean?)
120
+ If you accidentally misspell a command, the CLI will catch it and suggest the right one automatically to save you time.
121
+ ```bash
122
+ $ fastapi-spawn nw my_app
123
+
124
+ Error: No such command 'nw'. Did you mean 'new'?
125
+ ```
126
+
103
127
  ---
104
128
 
105
129
  ## Generated Project Structure
@@ -381,6 +405,10 @@ SMTP_SSL=false
381
405
  # ── AWS SES ──────────────────────────────────────────────────────────────
382
406
  SES_FROM_EMAIL=noreply@example.com # uses AWS_* credentials above
383
407
 
408
+ # ── Resend ───────────────────────────────────────────────────────────────
409
+ RESEND_API_KEY=re_placeholder
410
+ RESEND_FROM_EMAIL=noreply@example.com
411
+
384
412
  # ── Slack ────────────────────────────────────────────────────────────────
385
413
  SLACK_WEBHOOK_URL=https://hooks.slack.com/services/CHANGE_ME
386
414
 
@@ -402,6 +430,31 @@ ELASTICSEARCH_HOST=localhost
402
430
  ELASTICSEARCH_PORT=9200
403
431
  ELASTICSEARCH_API_KEY=
404
432
  # → assembled as: http://HOST:PORT
433
+
434
+ # ── OpenSearch ───────────────────────────────────────────────────────────
435
+ OPENSEARCH_HOST=localhost
436
+ OPENSEARCH_PORT=9200
437
+ OPENSEARCH_USER=admin
438
+ OPENSEARCH_PASSWORD=admin
439
+
440
+ # ── Vespa ────────────────────────────────────────────────────────────────
441
+ VESPA_ENDPOINT=http://localhost:8080
442
+
443
+ # ── Extras (Stripe, SSO, Meilisearch) ────────────────────────────────────
444
+ STRIPE_API_KEY=sk_test_placeholder
445
+ STRIPE_WEBHOOK_SECRET=whsec_placeholder
446
+
447
+ GOOGLE_CLIENT_ID=placeholder
448
+ GOOGLE_CLIENT_SECRET=placeholder
449
+
450
+ GITHUB_CLIENT_ID=placeholder
451
+ GITHUB_CLIENT_SECRET=placeholder
452
+
453
+ MICROSOFT_CLIENT_ID=placeholder
454
+ MICROSOFT_CLIENT_SECRET=placeholder
455
+
456
+ MEILISEARCH_HOST=http://localhost:7700
457
+ MEILISEARCH_API_KEY=masterKey
405
458
  ```
406
459
 
407
460
  > All variables are assembled into connection URLs inside `app/core/config.py` via `@property`. Your code always reads from structured fields — never a fragile connection string.
@@ -59,6 +59,30 @@ fastapi-spawn add alembic
59
59
  fastapi-spawn add sentry
60
60
  ```
61
61
 
62
+ ```
63
+
64
+ ---
65
+
66
+ ## 🆘 Built-in Help & Auto-Suggestions
67
+
68
+ `fastapi-spawn` comes with an integrated global help menu and intelligent typo correction:
69
+
70
+ ```bash
71
+ # Display the interactive global help menu
72
+ fastapi-spawn help
73
+
74
+ # Or use the standard flag
75
+ fastapi-spawn --help
76
+ ```
77
+
78
+ ### Auto-Typo Correction (Did you mean?)
79
+ If you accidentally misspell a command, the CLI will catch it and suggest the right one automatically to save you time.
80
+ ```bash
81
+ $ fastapi-spawn nw my_app
82
+
83
+ Error: No such command 'nw'. Did you mean 'new'?
84
+ ```
85
+
62
86
  ---
63
87
 
64
88
  ## Generated Project Structure
@@ -340,6 +364,10 @@ SMTP_SSL=false
340
364
  # ── AWS SES ──────────────────────────────────────────────────────────────
341
365
  SES_FROM_EMAIL=noreply@example.com # uses AWS_* credentials above
342
366
 
367
+ # ── Resend ───────────────────────────────────────────────────────────────
368
+ RESEND_API_KEY=re_placeholder
369
+ RESEND_FROM_EMAIL=noreply@example.com
370
+
343
371
  # ── Slack ────────────────────────────────────────────────────────────────
344
372
  SLACK_WEBHOOK_URL=https://hooks.slack.com/services/CHANGE_ME
345
373
 
@@ -361,6 +389,31 @@ ELASTICSEARCH_HOST=localhost
361
389
  ELASTICSEARCH_PORT=9200
362
390
  ELASTICSEARCH_API_KEY=
363
391
  # → assembled as: http://HOST:PORT
392
+
393
+ # ── OpenSearch ───────────────────────────────────────────────────────────
394
+ OPENSEARCH_HOST=localhost
395
+ OPENSEARCH_PORT=9200
396
+ OPENSEARCH_USER=admin
397
+ OPENSEARCH_PASSWORD=admin
398
+
399
+ # ── Vespa ────────────────────────────────────────────────────────────────
400
+ VESPA_ENDPOINT=http://localhost:8080
401
+
402
+ # ── Extras (Stripe, SSO, Meilisearch) ────────────────────────────────────
403
+ STRIPE_API_KEY=sk_test_placeholder
404
+ STRIPE_WEBHOOK_SECRET=whsec_placeholder
405
+
406
+ GOOGLE_CLIENT_ID=placeholder
407
+ GOOGLE_CLIENT_SECRET=placeholder
408
+
409
+ GITHUB_CLIENT_ID=placeholder
410
+ GITHUB_CLIENT_SECRET=placeholder
411
+
412
+ MICROSOFT_CLIENT_ID=placeholder
413
+ MICROSOFT_CLIENT_SECRET=placeholder
414
+
415
+ MEILISEARCH_HOST=http://localhost:7700
416
+ MEILISEARCH_API_KEY=masterKey
364
417
  ```
365
418
 
366
419
  > All variables are assembled into connection URLs inside `app/core/config.py` via `@property`. Your code always reads from structured fields — never a fragile connection string.
@@ -1,6 +1,6 @@
1
1
  """fastapi-spawn — Production-ready FastAPI project scaffolding CLI."""
2
2
 
3
- __version__ = "0.4.11"
3
+ __version__ = "0.4.13"
4
4
  __author__ = "Bishwajit Garai"
5
5
  __email__ = "bishwajitgarai@gmail.com"
6
6
  __license__ = "MIT"
@@ -62,6 +62,14 @@ def version_callback(value: bool) -> None:
62
62
  raise typer.Exit()
63
63
 
64
64
 
65
+ @app.command("help", help="Show this help message and exit.")
66
+ def show_help(ctx: typer.Context) -> None:
67
+ """Print the global CLI help."""
68
+ # We leverage Click's internal help formatting to render the same as --help
69
+ rprint(ctx.parent.get_help())
70
+
71
+
72
+
65
73
  # ── `new` command ──────────────────────────────────────────────────────────────
66
74
 
67
75
  @app.command("new", help="Create a new FastAPI project.")
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "fastapi-spawn"
7
- version = "0.4.11"
7
+ version = "0.4.13"
8
8
  description = "A powerful CLI tool to scaffold production-ready FastAPI projects with flexible database, auth, broker, and deployment options."
9
9
  readme = "README.md"
10
10
  license = { text = "MIT" }
File without changes