fastapi-spawn 0.4.3__tar.gz → 0.4.6__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.
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/PKG-INFO +62 -9
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/README.md +61 -8
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/__init__.py +1 -1
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/cli.py +15 -1
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/pyproject.toml +1 -1
- fastapi_spawn-0.4.3/CHANGELOG.md +0 -36
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/.gitignore +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/LICENSE +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/config.py +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/constants.py +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/generator.py +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/interactive.py +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/alembic/alembic.ini.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/alembic/env.py.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/app/__init__.py.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/app/api/deps.py.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/app/api/graphql.py.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/app/api/v1/auth/router.py.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/app/api/v1/health/router.py.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/app/api/v1/router.py.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/app/api/v1/ws/router.py.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/app/core/ai.py.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/app/core/config.py.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/app/core/email.py.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/app/core/exceptions.py.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/app/core/logger.py.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/app/core/logging.py.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/app/core/monitoring.py.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/app/core/notifications.py.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/app/core/security.py.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/app/core/storage.py.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/app/core/vector_db.py.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/app/core/ws_manager.py.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/app/db/session.py.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/app/frontend/index.html.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/app/main.py.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/app/middleware/__init__.py.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/app/middleware/rate_limit.py.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/app/middleware/request_logger.py.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/base/Makefile.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/base/README.md.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/base/env.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/base/env_example.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/base/gitignore.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/base/pre_commit.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/base/pyproject.toml.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/ci/github/publish.yml.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/ci/github/tests.yml.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/ci/gitlab/gitlab-ci.yml.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/docker/Dockerfile.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/docker/docker-compose.yml.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/docker/dockerignore.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/infra/docker/docker-compose.prod.yml.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/infra/helm/Chart.yaml.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/infra/helm/values.yaml.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/infra/terraform/main.tf.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/infra/terraform/variables.tf.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/root/main.py.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/tasks/arq_worker.py.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/tasks/celery_app.py.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/tasks/sample_tasks.py.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/tests/conftest.py.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/tests/test_health.py.j2 +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/utils.py +0 -0
- {fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/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.
|
|
3
|
+
Version: 0.4.6
|
|
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
|
|
@@ -440,20 +440,73 @@ GraphiQL IDE is enabled in `dev` mode. Subscriptions use `graphql-transport-ws`.
|
|
|
440
440
|
|
|
441
441
|
---
|
|
442
442
|
|
|
443
|
-
## Add Features to Existing Projects
|
|
443
|
+
## 🧩 Add Features to Existing Projects (Incremental Scaffolding)
|
|
444
|
+
|
|
445
|
+
Did you generate a minimal project and now realize you need WebSockets, AWS S3, or OpenAI? **No problem.**
|
|
446
|
+
|
|
447
|
+
`fastapi-spawn add` allows you to incrementally scale your project. Instead of re-generating your entire project or copying boilerplate manually, you can inject production-ready modules into your existing codebase.
|
|
448
|
+
|
|
449
|
+
```bash
|
|
450
|
+
fastapi-spawn add [FEATURE]
|
|
451
|
+
```
|
|
452
|
+
|
|
453
|
+
### How it works:
|
|
454
|
+
1. **Generates the Module**: It creates the necessary file (e.g., `app/core/ai.py` or `app/api/v1/ws/router.py`) tailored to your project structure.
|
|
455
|
+
2. **Environment Variables**: It prompts you with the exact environment variables you need to append to your `.env` and `config.py`.
|
|
456
|
+
3. **Integration Guide**: It outputs a step-by-step UI snippet telling you *exactly* where to import and mount the new feature in your `main.py` or `router.py`.
|
|
457
|
+
|
|
458
|
+
### All Possibilities you can `add`:
|
|
459
|
+
|
|
460
|
+
You can run any of the following commands inside an existing project:
|
|
444
461
|
|
|
445
462
|
```bash
|
|
446
|
-
|
|
463
|
+
# Infrastructure & Deployment
|
|
464
|
+
fastapi-spawn add docker # Dockerfile and docker-compose.yml
|
|
465
|
+
fastapi-spawn add helm # Helm chart in infra/helm/
|
|
466
|
+
fastapi-spawn add terraform # Terraform in infra/terraform/
|
|
467
|
+
fastapi-spawn add github-actions # CI/CD pipeline (.github/workflows/tests.yml)
|
|
468
|
+
|
|
469
|
+
# AI & Vector DBs
|
|
447
470
|
fastapi-spawn add openai # OpenAI async client
|
|
448
|
-
fastapi-spawn add
|
|
449
|
-
fastapi-spawn add
|
|
471
|
+
fastapi-spawn add anthropic # Anthropic Claude async client
|
|
472
|
+
fastapi-spawn add gemini # Google Generative AI client
|
|
473
|
+
fastapi-spawn add qdrant # Qdrant vector DB
|
|
474
|
+
fastapi-spawn add chroma # ChromaDB local vector DB
|
|
475
|
+
fastapi-spawn add pinecone # Pinecone cloud vector DB
|
|
476
|
+
fastapi-spawn add meilisearch # Meilisearch typo-tolerant search
|
|
477
|
+
fastapi-spawn add ocr # PDF & OCR data extraction pipeline
|
|
478
|
+
|
|
479
|
+
# Payments & Identity
|
|
480
|
+
fastapi-spawn add stripe # Stripe payments & webhooks
|
|
481
|
+
fastapi-spawn add sso # FastAPI SSO (Google/GitHub login)
|
|
482
|
+
|
|
483
|
+
# Messaging & Async Workers
|
|
450
484
|
fastapi-spawn add celery # Celery worker + tasks/
|
|
485
|
+
fastapi-spawn add arq # Arq async job queues using Redis
|
|
451
486
|
fastapi-spawn add websockets # WebSocket connection manager
|
|
487
|
+
fastapi-spawn add sse # Server-Sent Events streaming
|
|
488
|
+
|
|
489
|
+
# Storage, APIs, Seeding & Monitoring
|
|
490
|
+
fastapi-spawn add s3 # AWS S3 / MinIO storage
|
|
452
491
|
fastapi-spawn add graphql # Strawberry GraphQL schema
|
|
453
|
-
fastapi-spawn add
|
|
454
|
-
fastapi-spawn add
|
|
455
|
-
fastapi-spawn add
|
|
456
|
-
fastapi-spawn add
|
|
492
|
+
fastapi-spawn add alembic # Alembic async migrations
|
|
493
|
+
fastapi-spawn add seed # Faker database seeding script
|
|
494
|
+
fastapi-spawn add resend # Resend modern email client
|
|
495
|
+
fastapi-spawn add sentry # Sentry APM integration
|
|
496
|
+
fastapi-spawn add prometheus # Prometheus metrics
|
|
497
|
+
```
|
|
498
|
+
|
|
499
|
+
*Example:*
|
|
500
|
+
```bash
|
|
501
|
+
$ fastapi-spawn add websockets
|
|
502
|
+
|
|
503
|
+
✓ Created app/core/ws_manager.py
|
|
504
|
+
✓ Created app/api/v1/ws/router.py
|
|
505
|
+
|
|
506
|
+
👉 Next Steps:
|
|
507
|
+
1. Mount the router in app/api/v1/router.py:
|
|
508
|
+
from app.api.v1.ws.router import router as ws_router
|
|
509
|
+
router.include_router(ws_router)
|
|
457
510
|
```
|
|
458
511
|
|
|
459
512
|
---
|
|
@@ -399,20 +399,73 @@ GraphiQL IDE is enabled in `dev` mode. Subscriptions use `graphql-transport-ws`.
|
|
|
399
399
|
|
|
400
400
|
---
|
|
401
401
|
|
|
402
|
-
## Add Features to Existing Projects
|
|
402
|
+
## 🧩 Add Features to Existing Projects (Incremental Scaffolding)
|
|
403
|
+
|
|
404
|
+
Did you generate a minimal project and now realize you need WebSockets, AWS S3, or OpenAI? **No problem.**
|
|
405
|
+
|
|
406
|
+
`fastapi-spawn add` allows you to incrementally scale your project. Instead of re-generating your entire project or copying boilerplate manually, you can inject production-ready modules into your existing codebase.
|
|
407
|
+
|
|
408
|
+
```bash
|
|
409
|
+
fastapi-spawn add [FEATURE]
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
### How it works:
|
|
413
|
+
1. **Generates the Module**: It creates the necessary file (e.g., `app/core/ai.py` or `app/api/v1/ws/router.py`) tailored to your project structure.
|
|
414
|
+
2. **Environment Variables**: It prompts you with the exact environment variables you need to append to your `.env` and `config.py`.
|
|
415
|
+
3. **Integration Guide**: It outputs a step-by-step UI snippet telling you *exactly* where to import and mount the new feature in your `main.py` or `router.py`.
|
|
416
|
+
|
|
417
|
+
### All Possibilities you can `add`:
|
|
418
|
+
|
|
419
|
+
You can run any of the following commands inside an existing project:
|
|
403
420
|
|
|
404
421
|
```bash
|
|
405
|
-
|
|
422
|
+
# Infrastructure & Deployment
|
|
423
|
+
fastapi-spawn add docker # Dockerfile and docker-compose.yml
|
|
424
|
+
fastapi-spawn add helm # Helm chart in infra/helm/
|
|
425
|
+
fastapi-spawn add terraform # Terraform in infra/terraform/
|
|
426
|
+
fastapi-spawn add github-actions # CI/CD pipeline (.github/workflows/tests.yml)
|
|
427
|
+
|
|
428
|
+
# AI & Vector DBs
|
|
406
429
|
fastapi-spawn add openai # OpenAI async client
|
|
407
|
-
fastapi-spawn add
|
|
408
|
-
fastapi-spawn add
|
|
430
|
+
fastapi-spawn add anthropic # Anthropic Claude async client
|
|
431
|
+
fastapi-spawn add gemini # Google Generative AI client
|
|
432
|
+
fastapi-spawn add qdrant # Qdrant vector DB
|
|
433
|
+
fastapi-spawn add chroma # ChromaDB local vector DB
|
|
434
|
+
fastapi-spawn add pinecone # Pinecone cloud vector DB
|
|
435
|
+
fastapi-spawn add meilisearch # Meilisearch typo-tolerant search
|
|
436
|
+
fastapi-spawn add ocr # PDF & OCR data extraction pipeline
|
|
437
|
+
|
|
438
|
+
# Payments & Identity
|
|
439
|
+
fastapi-spawn add stripe # Stripe payments & webhooks
|
|
440
|
+
fastapi-spawn add sso # FastAPI SSO (Google/GitHub login)
|
|
441
|
+
|
|
442
|
+
# Messaging & Async Workers
|
|
409
443
|
fastapi-spawn add celery # Celery worker + tasks/
|
|
444
|
+
fastapi-spawn add arq # Arq async job queues using Redis
|
|
410
445
|
fastapi-spawn add websockets # WebSocket connection manager
|
|
446
|
+
fastapi-spawn add sse # Server-Sent Events streaming
|
|
447
|
+
|
|
448
|
+
# Storage, APIs, Seeding & Monitoring
|
|
449
|
+
fastapi-spawn add s3 # AWS S3 / MinIO storage
|
|
411
450
|
fastapi-spawn add graphql # Strawberry GraphQL schema
|
|
412
|
-
fastapi-spawn add
|
|
413
|
-
fastapi-spawn add
|
|
414
|
-
fastapi-spawn add
|
|
415
|
-
fastapi-spawn add
|
|
451
|
+
fastapi-spawn add alembic # Alembic async migrations
|
|
452
|
+
fastapi-spawn add seed # Faker database seeding script
|
|
453
|
+
fastapi-spawn add resend # Resend modern email client
|
|
454
|
+
fastapi-spawn add sentry # Sentry APM integration
|
|
455
|
+
fastapi-spawn add prometheus # Prometheus metrics
|
|
456
|
+
```
|
|
457
|
+
|
|
458
|
+
*Example:*
|
|
459
|
+
```bash
|
|
460
|
+
$ fastapi-spawn add websockets
|
|
461
|
+
|
|
462
|
+
✓ Created app/core/ws_manager.py
|
|
463
|
+
✓ Created app/api/v1/ws/router.py
|
|
464
|
+
|
|
465
|
+
👉 Next Steps:
|
|
466
|
+
1. Mount the router in app/api/v1/router.py:
|
|
467
|
+
from app.api.v1.ws.router import router as ws_router
|
|
468
|
+
router.include_router(ws_router)
|
|
416
469
|
```
|
|
417
470
|
|
|
418
471
|
---
|
|
@@ -277,14 +277,21 @@ _ADDABLE_FEATURES = {
|
|
|
277
277
|
"sendgrid": "SendGrid email",
|
|
278
278
|
"smtp": "SMTP email (fastapi-mail)",
|
|
279
279
|
"ses": "AWS SES email",
|
|
280
|
+
"resend": "Resend email client (modern React/HTML emails)",
|
|
280
281
|
"slack": "Slack webhook notifications",
|
|
281
282
|
"discord": "Discord webhook notifications",
|
|
282
283
|
"qdrant": "Qdrant vector database",
|
|
283
284
|
"chroma": "ChromaDB local vector database",
|
|
284
285
|
"pinecone": "Pinecone managed vector database",
|
|
285
286
|
"elasticsearch": "Elasticsearch KNN search",
|
|
287
|
+
"meilisearch": "Meilisearch ultra-fast typo-tolerant search",
|
|
286
288
|
"websockets": "WebSocket connection manager + endpoints",
|
|
289
|
+
"sse": "Server-Sent Events (SSE) streaming endpoint",
|
|
287
290
|
"graphql": "Strawberry GraphQL schema + subscriptions",
|
|
291
|
+
"stripe": "Stripe payments & webhook signature validation",
|
|
292
|
+
"sso": "FastAPI SSO (Login with Google / GitHub)",
|
|
293
|
+
"seed": "Database seeding script using Faker",
|
|
294
|
+
"ocr": "PDF & OCR data pipeline (PyMuPDF / Tesseract)",
|
|
288
295
|
"docker": "Dockerfile + docker-compose.yml",
|
|
289
296
|
"ci": "GitHub Actions CI/CD workflows",
|
|
290
297
|
"helm": "Helm chart (infra/helm/)",
|
|
@@ -339,14 +346,21 @@ def _feature_guidance(feature: str, _project_dir: Path) -> None:
|
|
|
339
346
|
"sendgrid": ["Add dep: sendgrid>=6.11.0", "Create app/core/email.py", "Add to .env: SENDGRID_API_KEY, SENDGRID_FROM_EMAIL"],
|
|
340
347
|
"smtp": ["Add dep: fastapi-mail>=1.4.1", "Create app/core/email.py", "Add to .env: SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASSWORD, SMTP_FROM_EMAIL"],
|
|
341
348
|
"ses": ["Add dep: boto3>=1.34.0", "Create app/core/email.py", "Add to .env: AWS_* credentials, SES_FROM_EMAIL"],
|
|
349
|
+
"resend": ["Add dep: resend>=2.1.0", "Create app/core/email.py (Resend client)", "Add to .env: RESEND_API_KEY"],
|
|
342
350
|
"slack": ["No extra dep (uses httpx)", "Create app/core/notifications.py", "Add to .env: SLACK_WEBHOOK_URL=https://hooks.slack.com/services/..."],
|
|
343
351
|
"discord": ["No extra dep (uses httpx)", "Create app/core/notifications.py", "Add to .env: DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/..."],
|
|
344
352
|
"qdrant": ["Add dep: qdrant-client[fastembed]>=1.9.0", "Create app/core/vector_db.py", "Add to .env: QDRANT_HOST=localhost, QDRANT_PORT=6333, QDRANT_API_KEY= (blank for local)"],
|
|
345
353
|
"chroma": ["Add dep: chromadb>=0.5.0", "Create app/core/vector_db.py (persistent local client)", "No env vars needed — data stored in ./chroma_data"],
|
|
346
354
|
"pinecone": ["Add dep: pinecone-client>=3.2.0", "Create app/core/vector_db.py", "Add to .env: PINECONE_API_KEY, PINECONE_INDEX_NAME"],
|
|
347
355
|
"elasticsearch": ["Add dep: elasticsearch[async]>=8.13.0", "Create app/core/vector_db.py (kNN search)", "Add to .env: ELASTICSEARCH_HOST, ELASTICSEARCH_PORT, ELASTICSEARCH_API_KEY"],
|
|
348
|
-
"
|
|
356
|
+
"meilisearch": ["Add dep: meilisearch>=0.30.0", "Create app/core/search.py (Meilisearch client)", "Add to .env: MEILISEARCH_HOST=http://localhost:7700, MEILISEARCH_API_KEY"],
|
|
357
|
+
"websockets":["No extra dep (built into FastAPI)", "Create app/core/ws_manager.py (ConnectionManager)", "Create app/api/v1/ws/router.py — /ws/connect, /ws/connect/{room_id}"],
|
|
358
|
+
"sse": ["Add dep: sse-starlette>=2.1.0", "Create app/api/v1/streaming/router.py", "Return EventSourceResponse(async_generator)"],
|
|
349
359
|
"graphql": ["Add dep: strawberry-graphql[fastapi]>=0.227.0", "Create app/api/graphql.py (Query + Mutation + Subscription)", "Mount: app.include_router(graphql_router, prefix='/graphql')"],
|
|
360
|
+
"stripe": ["Add dep: stripe>=9.0.0", "Create app/api/v1/payments/router.py (webhook endpoint)", "Add to .env: STRIPE_API_KEY, STRIPE_WEBHOOK_SECRET"],
|
|
361
|
+
"sso": ["Add dep: fastapi-sso>=0.14.0", "Create app/api/v1/auth/sso.py (GoogleSSO / GithubSSO)", "Add to .env: GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET"],
|
|
362
|
+
"seed": ["Add dep: faker>=25.0.0", "Create db/seed.py (generate 100 mock users/posts)", "Run: uv run python db/seed.py"],
|
|
363
|
+
"ocr": ["Add deps: pymupdf>=1.24.0, pytesseract>=0.3.10", "Create app/core/ocr.py (PDF parsing pipeline)", "Install system deps: sudo apt install tesseract-ocr"],
|
|
350
364
|
"docker": ["Create Dockerfile (multi-stage, uv-based)", "Create docker-compose.yml with all selected services", "Create .dockerignore"],
|
|
351
365
|
"ci": ["Create .github/workflows/tests.yml (matrix: 3.10, 3.11, 3.12)", "Create .github/workflows/publish.yml (v* tags → PyPI)", "Add PYPI_API_TOKEN to GitHub repo secrets"],
|
|
352
366
|
"helm": ["Create infra/helm/Chart.yaml", "Create infra/helm/values.yaml (replicas, image, resources)", "Run: helm install my-release ./infra/helm"],
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "fastapi-spawn"
|
|
7
|
-
version = "0.4.
|
|
7
|
+
version = "0.4.6"
|
|
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" }
|
fastapi_spawn-0.4.3/CHANGELOG.md
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
All notable changes to `fastapi-spawn` will be documented here.
|
|
4
|
-
|
|
5
|
-
Format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
|
6
|
-
Versioning follows [Semantic Versioning](https://semver.org/).
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## [0.1.0] — 2026-05-10
|
|
11
|
-
|
|
12
|
-
### Added
|
|
13
|
-
- Interactive TUI with questionary + Rich styling
|
|
14
|
-
- Database support: PostgreSQL, MySQL, MongoDB, SQLite
|
|
15
|
-
- ORM support: SQLAlchemy 2.x (async), Tortoise ORM, Beanie
|
|
16
|
-
- Migration support: Alembic (async-compatible), Aerich
|
|
17
|
-
- Auth: JWT, OAuth2, API Key
|
|
18
|
-
- Message brokers: Redis (Celery), RabbitMQ (Celery), Kafka (aiokafka)
|
|
19
|
-
- Cache layer: Redis, Memcached
|
|
20
|
-
- File storage: AWS S3 (boto3) with presigned URLs
|
|
21
|
-
- AI integration: OpenAI (chat + embeddings, custom base URL), Anthropic Claude
|
|
22
|
-
- Root-level `main.py` entry point (`uv run main.py`)
|
|
23
|
-
- Root-level `tasks/` directory for Celery workers
|
|
24
|
-
- Individual env fields per service with `@property` URL assembly
|
|
25
|
-
- `OPENAI_BASE_URL` support for Azure, LM Studio, local endpoints
|
|
26
|
-
- `--dry-run` flag with rich tree preview
|
|
27
|
-
- `--force` flag to overwrite existing projects
|
|
28
|
-
- Stack options: minimal, standard, full (Helm + Terraform)
|
|
29
|
-
- CI/CD: GitHub Actions, GitLab CI
|
|
30
|
-
- Logging: loguru, structlog, standard library
|
|
31
|
-
- Docker: multi-service compose with health checks
|
|
32
|
-
- infra/: docker/, helm/, terraform/ structure
|
|
33
|
-
- `uv`-compatible `pyproject.toml` with `[tool.uv]`
|
|
34
|
-
- `list-templates` and `validate` subcommands
|
|
35
|
-
- `ENVIRONMENT=dev` style env naming
|
|
36
|
-
- Professional README, CHANGELOG, CONTRIBUTING
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/app/api/v1/auth/router.py.j2
RENAMED
|
File without changes
|
{fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/app/api/v1/health/router.py.j2
RENAMED
|
File without changes
|
|
File without changes
|
{fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/app/api/v1/ws/router.py.j2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/app/core/exceptions.py.j2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/app/core/monitoring.py.j2
RENAMED
|
File without changes
|
{fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/app/core/notifications.py.j2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/app/core/vector_db.py.j2
RENAMED
|
File without changes
|
{fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/app/core/ws_manager.py.j2
RENAMED
|
File without changes
|
|
File without changes
|
{fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/app/frontend/index.html.j2
RENAMED
|
File without changes
|
|
File without changes
|
{fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/app/middleware/__init__.py.j2
RENAMED
|
File without changes
|
{fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/app/middleware/rate_limit.py.j2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/ci/github/publish.yml.j2
RENAMED
|
File without changes
|
|
File without changes
|
{fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/ci/gitlab/gitlab-ci.yml.j2
RENAMED
|
File without changes
|
|
File without changes
|
{fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/docker/docker-compose.yml.j2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/infra/helm/Chart.yaml.j2
RENAMED
|
File without changes
|
{fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/infra/helm/values.yaml.j2
RENAMED
|
File without changes
|
{fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/infra/terraform/main.tf.j2
RENAMED
|
File without changes
|
{fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/infra/terraform/variables.tf.j2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastapi_spawn-0.4.3 → fastapi_spawn-0.4.6}/fastapi_spawn/templates/tasks/sample_tasks.py.j2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|