fastapi-fullstack 0.1.5__tar.gz → 0.1.7__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 (244) hide show
  1. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/PKG-INFO +185 -94
  2. {fastapi_fullstack-0.1.5/template/{{cookiecutter.project_slug}} → fastapi_fullstack-0.1.7}/README.md +183 -93
  3. fastapi_fullstack-0.1.7/fastapi_gen/cli.py +442 -0
  4. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/fastapi_gen/config.py +92 -2
  5. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/fastapi_gen/generator.py +39 -13
  6. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/fastapi_gen/prompts.py +206 -11
  7. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/pyproject.toml +2 -1
  8. fastapi_fullstack-0.1.7/template/VARIABLES.md +276 -0
  9. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/cookiecutter.json +14 -0
  10. fastapi_fullstack-0.1.7/template/hooks/post_gen_project.py +355 -0
  11. fastapi_fullstack-0.1.7/template/{{cookiecutter.project_slug}}/.env.prod.example +56 -0
  12. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/.gitignore +1 -0
  13. fastapi_fullstack-0.1.7/template/{{cookiecutter.project_slug}}/AGENTS.md +55 -0
  14. fastapi_fullstack-0.1.7/template/{{cookiecutter.project_slug}}/CLAUDE.md +99 -0
  15. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/Makefile +17 -5
  16. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7/template/{{cookiecutter.project_slug}}}/README.md +257 -102
  17. {fastapi_fullstack-0.1.5/template/{{cookiecutter.project_slug}} → fastapi_fullstack-0.1.7/template/{{cookiecutter.project_slug}}/backend}/.env.example +11 -1
  18. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/agents/assistant.py +26 -2
  19. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/agents/langchain_assistant.py +17 -2
  20. fastapi_fullstack-0.1.7/template/{{cookiecutter.project_slug}}/backend/app/agents/prompts.py +10 -0
  21. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/api/deps.py +20 -7
  22. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/api/exception_handlers.py +18 -5
  23. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/agent.py +14 -14
  24. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/conversations.py +20 -12
  25. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/core/config.py +17 -6
  26. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/db/session.py +22 -5
  27. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/main.py +5 -0
  28. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/repositories/conversation.py +80 -2
  29. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/schemas/conversation.py +2 -5
  30. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/services/conversation.py +71 -18
  31. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/pyproject.toml +17 -0
  32. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/docker-compose.dev.yml +6 -6
  33. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/docker-compose.prod.yml +105 -52
  34. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/docker-compose.yml +6 -6
  35. fastapi_fullstack-0.1.7/template/{{cookiecutter.project_slug}}/docs/adding_features.md +132 -0
  36. fastapi_fullstack-0.1.7/template/{{cookiecutter.project_slug}}/docs/architecture.md +63 -0
  37. fastapi_fullstack-0.1.7/template/{{cookiecutter.project_slug}}/docs/patterns.md +161 -0
  38. fastapi_fullstack-0.1.7/template/{{cookiecutter.project_slug}}/docs/testing.md +120 -0
  39. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/README.md +127 -92
  40. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chat-container.tsx +48 -19
  41. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/conversation-sidebar.tsx +2 -2
  42. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/components/theme/theme-toggle.tsx +22 -0
  43. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/button.tsx +3 -1
  44. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-conversations.ts +11 -5
  45. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/stores/conversation-store.ts +4 -4
  46. fastapi_fullstack-0.1.5/fastapi_gen/cli.py +0 -280
  47. fastapi_fullstack-0.1.5/template/hooks/post_gen_project.py +0 -192
  48. fastapi_fullstack-0.1.5/template/{{cookiecutter.project_slug}}/CLAUDE.md +0 -377
  49. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/.gitignore +0 -0
  50. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/LICENSE +0 -0
  51. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/fastapi_gen/__init__.py +0 -0
  52. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/.github/workflows/ci.yml +0 -0
  53. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/.dockerignore +0 -0
  54. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/.pre-commit-config.yaml +0 -0
  55. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/Dockerfile +0 -0
  56. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/alembic/env.py +0 -0
  57. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/alembic/script.py.mako +0 -0
  58. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/.gitkeep +0 -0
  59. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/alembic.ini +0 -0
  60. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/__init__.py +0 -0
  61. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/admin.py +0 -0
  62. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/agents/__init__.py +0 -0
  63. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/__init__.py +0 -0
  64. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/datetime_tool.py +0 -0
  65. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/api/__init__.py +0 -0
  66. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/api/router.py +0 -0
  67. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/__init__.py +0 -0
  68. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/__init__.py +0 -0
  69. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/auth.py +0 -0
  70. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/health.py +0 -0
  71. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/items.py +0 -0
  72. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/oauth.py +0 -0
  73. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/sessions.py +0 -0
  74. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/users.py +0 -0
  75. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/webhooks.py +0 -0
  76. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/ws.py +0 -0
  77. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/api/versioning.py +0 -0
  78. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/clients/__init__.py +0 -0
  79. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/clients/redis.py +0 -0
  80. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/commands/__init__.py +0 -0
  81. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/commands/cleanup.py +0 -0
  82. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/commands/example.py +0 -0
  83. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/commands/seed.py +0 -0
  84. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/core/__init__.py +0 -0
  85. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/core/cache.py +0 -0
  86. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/core/csrf.py +0 -0
  87. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/core/exceptions.py +0 -0
  88. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/core/logfire_setup.py +0 -0
  89. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/core/middleware.py +0 -0
  90. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/core/oauth.py +0 -0
  91. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/core/rate_limit.py +0 -0
  92. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/core/sanitize.py +0 -0
  93. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/core/security.py +0 -0
  94. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/db/__init__.py +0 -0
  95. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/db/base.py +0 -0
  96. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/db/models/__init__.py +0 -0
  97. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/db/models/conversation.py +0 -0
  98. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/db/models/item.py +0 -0
  99. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/db/models/session.py +0 -0
  100. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/db/models/user.py +0 -0
  101. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/db/models/webhook.py +0 -0
  102. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/pipelines/__init__.py +0 -0
  103. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/pipelines/base.py +0 -0
  104. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/repositories/__init__.py +0 -0
  105. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/repositories/base.py +0 -0
  106. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/repositories/item.py +0 -0
  107. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/repositories/session.py +0 -0
  108. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/repositories/user.py +0 -0
  109. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/repositories/webhook.py +0 -0
  110. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/schemas/__init__.py +0 -0
  111. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/schemas/base.py +0 -0
  112. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/schemas/item.py +0 -0
  113. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/schemas/session.py +0 -0
  114. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/schemas/token.py +0 -0
  115. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/schemas/user.py +0 -0
  116. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/schemas/webhook.py +0 -0
  117. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/services/__init__.py +0 -0
  118. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/services/item.py +0 -0
  119. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/services/session.py +0 -0
  120. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/services/user.py +0 -0
  121. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/services/webhook.py +0 -0
  122. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/worker/__init__.py +0 -0
  123. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/worker/celery_app.py +0 -0
  124. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/worker/taskiq_app.py +0 -0
  125. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/__init__.py +0 -0
  126. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/examples.py +0 -0
  127. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/schedules.py +0 -0
  128. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/taskiq_examples.py +0 -0
  129. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/cli/__init__.py +0 -0
  130. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/cli/commands.py +0 -0
  131. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/scripts/.gitkeep +0 -0
  132. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/tests/__init__.py +0 -0
  133. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/tests/api/__init__.py +0 -0
  134. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_auth.py +0 -0
  135. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_exceptions.py +0 -0
  136. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_health.py +0 -0
  137. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_items.py +0 -0
  138. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_users.py +0 -0
  139. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/tests/conftest.py +0 -0
  140. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/tests/test_admin.py +0 -0
  141. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/tests/test_agents.py +0 -0
  142. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/tests/test_clients.py +0 -0
  143. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/tests/test_commands.py +0 -0
  144. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/tests/test_core.py +0 -0
  145. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/tests/test_pipelines.py +0 -0
  146. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/tests/test_repositories.py +0 -0
  147. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/tests/test_security.py +0 -0
  148. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/tests/test_services.py +0 -0
  149. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/backend/tests/test_worker.py +0 -0
  150. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/docker-compose.frontend.yml +0 -0
  151. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/.dockerignore +0 -0
  152. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/.env.example +0 -0
  153. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/.gitignore +0 -0
  154. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/.prettierignore +0 -0
  155. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/.prettierrc +0 -0
  156. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/Dockerfile +0 -0
  157. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/e2e/auth.setup.ts +0 -0
  158. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/e2e/auth.spec.ts +0 -0
  159. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/e2e/chat.spec.ts +0 -0
  160. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/e2e/home.spec.ts +0 -0
  161. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/instrumentation.ts +0 -0
  162. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/messages/en.json +0 -0
  163. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/messages/pl.json +0 -0
  164. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/next.config.ts +0 -0
  165. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/package.json +0 -0
  166. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/playwright.config.ts +0 -0
  167. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/postcss.config.mjs +0 -0
  168. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(auth)/layout.tsx +0 -0
  169. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(auth)/login/page.tsx +0 -0
  170. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(auth)/register/page.tsx +0 -0
  171. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/chat/page.tsx +0 -0
  172. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/dashboard/page.tsx +0 -0
  173. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/layout.tsx +0 -0
  174. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/profile/page.tsx +0 -0
  175. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/auth/callback/page.tsx +0 -0
  176. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/layout.tsx +0 -0
  177. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/page.tsx +0 -0
  178. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/login/route.ts +0 -0
  179. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/logout/route.ts +0 -0
  180. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/me/route.ts +0 -0
  181. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/oauth-callback/route.ts +0 -0
  182. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/refresh/route.ts +0 -0
  183. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/register/route.ts +0 -0
  184. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/[id]/messages/route.ts +0 -0
  185. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/[id]/route.ts +0 -0
  186. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/route.ts +0 -0
  187. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/health/route.ts +0 -0
  188. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/app/globals.css +0 -0
  189. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/app/layout.tsx +0 -0
  190. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/app/providers.tsx +0 -0
  191. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/components/auth/index.ts +0 -0
  192. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/components/auth/login-form.tsx +0 -0
  193. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/components/auth/register-form.tsx +0 -0
  194. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chat-input.tsx +0 -0
  195. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/copy-button.tsx +0 -0
  196. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/index.ts +0 -0
  197. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/local-conversation-sidebar.tsx +0 -0
  198. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/markdown-content.tsx +0 -0
  199. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/message-item.tsx +0 -0
  200. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/message-list.tsx +0 -0
  201. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-call-card.tsx +0 -0
  202. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/components/icons/google-icon.tsx +0 -0
  203. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/components/icons/index.ts +0 -0
  204. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/components/language-switcher.tsx +0 -0
  205. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/header.tsx +0 -0
  206. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/index.ts +0 -0
  207. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/sidebar.tsx +0 -0
  208. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/components/theme/index.ts +0 -0
  209. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/components/theme/theme-provider.tsx +0 -0
  210. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/badge.tsx +0 -0
  211. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/button.test.tsx +0 -0
  212. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/card.tsx +0 -0
  213. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/index.ts +0 -0
  214. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/input.tsx +0 -0
  215. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/label.tsx +0 -0
  216. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/sheet.tsx +0 -0
  217. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/index.ts +0 -0
  218. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-auth.ts +0 -0
  219. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-chat.ts +0 -0
  220. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-local-chat.ts +0 -0
  221. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-websocket.ts +0 -0
  222. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/i18n.ts +0 -0
  223. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/lib/api-client.ts +0 -0
  224. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/lib/constants.ts +0 -0
  225. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/lib/server-api.ts +0 -0
  226. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/lib/utils.test.ts +0 -0
  227. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/lib/utils.ts +0 -0
  228. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/middleware.ts +0 -0
  229. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/stores/auth-store.test.ts +0 -0
  230. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/stores/auth-store.ts +0 -0
  231. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/stores/chat-sidebar-store.ts +0 -0
  232. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/stores/chat-store.ts +0 -0
  233. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/stores/index.ts +0 -0
  234. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/stores/local-chat-store.ts +0 -0
  235. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/stores/sidebar-store.ts +0 -0
  236. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/stores/theme-store.ts +0 -0
  237. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/types/api.ts +0 -0
  238. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/types/auth.ts +0 -0
  239. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/types/chat.ts +0 -0
  240. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/types/conversation.ts +0 -0
  241. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/src/types/index.ts +0 -0
  242. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/tsconfig.json +0 -0
  243. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/vitest.config.ts +0 -0
  244. {fastapi_fullstack-0.1.5 → fastapi_fullstack-0.1.7}/template/{{cookiecutter.project_slug}}/frontend/vitest.setup.ts +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastapi-fullstack
3
- Version: 0.1.5
3
+ Version: 0.1.7
4
4
  Summary: Full-stack FastAPI + Next.js template generator with PydanticAI/LangChain agents, WebSocket streaming, 20+ enterprise integrations, and Logfire/LangSmith observability. Ship AI apps fast. CLI tool to generate production-ready FastAPI + Next.js projects with AI agents, auth, and observability.
5
5
  Project-URL: Homepage, https://github.com/vstorm-co/full-stack-fastapi-nextjs-llm-template
6
6
  Project-URL: Documentation, https://github.com/vstorm-co/full-stack-fastapi-nextjs-llm-template#readme
@@ -21,6 +21,7 @@ Classifier: Topic :: Software Development :: Code Generators
21
21
  Requires-Python: >=3.11
22
22
  Requires-Dist: click>=8.1.0
23
23
  Requires-Dist: cookiecutter>=2.6.0
24
+ Requires-Dist: email-validator>=2.0.0
24
25
  Requires-Dist: pydantic-settings>=2.0.0
25
26
  Requires-Dist: pydantic>=2.0.0
26
27
  Requires-Dist: questionary>=2.0.0
@@ -85,6 +86,10 @@ This template gives you all of that out of the box, with **20+ configurable inte
85
86
  - 🏢 **Enterprise SaaS** - Full auth, admin panel, webhooks, and more
86
87
  - 🚀 **Startups** - Ship fast with production-ready infrastructure
87
88
 
89
+ ### AI-Agent Friendly
90
+
91
+ Generated projects include **CLAUDE.md** and **AGENTS.md** files optimized for AI coding assistants (Claude Code, Codex, Copilot, Cursor, Zed). Following [progressive disclosure](https://humanlayer.dev/blog/writing-a-good-claude-md) best practices - concise project overview with pointers to detailed docs when needed.
92
+
88
93
  ---
89
94
 
90
95
  ## ✨ Features
@@ -95,7 +100,7 @@ This template gives you all of that out of the box, with **20+ configurable inte
95
100
  - **WebSocket Streaming** - Real-time responses with full event access
96
101
  - **Conversation Persistence** - Save chat history to database
97
102
  - **Custom Tools** - Easily extend agent capabilities
98
- - **Multi-model Support** - OpenAI, Anthropic, and more
103
+ - **Multi-provider Support** - OpenAI, Anthropic, OpenRouter
99
104
  - **Observability** - Logfire for PydanticAI, LangSmith for LangChain
100
105
 
101
106
  ### ⚡ Backend (FastAPI)
@@ -133,32 +138,151 @@ This template gives you all of that out of the box, with **20+ configurable inte
133
138
  <img src="https://raw.githubusercontent.com/vstorm-co/full-stack-fastapi-nextjs-llm-template/main/assets/app_start.gif" alt="FastAPI Fullstack Generator Demo">
134
139
  </p>
135
140
 
136
- ### Screenshots
141
+ ---
137
142
 
138
- #### Chat Interface
139
- <p align="center">
140
- <img src="https://raw.githubusercontent.com/vstorm-co/full-stack-fastapi-nextjs-llm-template/main/assets/new_chat_light.png" alt="Chat Interface - Light Mode"><br><br>
141
- <img src="https://raw.githubusercontent.com/vstorm-co/full-stack-fastapi-nextjs-llm-template/main/assets/new_chat_dark.png" alt="Chat Interface - Dark Mode">
142
- </p>
143
+ ## 🚀 Quick Start
143
144
 
144
- #### Authentication
145
- <p align="center">
146
- <img src="https://raw.githubusercontent.com/vstorm-co/full-stack-fastapi-nextjs-llm-template/main/assets/new_register.png" alt="Register Page with OAuth">
147
- <img src="https://raw.githubusercontent.com/vstorm-co/full-stack-fastapi-nextjs-llm-template/main/assets/new_login.png" alt="Login Page with OAuth"><br><br>
148
- </p>
145
+ ### Installation
149
146
 
150
- #### Observability & Monitoring
151
- <p align="center">
152
- <img src="https://raw.githubusercontent.com/vstorm-co/full-stack-fastapi-nextjs-llm-template/main/assets/logfire.png" alt="Logfire Observability Dashboard"><br><br>
153
- <img src="https://raw.githubusercontent.com/vstorm-co/full-stack-fastapi-nextjs-llm-template/main/assets/langsmith.png" alt="LangSmith Tracing Dashboard"><br><br>
154
- <img src="https://raw.githubusercontent.com/vstorm-co/full-stack-fastapi-nextjs-llm-template/main/assets/flower.png" alt="Celery Flower Task Monitoring">
155
- </p>
147
+ ```bash
148
+ # pip
149
+ pip install fastapi-fullstack
156
150
 
157
- #### Admin & API
158
- <p align="center">
159
- <img src="https://raw.githubusercontent.com/vstorm-co/full-stack-fastapi-nextjs-llm-template/main/assets/admin.png" alt="SQLAdmin Panel"><br><br>
160
- <img src="https://raw.githubusercontent.com/vstorm-co/full-stack-fastapi-nextjs-llm-template/main/assets/docs_2.png" alt="API Documentation">
161
- </p>
151
+ # uv (recommended)
152
+ uv tool install fastapi-fullstack
153
+
154
+ # pipx
155
+ pipx install fastapi-fullstack
156
+ ```
157
+
158
+ ### Create Your Project
159
+
160
+ ```bash
161
+ # Interactive wizard (recommended)
162
+ fastapi-fullstack new
163
+
164
+ # Quick mode with options
165
+ fastapi-fullstack create my_ai_app \
166
+ --database postgresql \
167
+ --auth jwt \
168
+ --frontend nextjs
169
+
170
+ # Use presets for common setups
171
+ fastapi-fullstack create my_ai_app --preset production # Full production setup
172
+ fastapi-fullstack create my_ai_app --preset ai-agent # AI agent with streaming
173
+
174
+ # Minimal project (no extras)
175
+ fastapi-fullstack create my_ai_app --minimal
176
+ ```
177
+
178
+ ### Start Development
179
+
180
+ After generating your project, follow these steps:
181
+
182
+ #### 1. Install dependencies
183
+
184
+ ```bash
185
+ cd my_ai_app
186
+ make install
187
+ ```
188
+
189
+ #### 2. Start the database
190
+
191
+ ```bash
192
+ # PostgreSQL (with Docker)
193
+ make docker-db
194
+ ```
195
+
196
+ #### 3. Create and apply database migrations
197
+
198
+ ```bash
199
+ # Create initial migration (first time only)
200
+ make db-migrate
201
+ # Enter message: "Initial migration"
202
+
203
+ # Apply migrations to create tables
204
+ make db-upgrade
205
+ ```
206
+
207
+ #### 4. Create admin user
208
+
209
+ ```bash
210
+ make create-admin
211
+ # Enter email and password when prompted
212
+ ```
213
+
214
+ #### 5. Start the backend
215
+
216
+ ```bash
217
+ make run
218
+ ```
219
+
220
+ #### 6. Start the frontend (new terminal)
221
+
222
+ ```bash
223
+ cd frontend
224
+ bun install
225
+ bun dev
226
+ ```
227
+
228
+ **Access:**
229
+ - API: http://localhost:8000
230
+ - Docs: http://localhost:8000/docs
231
+ - Admin Panel: http://localhost:8000/admin (login with admin user)
232
+ - Frontend: http://localhost:3000
233
+
234
+ ### Quick Start with Docker
235
+
236
+ Run everything in Docker:
237
+
238
+ ```bash
239
+ make docker-up # Start backend + database
240
+ make docker-frontend # Start frontend
241
+ ```
242
+
243
+ ### Using the Project CLI
244
+
245
+ Each generated project has a CLI named after your `project_slug`. For example, if you created `my_ai_app`:
246
+
247
+ ```bash
248
+ cd backend
249
+
250
+ # The CLI command is: uv run <project_slug> <command>
251
+ uv run my_ai_app server run --reload # Start dev server
252
+ uv run my_ai_app db migrate -m "message" # Create migration
253
+ uv run my_ai_app db upgrade # Apply migrations
254
+ uv run my_ai_app user create-admin # Create admin user
255
+ ```
256
+
257
+ Use `make help` to see all available Makefile shortcuts.
258
+
259
+ ---
260
+
261
+ ## 📸 Screenshots
262
+
263
+ ### Chat Interface
264
+ | Light Mode | Dark Mode |
265
+ |:---:|:---:|
266
+ | ![Chat Light](https://raw.githubusercontent.com/vstorm-co/full-stack-fastapi-nextjs-llm-template/main/assets/new_chat_light.png) | ![Chat Dark](https://raw.githubusercontent.com/vstorm-co/full-stack-fastapi-nextjs-llm-template/main/assets/new_chat_dark.png) |
267
+
268
+ ### Authentication
269
+ | Register | Login |
270
+ |:---:|:---:|
271
+ | ![Register](https://raw.githubusercontent.com/vstorm-co/full-stack-fastapi-nextjs-llm-template/main/assets/new_register.png) | ![Login](https://raw.githubusercontent.com/vstorm-co/full-stack-fastapi-nextjs-llm-template/main/assets/new_login.png) |
272
+
273
+ ### Observability
274
+ | Logfire (PydanticAI) | LangSmith (LangChain) |
275
+ |:---:|:---:|
276
+ | ![Logfire](https://raw.githubusercontent.com/vstorm-co/full-stack-fastapi-nextjs-llm-template/main/assets/logfire.png) | ![LangSmith](https://raw.githubusercontent.com/vstorm-co/full-stack-fastapi-nextjs-llm-template/main/assets/langsmith.png) |
277
+
278
+ ### Admin, Monitoring & API
279
+ | Celery Flower | SQLAdmin Panel |
280
+ |:---:|:---:|
281
+ | ![Flower](https://raw.githubusercontent.com/vstorm-co/full-stack-fastapi-nextjs-llm-template/main/assets/flower.png) | ![Admin](https://raw.githubusercontent.com/vstorm-co/full-stack-fastapi-nextjs-llm-template/main/assets/admin.png) |
282
+
283
+ | API Documentation |
284
+ |:---:|
285
+ | ![API Docs](https://raw.githubusercontent.com/vstorm-co/full-stack-fastapi-nextjs-llm-template/main/assets/docs_2.png) |
162
286
 
163
287
  ---
164
288
 
@@ -226,78 +350,33 @@ See [Architecture Documentation](https://github.com/vstorm-co/full-stack-fastapi
226
350
 
227
351
  ---
228
352
 
229
- ## 🚀 Quick Start
230
-
231
- ### Installation
232
-
233
- ```bash
234
- # pip
235
- pip install fastapi-fullstack
236
-
237
- # uv (recommended)
238
- uv tool install fastapi-fullstack
239
-
240
- # pipx
241
- pipx install fastapi-fullstack
242
- ```
243
-
244
- ### Create Your Project
245
-
246
- ```bash
247
- # Interactive wizard (recommended)
248
- fastapi-fullstack new
249
-
250
- # Quick mode with options
251
- fastapi-fullstack create my_ai_app \
252
- --database postgresql \
253
- --auth jwt \
254
- --frontend nextjs
255
- ```
353
+ ## 🤖 AI Agent
256
354
 
257
- ### Start Development
355
+ Choose between **PydanticAI** or **LangChain** when generating your project, with support for multiple LLM providers:
258
356
 
259
357
  ```bash
260
- cd my_ai_app
358
+ # PydanticAI with OpenAI (default)
359
+ fastapi-fullstack create my_app --ai-agent --ai-framework pydantic_ai
261
360
 
262
- # Backend
263
- cd backend
264
- uv sync
265
- cp .env.example .env
266
- alembic upgrade head
361
+ # PydanticAI with Anthropic
362
+ fastapi-fullstack create my_app --ai-agent --ai-framework pydantic_ai --llm-provider anthropic
267
363
 
268
- # Create admin user
269
- uv run my_ai_app user create --email admin@example.com --password secret123 --superuser
364
+ # PydanticAI with OpenRouter
365
+ fastapi-fullstack create my_app --ai-agent --ai-framework pydantic_ai --llm-provider openrouter
270
366
 
271
- # Start server
272
- uv run uvicorn app.main:app --reload
367
+ # LangChain with OpenAI
368
+ fastapi-fullstack create my_app --ai-agent --ai-framework langchain
273
369
 
274
- # Frontend (new terminal)
275
- cd frontend
276
- bun install
277
- bun dev
370
+ # LangChain with Anthropic
371
+ fastapi-fullstack create my_app --ai-agent --ai-framework langchain --llm-provider anthropic
278
372
  ```
279
373
 
280
- > **Note:** The admin user is required to access the SQLAdmin panel at `/admin`. Use the `--superuser` flag to grant full admin privileges.
281
-
282
- **Access:**
283
- - API: http://localhost:8000
284
- - Docs: http://localhost:8000/docs
285
- - Admin Panel: http://localhost:8000/admin
286
- - Frontend: http://localhost:3000
287
-
288
- ---
289
-
290
- ## 🤖 AI Agent
374
+ ### Supported LLM Providers
291
375
 
292
- Choose between **PydanticAI** or **LangChain** when generating your project:
293
-
294
- ```bash
295
- # PydanticAI (default)
296
- fastapi-fullstack create my_app --ai-agent --ai-framework pydantic_ai
297
-
298
- # LangChain
299
- fastapi-fullstack create my_app --ai-agent --ai-framework langchain
300
- ```
376
+ | Framework | OpenAI | Anthropic | OpenRouter |
377
+ |-----------|:------:|:---------:|:----------:|
378
+ | **PydanticAI** | ✓ | ✓ | ✓ |
379
+ | **LangChain** | ✓ | ✓ | - |
301
380
 
302
381
  ### PydanticAI Integration
303
382
 
@@ -542,7 +621,7 @@ my_project/
542
621
  │ │ ├── schemas/ # Pydantic schemas
543
622
  │ │ ├── repositories/ # Data access layer
544
623
  │ │ ├── services/ # Business logic
545
- │ │ ├── agents/ # AI agents (PydanticAI or LangChain)
624
+ │ │ ├── agents/ # AI agents with centralized prompts
546
625
  │ │ ├── commands/ # Django-style CLI commands
547
626
  │ │ └── worker/ # Background tasks
548
627
  │ ├── cli/ # Project CLI
@@ -560,6 +639,14 @@ my_project/
560
639
  └── README.md
561
640
  ```
562
641
 
642
+ Generated projects include version metadata in `pyproject.toml` for tracking:
643
+
644
+ ```toml
645
+ [tool.fastapi-fullstack]
646
+ generator_version = "0.1.5"
647
+ generated_at = "2024-12-21T10:30:00+00:00"
648
+ ```
649
+
563
650
  ---
564
651
 
565
652
  ## ⚙️ Configuration Options
@@ -572,9 +659,18 @@ my_project/
572
659
  | **Auth** | `jwt`, `api_key`, `both`, `none` | JWT includes user management |
573
660
  | **OAuth** | `none`, `google` | Social login |
574
661
  | **AI Framework** | `pydantic_ai`, `langchain` | Choose your AI agent framework |
662
+ | **LLM Provider** | `openai`, `anthropic`, `openrouter` | OpenRouter only with PydanticAI |
575
663
  | **Background Tasks** | `none`, `celery`, `taskiq`, `arq` | Distributed queues |
576
664
  | **Frontend** | `none`, `nextjs` | Next.js 15 + React 19 |
577
665
 
666
+ ### Presets
667
+
668
+ | Preset | Description |
669
+ |--------|-------------|
670
+ | `--preset production` | Full production setup with Redis, Sentry, Kubernetes, Prometheus |
671
+ | `--preset ai-agent` | AI agent with WebSocket streaming and conversation persistence |
672
+ | `--minimal` | Minimal project with no extras |
673
+
578
674
  ### Integrations
579
675
 
580
676
  Select what you need:
@@ -605,18 +701,13 @@ fastapi-fullstack new
605
701
  | [Observability](https://github.com/vstorm-co/full-stack-fastapi-nextjs-llm-template/blob/main/docs/observability.md) | Logfire integration, tracing, metrics |
606
702
  | [Deployment](https://github.com/vstorm-co/full-stack-fastapi-nextjs-llm-template/blob/main/docs/deployment.md) | Docker, Kubernetes, production setup |
607
703
  | [Development](https://github.com/vstorm-co/full-stack-fastapi-nextjs-llm-template/blob/main/docs/development.md) | Local setup, testing, debugging |
704
+ | [Changelog](https://github.com/vstorm-co/full-stack-fastapi-nextjs-llm-template/blob/main/docs/CHANGELOG.md) | Version history and release notes |
608
705
 
609
706
  ---
610
707
 
611
708
  ## Star History
612
709
 
613
- <a href="https://www.star-history.com/#vstorm-co/full-stack-fastapi-nextjs-llm-template&type=Date&legend=top-left">
614
- <picture>
615
- <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=vstorm-co/full-stack-fastapi-nextjs-llm-template&type=Date&theme=dark" />
616
- <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=vstorm-co/full-stack-fastapi-nextjs-llm-template&type=Date" />
617
- <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=vstorm-co/full-stack-fastapi-nextjs-llm-template&type=Date" />
618
- </picture>
619
- </a>
710
+ [![Star History Chart](https://api.star-history.com/svg?repos=vstorm-co/full-stack-fastapi-nextjs-llm-template&type=date&legend=top-left)](https://www.star-history.com/#vstorm-co/full-stack-fastapi-nextjs-llm-template&type=date&legend=top-left)
620
711
 
621
712
  ---
622
713