fastapi-fullstack 0.2.12__py3-none-any.whl → 0.2.13__py3-none-any.whl

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 (591) hide show
  1. {fastapi_fullstack-0.2.12.dist-info → fastapi_fullstack-0.2.13.dist-info}/METADATA +358 -144
  2. {fastapi_fullstack-0.2.12.dist-info → fastapi_fullstack-0.2.13.dist-info}/RECORD +587 -526
  3. fastapi_gen/cli.py +17 -48
  4. fastapi_gen/config.py +39 -65
  5. fastapi_gen/generator.py +16 -30
  6. fastapi_gen/prompts.py +111 -134
  7. fastapi_gen/template/VARIABLES.md +11 -16
  8. fastapi_gen/template/cookiecutter.json +4 -4
  9. fastapi_gen/template/hooks/post_gen_project.py +34 -102
  10. fastapi_gen/template/{{cookiecutter.project_slug}}/.claude/rules/architecture.md +1 -1
  11. fastapi_gen/template/{{cookiecutter.project_slug}}/.claude/rules/code-style.md +1 -1
  12. fastapi_gen/template/{{cookiecutter.project_slug}}/.claude/skills/agent-tool/SKILL.md +49 -0
  13. fastapi_gen/template/{{cookiecutter.project_slug}}/.claude/skills/alembic-migration/SKILL.md +41 -0
  14. fastapi_gen/template/{{cookiecutter.project_slug}}/.claude/skills/background-task/SKILL.md +79 -0
  15. fastapi_gen/template/{{cookiecutter.project_slug}}/.claude/skills/billing-stripe/SKILL.md +44 -0
  16. fastapi_gen/template/{{cookiecutter.project_slug}}/.claude/skills/channel-bot/SKILL.md +45 -0
  17. fastapi_gen/template/{{cookiecutter.project_slug}}/.claude/skills/frontend-feature/SKILL.md +47 -0
  18. fastapi_gen/template/{{cookiecutter.project_slug}}/.claude/skills/pytest-suite/SKILL.md +57 -0
  19. fastapi_gen/template/{{cookiecutter.project_slug}}/.claude/skills/rag-knowledge/SKILL.md +48 -0
  20. fastapi_gen/template/{{cookiecutter.project_slug}}/.github/workflows/ci.yml +0 -6
  21. fastapi_gen/template/{{cookiecutter.project_slug}}/.gitignore +0 -3
  22. fastapi_gen/template/{{cookiecutter.project_slug}}/.gitlab-ci.yml +0 -6
  23. fastapi_gen/template/{{cookiecutter.project_slug}}/AGENTS.md +3 -5
  24. fastapi_gen/template/{{cookiecutter.project_slug}}/CLAUDE.md +5 -14
  25. fastapi_gen/template/{{cookiecutter.project_slug}}/CONTRIBUTING.md +2 -4
  26. fastapi_gen/template/{{cookiecutter.project_slug}}/ENV_VARS.md +0 -11
  27. fastapi_gen/template/{{cookiecutter.project_slug}}/MANUAL_STEPS.md +0 -13
  28. fastapi_gen/template/{{cookiecutter.project_slug}}/Makefile +2 -26
  29. fastapi_gen/template/{{cookiecutter.project_slug}}/README.md +12 -12
  30. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/.env.example +11 -31
  31. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/alembic/env.py +0 -15
  32. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/alembic/script.py.mako +0 -4
  33. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0000_create_users.py +0 -27
  34. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0001_create_organization_tables.py +1 -48
  35. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0002_backfill_personal_orgs.py +2 -8
  36. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0003_add_is_app_admin.py +1 -1
  37. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0004_5_create_core_tables.py +0 -40
  38. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0004_create_audit_log.py +1 -16
  39. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0005_add_org_id_to_conversations_and_rag.py +1 -39
  40. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0006_backfill_org_id_on_conversations.py +1 -4
  41. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0007_create_knowledge_bases.py +1 -17
  42. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0008_backfill_default_kbs.py +1 -55
  43. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0009_conv_active_kb_ids.py +1 -7
  44. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0010_org_billing_seats.py +1 -1
  45. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0011_create_plan_price_tables.py +1 -18
  46. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0012_create_subscription_table.py +1 -16
  47. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0013_create_stripe_event_table.py +1 -8
  48. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0014_credits_usage_events.py +1 -35
  49. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0015_create_mv_usage_daily.py +1 -1
  50. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0021_create_items.py +1 -13
  51. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0022_sync_source_org_scope.py +68 -0
  52. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/alembic.ini +0 -4
  53. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/admin.py +4 -29
  54. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/__init__.py +0 -10
  55. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/assistant.py +111 -205
  56. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/deepagents_assistant.py +12 -97
  57. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/langchain_assistant.py +8 -158
  58. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/langgraph_assistant.py +12 -197
  59. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/prompts.py +33 -86
  60. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/pydantic_deep_assistant.py +6 -107
  61. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/__init__.py +9 -16
  62. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/chart_tool.py +39 -0
  63. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/code_execution.py +5 -233
  64. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/fetch_url.py +3 -10
  65. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/rag_tool.py +32 -153
  66. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/research.py +3 -0
  67. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/web_search.py +1 -15
  68. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/{tools/datetime_tool.py → utils.py} +2 -2
  69. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/deps.py +58 -472
  70. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/exception_handlers.py +4 -5
  71. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/__init__.py +12 -34
  72. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/admin_conversations.py +3 -158
  73. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/admin_ratings.py +6 -193
  74. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/admin_users.py +33 -94
  75. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/agent.py +25 -46
  76. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/auth.py +3 -19
  77. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/billing.py +27 -183
  78. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/channels.py +3 -240
  79. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/conversations.py +64 -886
  80. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/files.py +6 -58
  81. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/health.py +4 -54
  82. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/invitations.py +0 -83
  83. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/items.py +1 -47
  84. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/knowledge_bases.py +135 -219
  85. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/me_slash_commands.py +0 -34
  86. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/members.py +0 -100
  87. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/oauth.py +2 -90
  88. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/org_integrations.py +128 -0
  89. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/organizations.py +35 -225
  90. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/projects.py +0 -46
  91. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/rag.py +114 -31
  92. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/sessions.py +1 -82
  93. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/slack_webhook.py +1 -11
  94. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/telegram_webhook.py +1 -67
  95. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/users.py +12 -236
  96. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/webhooks.py +0 -310
  97. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/versioning.py +0 -50
  98. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/commands/__init__.py +0 -1
  99. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/commands/channel.py +6 -113
  100. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/commands/cleanup.py +5 -42
  101. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/commands/create_app_admin.py +2 -67
  102. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/commands/rag.py +55 -162
  103. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/commands/seed.py +6 -89
  104. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/commands/sync_stripe_plans.py +2 -125
  105. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/core/audit.py +3 -77
  106. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/core/config.py +13 -98
  107. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/core/crypto.py +39 -0
  108. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/core/csrf.py +0 -13
  109. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/core/exceptions.py +2 -8
  110. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/core/logfire_setup.py +1 -19
  111. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/core/logging.py +0 -4
  112. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/core/middleware.py +2 -5
  113. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/core/oauth.py +0 -1
  114. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/core/rate_limit.py +0 -5
  115. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/core/sanitize.py +0 -24
  116. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/core/security.py +0 -1
  117. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/__init__.py +0 -2
  118. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/base.py +0 -5
  119. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/__init__.py +1 -5
  120. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/audit_log.py +2 -95
  121. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/channel_bot.py +2 -143
  122. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/channel_identity.py +2 -129
  123. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/channel_session.py +2 -172
  124. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/chat_file.py +2 -55
  125. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/conversation.py +2 -360
  126. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/conversation_share.py +2 -152
  127. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/credit_transaction.py +2 -105
  128. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/item.py +1 -18
  129. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/knowledge_base.py +2 -140
  130. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/message_rating.py +2 -158
  131. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/organization.py +2 -367
  132. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/plan.py +2 -165
  133. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/project.py +2 -228
  134. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/rag_document.py +2 -106
  135. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/session.py +2 -139
  136. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/stripe_event.py +2 -49
  137. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/subscription.py +10 -78
  138. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/sync_log.py +2 -65
  139. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/sync_source.py +33 -64
  140. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/user.py +2 -220
  141. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/user_slash_command.py +2 -113
  142. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/webhook.py +2 -254
  143. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/session.py +32 -97
  144. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/todo_pool.py +0 -26
  145. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/main.py +118 -206
  146. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/repositories/__init__.py +6 -8
  147. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/repositories/channel_bot.py +0 -253
  148. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/repositories/channel_identity.py +0 -179
  149. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/repositories/channel_session.py +1 -247
  150. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/repositories/chat_file.py +10 -74
  151. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/repositories/conversation.py +16 -921
  152. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/repositories/conversation_share.py +0 -238
  153. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/repositories/credit_transaction.py +0 -100
  154. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/repositories/invitation.py +1 -189
  155. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/repositories/item.py +1 -67
  156. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/repositories/knowledge_base.py +8 -186
  157. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/repositories/member.py +1 -187
  158. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/repositories/message_rating.py +1 -434
  159. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/repositories/organization.py +12 -289
  160. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/repositories/plan.py +0 -70
  161. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/repositories/project.py +0 -396
  162. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/repositories/rag_document.py +11 -122
  163. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/repositories/session.py +0 -204
  164. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/repositories/stripe_event.py +0 -61
  165. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/repositories/subscription.py +3 -105
  166. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/repositories/sync_log.py +5 -95
  167. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/repositories/sync_source.py +20 -147
  168. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/repositories/usage_event.py +0 -343
  169. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/repositories/user.py +6 -357
  170. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/repositories/user_slash_command.py +0 -86
  171. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/repositories/webhook.py +0 -251
  172. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/schemas/__init__.py +1 -1
  173. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/schemas/base.py +19 -2
  174. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/schemas/billing.py +27 -52
  175. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/schemas/channel_bot.py +2 -50
  176. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/schemas/conversation.py +5 -84
  177. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/schemas/conversation_share.py +11 -45
  178. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/schemas/file.py +0 -10
  179. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/schemas/item.py +1 -8
  180. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/schemas/knowledge_base.py +0 -8
  181. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/schemas/message_rating.py +0 -22
  182. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/schemas/organization.py +10 -38
  183. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/schemas/project.py +0 -17
  184. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/schemas/rag.py +34 -19
  185. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/schemas/session.py +4 -10
  186. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/schemas/sync_source.py +24 -12
  187. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/schemas/token.py +4 -4
  188. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/schemas/user.py +31 -8
  189. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/schemas/user_slash_command.py +0 -6
  190. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/schemas/webhook.py +11 -20
  191. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/admin.py +24 -74
  192. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/agent.py +8 -147
  193. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/agent_invocation.py +48 -311
  194. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/agent_session.py +185 -590
  195. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/anomaly_detection.py +7 -145
  196. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/billing/checkout_service.py +0 -154
  197. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/billing/credit_service.py +8 -193
  198. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/billing/facade.py +83 -190
  199. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/billing/handlers/customer_events.py +0 -54
  200. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/billing/handlers/invoice_events.py +4 -142
  201. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/billing/handlers/payment_events.py +0 -46
  202. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/billing/handlers/subscription_events.py +0 -298
  203. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/billing/pricing.py +0 -2
  204. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/billing/stripe_client.py +1 -74
  205. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/billing/subscription_service.py +5 -108
  206. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/billing/webhook_handler.py +9 -107
  207. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/channel_bot.py +0 -293
  208. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/channels/base.py +0 -2
  209. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/channels/chart_render.py +132 -0
  210. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/channels/router.py +9 -260
  211. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/channels/slack.py +3 -27
  212. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/channels/telegram.py +3 -24
  213. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/conversation.py +50 -1329
  214. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/conversation_share.py +0 -323
  215. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/email/__init__.py +1 -2
  216. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/email/service.py +4 -22
  217. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/file_upload.py +42 -288
  218. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/invitation.py +1 -405
  219. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/item.py +1 -43
  220. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/knowledge_base.py +83 -390
  221. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/member.py +4 -225
  222. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/message_rating.py +20 -855
  223. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/organization.py +33 -213
  224. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/project.py +1 -387
  225. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/rag/config.py +2 -18
  226. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/rag/connectors/__init__.py +3 -1
  227. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/rag/connectors/google_drive.py +43 -42
  228. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/rag/connectors/s3.py +49 -32
  229. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/rag/documents.py +15 -64
  230. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/rag/embeddings.py +40 -130
  231. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/rag/image_describer.py +17 -78
  232. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/rag/ingestion.py +37 -56
  233. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/rag/models.py +14 -14
  234. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/rag/reranker.py +95 -228
  235. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/rag/retrieval.py +42 -137
  236. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/rag/sources/base.py +2 -3
  237. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/rag/sources/google_drive.py +1 -2
  238. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/rag/sources/s3.py +1 -1
  239. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/rag/vectorstore.py +88 -48
  240. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/rag_document.py +21 -222
  241. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/rag_status.py +20 -12
  242. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/rag_sync.py +45 -151
  243. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/rate_limit/rules.py +0 -1
  244. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/rate_limit/service.py +2 -7
  245. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/rate_limit/storage.py +3 -1
  246. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/research.py +51 -22
  247. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/session.py +0 -268
  248. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/sync_source.py +134 -217
  249. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/usage.py +3 -130
  250. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/user.py +68 -219
  251. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/user_slash_command.py +0 -135
  252. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/webhook.py +6 -396
  253. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/worker/background/channel.py +0 -13
  254. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/worker/background/rag.py +8 -4
  255. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/worker/prefect_app.py +87 -0
  256. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/worker/taskiq_app.py +0 -5
  257. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/__init__.py +46 -2
  258. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/cleanup_tasks.py +19 -1
  259. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/email_tasks.py +26 -1
  260. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/rag_tasks.py +113 -112
  261. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/cli/commands.py +17 -184
  262. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/pyproject.toml +13 -51
  263. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/api/test_auth.py +9 -16
  264. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/api/test_exceptions.py +2 -8
  265. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/api/test_health.py +0 -29
  266. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/api/test_openapi.py +3 -3
  267. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/api/test_users.py +1 -7
  268. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/conftest.py +1 -31
  269. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/test_admin.py +15 -19
  270. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/test_agents.py +2 -2
  271. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/test_chart_tool.py +4 -4
  272. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/test_commands.py +7 -16
  273. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/test_conversation_kb_toggle.py +3 -79
  274. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/test_core.py +15 -15
  275. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/test_fetch_url.py +0 -7
  276. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/test_kb_scoping.py +4 -152
  277. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/test_migrations.py +18 -7
  278. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/test_rbac_teams.py +3 -119
  279. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/test_repositories.py +2 -74
  280. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/test_repositories_teams.py +5 -189
  281. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/test_services.py +0 -161
  282. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/test_services_conversation.py +4 -30
  283. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/test_services_members.py +4 -147
  284. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/test_services_organizations.py +6 -98
  285. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/test_stripe_seats.py +4 -103
  286. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/test_tenant_isolation.py +3 -115
  287. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/test_web_search.py +0 -6
  288. fastapi_gen/template/{{cookiecutter.project_slug}}/docker-compose.dev.yml +54 -64
  289. fastapi_gen/template/{{cookiecutter.project_slug}}/docker-compose.prod.yml +0 -37
  290. fastapi_gen/template/{{cookiecutter.project_slug}}/docker-compose.yml +58 -67
  291. fastapi_gen/template/{{cookiecutter.project_slug}}/docs/adding_features.md +0 -2
  292. fastapi_gen/template/{{cookiecutter.project_slug}}/docs/architecture.md +2 -2
  293. fastapi_gen/template/{{cookiecutter.project_slug}}/docs/commands.md +25 -8
  294. fastapi_gen/template/{{cookiecutter.project_slug}}/docs/configuration.md +1 -25
  295. fastapi_gen/template/{{cookiecutter.project_slug}}/docs/deploy.md +6 -6
  296. fastapi_gen/template/{{cookiecutter.project_slug}}/docs/file-processing.md +0 -2
  297. fastapi_gen/template/{{cookiecutter.project_slug}}/docs/howto/add-api-endpoint.md +0 -53
  298. fastapi_gen/template/{{cookiecutter.project_slug}}/docs/howto/add-background-task.md +38 -0
  299. fastapi_gen/template/{{cookiecutter.project_slug}}/docs/permissions.md +0 -2
  300. fastapi_gen/template/{{cookiecutter.project_slug}}/docs/testing.md +10 -4
  301. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/README.md +50 -623
  302. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/content/blog/shipping-ai-saas-template.mdx +1 -1
  303. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/eslint.config.mjs +40 -1
  304. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/messages/en.json +115 -4
  305. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/messages/pl.json +115 -4
  306. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/next.config.ts +8 -2
  307. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/package.json +10 -9
  308. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/public/.gitkeep +0 -0
  309. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(auth)/layout.tsx +2 -11
  310. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(auth)/reset-password/page.tsx +1 -1
  311. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/admin/conversations/page.tsx +146 -152
  312. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/admin/layout.tsx +25 -30
  313. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/admin/page.tsx +65 -142
  314. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/admin/ratings/page.tsx +185 -318
  315. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/admin/ratings/ratings-chart.tsx +95 -0
  316. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/admin/stripe-events/page.tsx +243 -335
  317. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/admin/system/page.tsx +94 -115
  318. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/admin/users/page.tsx +182 -229
  319. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/billing/credits/page.tsx +142 -151
  320. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/billing/credits/usage-spark.tsx +31 -0
  321. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/billing/invoices/page.tsx +96 -11
  322. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/billing/layout.tsx +31 -0
  323. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/billing/page.tsx +101 -228
  324. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/billing/payment-methods/page.tsx +5 -11
  325. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/billing/subscription/page.tsx +24 -39
  326. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/billing/usage/page.tsx +46 -94
  327. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/billing/usage/usage-charts.tsx +113 -0
  328. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/chat/page.tsx +1 -1
  329. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/dashboard/page.tsx +115 -334
  330. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/dev/components/page.tsx +136 -0
  331. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/error.tsx +33 -0
  332. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/invitations/[token]/page.tsx +1 -1
  333. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/kb/[id]/page.tsx +453 -467
  334. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/kb/page.tsx +111 -67
  335. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/layout.tsx +1 -1
  336. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/orgs/[id]/integrations/page.tsx +252 -0
  337. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/orgs/[id]/members/page.tsx +176 -114
  338. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/orgs/page.tsx +86 -91
  339. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/rag/page.tsx +513 -558
  340. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/account/page.tsx +45 -67
  341. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/appearance/page.tsx +13 -25
  342. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/layout.tsx +20 -17
  343. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/notifications/page.tsx +27 -50
  344. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/page.tsx +3 -1
  345. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/profile/page.tsx +42 -85
  346. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/slash-commands/page.tsx +12 -7
  347. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/about/page.tsx +10 -19
  348. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/auth/magic-link/page.tsx +1 -1
  349. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/blog/[slug]/page.tsx +17 -18
  350. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/blog/page.tsx +17 -24
  351. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/changelog/page.tsx +9 -16
  352. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/community/page.tsx +2 -2
  353. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/contact/page.tsx +8 -8
  354. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/error.tsx +15 -14
  355. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/help/page.tsx +2 -6
  356. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/layout.tsx +6 -3
  357. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/legal/cookies/page.tsx +2 -11
  358. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/legal/privacy/page.tsx +1 -5
  359. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/legal/terms/page.tsx +1 -5
  360. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/onboarding/[step]/page.tsx +1 -4
  361. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/onboarding/page.tsx +18 -2
  362. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/page.tsx +114 -37
  363. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/pricing/page.tsx +7 -12
  364. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/security/page.tsx +7 -13
  365. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/shared/[token]/page.tsx +3 -1
  366. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/login/route.ts +0 -3
  367. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/me/route.ts +58 -21
  368. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/refresh/route.ts +0 -2
  369. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/billing/me/[...path]/route.ts +2 -4
  370. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/contact/route.ts +5 -11
  371. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/tool-stats/route.ts +3 -4
  372. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/kb/[id]/documents/[docId]/download/route.ts +37 -0
  373. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/kb/[id]/documents/route.ts +8 -12
  374. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/kb/[id]/sync-sources/[sourceId]/trigger/route.ts +4 -4
  375. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/kb/[id]/sync-sources/connectors/route.ts +3 -4
  376. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/me/slash-commands/[id]/route.ts +2 -8
  377. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/orgs/[id]/avatar/route.ts +2 -8
  378. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/orgs/[id]/integrations/[sourceId]/route.ts +27 -0
  379. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/orgs/[id]/integrations/[sourceId]/trigger/route.ts +27 -0
  380. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/orgs/[id]/integrations/connectors/route.ts +26 -0
  381. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/orgs/[id]/integrations/route.ts +49 -0
  382. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/users/avatar/[userId]/route.ts +1 -1
  383. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/agent/models/route.ts +0 -1
  384. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/collections/[name]/info/route.ts +0 -2
  385. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/collections/[name]/route.ts +0 -2
  386. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/collections/route.ts +0 -2
  387. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/search/route.ts +0 -1
  388. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/sync/connectors/route.ts +0 -1
  389. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/sync/sources/[sourceId]/route.ts +0 -3
  390. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/sync/sources/[sourceId]/trigger/route.ts +0 -1
  391. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/sync/sources/route.ts +0 -2
  392. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/apple-icon.tsx +17 -19
  393. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/globals.css +94 -18
  394. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/icon.tsx +17 -19
  395. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/not-found.tsx +12 -13
  396. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/opengraph-image.tsx +77 -81
  397. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/providers.tsx +10 -1
  398. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/sitemap.ts +0 -1
  399. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/admin/admin-nav.tsx +10 -14
  400. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/admin/user-detail-drawer.tsx +4 -18
  401. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/auth/forgot-password-form.tsx +1 -2
  402. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/auth/login-form.tsx +3 -14
  403. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/auth/oauth-buttons.tsx +10 -0
  404. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/auth/register-form.tsx +5 -30
  405. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/auth/reset-password-form.tsx +2 -12
  406. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/billing/credits-panel.tsx +2 -1
  407. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/billing/invoices-panel.tsx +2 -7
  408. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/billing/seat-selector-dialog.tsx +6 -11
  409. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/billing/subscription-panel.tsx +2 -4
  410. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/billing/usage-gauge.tsx +13 -21
  411. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/blog/mdx-components.tsx +4 -0
  412. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chart-message.impl.tsx +391 -0
  413. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chart-message.tsx +21 -306
  414. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chat-container.tsx +68 -57
  415. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chat-controls.tsx +11 -34
  416. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chat-empty-state.tsx +23 -78
  417. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chat-input.tsx +68 -24
  418. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/conversation-sidebar.tsx +17 -23
  419. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/copy-button.tsx +3 -9
  420. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/file-preview-card.tsx +476 -0
  421. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/file-preview-panel.tsx +10 -494
  422. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/index.ts +1 -0
  423. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/markdown-content.impl.tsx +229 -0
  424. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/markdown-content.tsx +26 -202
  425. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/message-item.tsx +169 -109
  426. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/message-list.tsx +1 -55
  427. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/pending-messages.tsx +1 -1
  428. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/rating-buttons.tsx +1 -10
  429. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/research-panel.tsx +92 -184
  430. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/share-dialog.tsx +9 -15
  431. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/slash-commands.ts +1 -3
  432. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/sources-panel.tsx +200 -0
  433. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/subagent-feed.tsx +109 -0
  434. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/subagent-panel.tsx +156 -0
  435. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-approval-dialog.tsx +0 -3
  436. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-call-card.tsx +46 -700
  437. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-results/ask-user.tsx +55 -0
  438. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-results/datetime.tsx +32 -0
  439. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-results/generic.tsx +127 -0
  440. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-results/rag.tsx +191 -0
  441. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-results/run-python.tsx +89 -0
  442. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-results/skills.tsx +35 -0
  443. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-results/web-search.tsx +86 -0
  444. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/active-sessions.tsx +9 -15
  445. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/onboarding-banner.tsx +10 -11
  446. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/page-header.tsx +86 -0
  447. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/page-hero.tsx +2 -4
  448. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/page-tabs.tsx +51 -0
  449. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/quick-actions.tsx +1 -1
  450. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/recent-activity.tsx +7 -19
  451. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/segmented-control.tsx +1 -6
  452. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/stat-card-spark.tsx +39 -0
  453. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/stat-card.tsx +55 -69
  454. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/subscription-chip.tsx +5 -7
  455. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/team-summary.tsx +7 -9
  456. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/tool-usage.tsx +2 -3
  457. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/top-models.tsx +4 -4
  458. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/usage-timeline-chart.tsx +110 -0
  459. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/usage-timeline.tsx +14 -79
  460. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/kb/create-kb-dialog.tsx +6 -7
  461. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/kb/file-viewer.tsx +330 -0
  462. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/kb/index.ts +1 -1
  463. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/kb/kb-list.tsx +5 -3
  464. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/language-switcher.tsx +68 -4
  465. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/breadcrumb.tsx +0 -1
  466. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/command-palette.tsx +123 -22
  467. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/header.tsx +284 -87
  468. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/mobile-tab-bar.tsx +11 -12
  469. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/not-found-back-button.tsx +14 -0
  470. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/sidebar.tsx +12 -10
  471. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/legal/cookies-content.tsx +45 -21
  472. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/legal/privacy-content.tsx +42 -34
  473. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/legal/terms-content.tsx +60 -60
  474. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/animated-number.tsx +0 -1
  475. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/brand-icon.tsx +46 -59
  476. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/case-study.tsx +71 -0
  477. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/code-preview.tsx +2 -4
  478. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/comparison-table.tsx +88 -0
  479. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/contact-form.tsx +17 -7
  480. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/cookie-banner.tsx +12 -6
  481. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/data-flow-diagram.tsx +25 -31
  482. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/enterprise-security.tsx +105 -0
  483. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/faq-accordion.tsx +7 -3
  484. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/feature-bento.tsx +137 -0
  485. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/feature-glyph.tsx +86 -12
  486. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/feature-mockup.tsx +17 -10
  487. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/feature-section.tsx +12 -10
  488. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/final-cta.tsx +2 -9
  489. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/footer-config.ts +176 -11
  490. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/hero-demo.tsx +25 -40
  491. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/hero.tsx +68 -14
  492. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/how-it-works.tsx +20 -7
  493. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/integrations-grid.tsx +68 -0
  494. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/legal-page.tsx +6 -11
  495. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/logos-strip.tsx +14 -6
  496. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/marketing-footer.tsx +96 -80
  497. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/marketing-page-layout.tsx +6 -8
  498. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/marquee.tsx +1 -1
  499. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/outcomes-band.tsx +45 -0
  500. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/pill-nav.tsx +339 -44
  501. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/pricing-teaser.tsx +18 -13
  502. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/reveal.tsx +2 -2
  503. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/section.tsx +0 -1
  504. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/smooth-scroll.tsx +56 -0
  505. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/testimonial-carousel.tsx +1 -1
  506. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/testimonial-grid.tsx +16 -5
  507. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/onboarding/onboarding-shell.tsx +28 -15
  508. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/onboarding/onboarding-state.ts +37 -0
  509. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/onboarding/step-agent.tsx +14 -23
  510. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/onboarding/step-data.tsx +12 -17
  511. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/onboarding/step-done.tsx +14 -22
  512. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/onboarding/step-team.tsx +11 -18
  513. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/onboarding/step-welcome.tsx +9 -14
  514. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/rag/drag-drop-overlay.tsx +2 -3
  515. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/rag/sync-source-logs.tsx +125 -0
  516. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/rag/sync-source-wizard.tsx +306 -120
  517. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/seo/json-ld.tsx +1 -4
  518. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/settings/brand-color-picker.tsx +2 -4
  519. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/settings/settings-nav.tsx +7 -8
  520. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/settings/settings-section.tsx +24 -5
  521. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/settings/slash-commands-manager.tsx +2 -10
  522. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/states/empty-state.tsx +15 -20
  523. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/states/error-state.tsx +1 -1
  524. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/states/loading-state.tsx +6 -3
  525. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/teams/create-org-dialog.tsx +3 -4
  526. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/teams/invite-member-dialog.tsx +4 -4
  527. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/teams/org-switcher.tsx +7 -2
  528. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/theme/theme-provider.tsx +0 -2
  529. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/alert.tsx +13 -17
  530. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/button.tsx +2 -0
  531. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/confirm-dialog.tsx +99 -0
  532. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/data-table.tsx +134 -0
  533. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/form-field.tsx +79 -0
  534. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/icon-button.tsx +23 -0
  535. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/index.ts +7 -2
  536. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/label.tsx +3 -0
  537. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/question-prompt.tsx +0 -1
  538. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/section-heading.tsx +43 -0
  539. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/hooks/index.ts +4 -0
  540. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-admin-conversations.ts +4 -3
  541. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-admin-users.ts +11 -1
  542. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-auth.ts +66 -19
  543. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-billing.ts +56 -89
  544. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-chat.ts +50 -136
  545. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-conversation-shares.ts +105 -65
  546. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-conversations.ts +109 -74
  547. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-copy-to-clipboard.ts +20 -0
  548. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-invitations.ts +43 -25
  549. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-knowledge-bases.ts +179 -42
  550. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-members.ts +40 -21
  551. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-org-integrations.ts +96 -0
  552. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-organizations.ts +55 -22
  553. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-slash-commands.ts +46 -34
  554. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-websocket.ts +102 -12
  555. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/i18n.ts +0 -3
  556. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/active-route.ts +34 -0
  557. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/admin-auth.ts +2 -8
  558. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/api-client.ts +62 -8
  559. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/blog.ts +1 -3
  560. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/changelog.ts +21 -7
  561. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/chat-sources.ts +70 -0
  562. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/constants.ts +27 -13
  563. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/query-keys.ts +62 -0
  564. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/rag-api.ts +63 -7
  565. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/seo.ts +4 -1
  566. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/teaser-plans.ts +2 -2
  567. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/utils.ts +80 -14
  568. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/middleware.ts +0 -5
  569. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/stores/auth-store.ts +5 -0
  570. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/stores/chat-store.ts +2 -9
  571. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/stores/conversation-store.ts +4 -29
  572. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/stores/index.ts +1 -0
  573. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/stores/kb-selection-store.ts +1 -3
  574. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/stores/org-store.ts +3 -30
  575. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/stores/research-store.ts +24 -2
  576. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/stores/sources-panel-store.ts +20 -0
  577. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/types/api.ts +0 -4
  578. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/types/auth.ts +0 -4
  579. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/types/chat.ts +27 -46
  580. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/types/conversation.ts +2 -8
  581. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/types/index.ts +0 -7
  582. fastapi_gen/template/{{cookiecutter.project_slug}}/kubernetes/configmap.yaml +0 -2
  583. fastapi_gen/template/{{cookiecutter.project_slug}}/kubernetes/deployment.yaml +0 -9
  584. fastapi_gen/template/{{cookiecutter.project_slug}}/kubernetes/secret.yaml +0 -2
  585. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/crewai_assistant.py +0 -756
  586. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/antv_chart.py +0 -146
  587. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/chart_render.py +0 -125
  588. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/map_tool.py +0 -102
  589. {fastapi_fullstack-0.2.12.dist-info → fastapi_fullstack-0.2.13.dist-info}/WHEEL +0 -0
  590. {fastapi_fullstack-0.2.12.dist-info → fastapi_fullstack-0.2.13.dist-info}/entry_points.txt +0 -0
  591. {fastapi_fullstack-0.2.12.dist-info → fastapi_fullstack-0.2.13.dist-info}/licenses/LICENSE +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastapi-fullstack
3
- Version: 0.2.12
3
+ Version: 0.2.13
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-ai-agent-template
6
6
  Project-URL: Documentation, https://github.com/vstorm-co/full-stack-ai-agent-template#readme
@@ -25,7 +25,7 @@ Requires-Dist: click>=8.3.0
25
25
  Requires-Dist: cookiecutter>=2.7.0
26
26
  Requires-Dist: email-validator>=2.3.0
27
27
  Requires-Dist: httpx>=0.28.1
28
- Requires-Dist: pydantic-settings>=2.13.0
28
+ Requires-Dist: pydantic-settings>=2.14.2
29
29
  Requires-Dist: pydantic>=2.13.0
30
30
  Requires-Dist: pytest-asyncio>=1.3.0
31
31
  Requires-Dist: pytest>=9.0.3
@@ -45,10 +45,6 @@ Requires-Dist: mkdocs>=1.6.1; extra == 'docs'
45
45
  Requires-Dist: pymdown-extensions>=10.20; extra == 'docs'
46
46
  Description-Content-Type: text/markdown
47
47
 
48
- <p align="center">
49
- <img src="https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new2/chat_demo.gif" alt="Live chat — web search, tool calls, and chart generation" width="100%">
50
- </p>
51
-
52
48
  <h1 align="center">Full-Stack AI Agent Template</h1>
53
49
 
54
50
  <p align="center">
@@ -79,7 +75,11 @@ Description-Content-Type: text/markdown
79
75
  </p>
80
76
 
81
77
  <p align="center">
82
- <b>🤖 6 AI Agent Frameworks</b> <i>(PydanticAI, PydanticDeep, LangChain, LangGraph, CrewAI, DeepAgents)</i>
78
+ <img src="https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new3/chat_demo_with_tasks.gif" alt="AI chat with live plan & task checklist" width="100%">
79
+ </p>
80
+
81
+ <p align="center">
82
+ <b>🤖 5 AI Agent Frameworks</b> <i>(PydanticAI, PydanticDeep, LangChain, LangGraph, DeepAgents)</i>
83
83
  <br>
84
84
  <b>📄 RAG Pipeline</b> <i>(Milvus, Qdrant, pgvector, ChromaDB)</i>
85
85
  <br>
@@ -150,50 +150,23 @@ uv tool install fastapi-fullstack
150
150
  pipx install fastapi-fullstack
151
151
  ```
152
152
 
153
- ### Create Your Project
153
+ ### From zero to a running app
154
+
155
+ Three steps. The wizard scaffolds the project, `make bootstrap` brings up the whole backend, and the frontend runs with a single command:
154
156
 
155
157
  ```bash
156
- # Interactive wizard (recommendedruns by default)
158
+ # 1. Generate your project just answer the wizard's prompts
157
159
  fastapi-fullstack
158
160
 
159
- # Quick mode with options
160
- fastapi-fullstack create my_ai_app \
161
- --database postgresql \
162
- --frontend nextjs
163
-
164
- # Use presets for common setups
165
- fastapi-fullstack create my_ai_app --preset production # Full production setup
166
- fastapi-fullstack create my_ai_app --preset ai-agent # AI agent with streaming
167
-
168
- # Minimal project (no extras)
169
- fastapi-fullstack create my_ai_app --minimal
170
- ```
171
-
172
- ### Start Development
173
-
174
- #### First time on a fresh clone
175
-
176
- ```bash
161
+ # 2. Backend + PostgreSQL up, migrations applied, default admin seeded
177
162
  cd my_ai_app
178
- make bootstrap # = make dev + make seed
179
- ```
180
-
181
- That's it — backend, database, Redis, vector store (if RAG), Celery (if selected) come up, migrations are applied, and a default admin is seeded.
163
+ make bootstrap
182
164
 
183
- #### Day-to-day
184
-
185
- ```bash
186
- make dev # idempotent: build + up + migrate. Re-run anytime.
165
+ # 3. Frontend (in a second terminal)
166
+ cd frontend && bun install && bun dev
187
167
  ```
188
168
 
189
- `make dev` skips admin seeding (that's a one-shot in `make seed`) so it stays cheap to run after every code/config change.
190
-
191
- **Behind the scenes (`make dev`):**
192
-
193
- 1. Builds the backend Docker image (cached after first run)
194
- 2. Starts services via `docker-compose.dev.yml` (hot-reload bind mounts)
195
- 3. Polls Postgres until ready (`pg_isready` — no fixed sleeps)
196
- 4. Applies pending Alembic migrations (no-op if already at head)
169
+ > **What `make bootstrap` does** (= `make dev` + `make seed`): builds the backend Docker image, starts the stack via `docker-compose.dev.yml`, waits for PostgreSQL (`pg_isready`), applies Alembic migrations, and seeds `admin@example.com` / `admin123`. It's idempotent — re-run it anytime.
197
170
 
198
171
  **Then access:**
199
172
 
@@ -215,6 +188,28 @@ make dev-rebuild # force-rebuild backend image (after pyproject.toml changes)
215
188
  make dev-frontend # start the Next.js container
216
189
  ```
217
190
 
191
+ After the first `make bootstrap`, day-to-day you just run `make dev` (skips admin re-seed). Run `make help` inside the project for the full list.
192
+
193
+ <details>
194
+ <summary><b>Other ways to generate (flags, presets, minimal)</b></summary>
195
+
196
+ Skip the wizard and pass options directly:
197
+
198
+ ```bash
199
+ # Non-interactive with explicit options
200
+ fastapi-fullstack create my_ai_app --database postgresql --frontend nextjs
201
+
202
+ # Presets for common scenarios (run `fastapi-fullstack templates` for the full list)
203
+ fastapi-fullstack create my_ai_app --preset ai-agent # AI agent with streaming
204
+ fastapi-fullstack create my_ai_app --preset production # Full production setup
205
+ fastapi-fullstack create my_ai_app --preset production-saas # SaaS: billing, teams, admin
206
+
207
+ # Bare-bones project (PostgreSQL, no Docker/Redis/CI)
208
+ fastapi-fullstack create my_ai_app --minimal
209
+ ```
210
+
211
+ </details>
212
+
218
213
  ### Environments
219
214
 
220
215
  | `make` target | Compose file | When to use |
@@ -292,156 +287,367 @@ Use `make help` to see all available Makefile shortcuts.
292
287
 
293
288
  ## 🎬 Demo
294
289
 
295
- **CLI generator:**
290
+ **CLI generator** — configure and scaffold a full-stack AI project in under 60 seconds:
296
291
 
297
- <p align="center">
298
- <img src="https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/app_start.gif" alt="FastAPI Fullstack Generator Demo">
299
- </p>
292
+ ![CLI generator demo](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new3/cli_generator_demo_2.gif)
300
293
 
301
- **File upload & RAG ingestion:**
294
+ <table>
295
+ <tr>
296
+ <td width="50%">
302
297
 
303
- <p align="center">
304
- <img src="https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new2/rag_demo.gif" alt="File upload &amp; RAG ingestion" width="100%">
305
- </p>
298
+ **AI chat** — streaming responses, tool calls, reasoning, and ask-user pauses:
299
+
300
+ ![AI chat demo](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new3/chat_demo.gif)
301
+
302
+ </td>
303
+ <td width="50%">
304
+
305
+ **RAG ingestion** — drop a document, watch it get chunked, embedded, and answered against:
306
+
307
+ ![RAG demo](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new3/rag_demo.gif)
308
+
309
+ </td>
310
+ </tr>
311
+ </table>
312
+
313
+ **Generated marketing site** — public landing page with hero, pricing, blog, and legal pages (`enable_marketing_site`):
314
+
315
+ ![Landing demo](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new3/landing.gif)
306
316
 
307
317
  ---
308
318
 
309
319
  ## 📸 Screenshots
310
320
 
311
- ### Marketing Site
321
+ ### AI Chat
322
+
323
+ The chat UI streams responses over WebSocket and renders each tool call as a purpose-built card.
324
+
325
+ <table>
326
+ <tr>
327
+ <td width="50%">
328
+
329
+ **Plan & tasks** — sticky checklist updating live as the agent works through steps.
330
+
331
+ ![Chat plan and tasks](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new3/chat_tasks.png)
332
+
333
+ </td>
334
+ <td width="50%">
335
+
336
+ **Subagents** — live feed and side panel showing each subagent's status and messages.
337
+
338
+ ![Chat subagents](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new3/chat_subagents.png)
339
+
340
+ </td>
341
+ </tr>
342
+ <tr>
343
+ <td width="50%">
344
+
345
+ **Charts** — interactive bar/area/line/pie/scatter charts rendered inline.
346
+
347
+ ![Chat charts](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new3/chat_graphs.png)
348
+
349
+ </td>
350
+ <td width="50%">
351
+
352
+ **Code execution** — `run_python` shows code + stdout/result in a collapsible card.
312
353
 
313
- **Landing Page** Full-page marketing site with hero, features breakdown, testimonials, pricing preview, and FAQ. Generated with the `enable_marketing_site` option.
354
+ ![Chat Python code execution](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new3/chat_python_code.png)
314
355
 
315
- ![Landing Page](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new2/landing_page.png)
356
+ </td>
357
+ </tr>
358
+ <tr>
359
+ <td width="50%">
316
360
 
317
- **Pricing** — Three-tier pricing page (Starter / Pro / Business) with monthly/annual toggle. Pulls live plan data from Stripe when connected; shows template plans otherwise.
361
+ **Ask user** — agent pauses to ask clarifying questions; card keeps the full transcript.
318
362
 
319
- ![Pricing](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new2/pricing.png)
363
+ ![Chat ask-user tool](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new3/chat_ask_user.png)
320
364
 
321
- **Blog** — Engineering blog included out of the box. Posts are MDX files in the repo — no CMS needed. Supports tags, featured posts, and author bylines.
365
+ </td>
366
+ <td width="50%">
322
367
 
323
- ![Blog](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new2/blog.png)
368
+ **Reasoning** — clean thinking view + answered-question history for long agent turns.
324
369
 
325
- **Blog Post** — Individual post view with author card, reading time, and tag badges. Content is plain MDX — edit files and redeploy.
370
+ ![Chat reasoning and answered questions](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new3/chat_answered_questions_and_thinking.png)
326
371
 
327
- ![Blog Post](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new2/blog_post.png)
372
+ </td>
373
+ </tr>
374
+ </table>
328
375
 
329
- ### Auth
376
+ ### Auth & Dashboard
330
377
 
331
- **Login** — Split-screen login with Google OAuth and email/password. Left panel shows a product pitch with a social proof quote. HTTP-only cookie session on submit.
378
+ <table>
379
+ <tr>
380
+ <td width="50%">
332
381
 
333
- ![Login](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new2/login.png)
382
+ **Login** — split-screen with Google OAuth + email/password, HTTP-only cookie session.
334
383
 
335
- **Register** — Same split-screen layout as login. Google sign-up and email/password form with confirm-password field and terms acceptance.
384
+ ![Login](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new3/login.png)
336
385
 
337
- ![Register](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new2/register.png)
386
+ </td>
387
+ <td width="50%">
338
388
 
339
- ### Dashboard
389
+ **Register** — same split-screen layout with confirm-password and terms acceptance.
340
390
 
341
- **Dashboard (light mode)** — Workspace overview showing conversation count, knowledge base vector count, recent activity feed, agent tool call stats, active sessions, and team info. Onboarding banner guides new users through setup in under 2 minutes.
391
+ ![Register](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new3/register.png)
342
392
 
343
- ![Dashboard Light](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new2/dashboard_light.png)
393
+ </td>
394
+ </tr>
395
+ <tr>
396
+ <td width="50%">
344
397
 
345
- **Dashboard (dark mode)** — Same dashboard in dark theme. Theme is saved per-device and can be overridden per-workspace in appearance settings.
398
+ **Dashboard (light)** — stat cards, usage timeline, recent activity, onboarding banner.
346
399
 
347
- ![Dashboard Dark](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new2/dashboard_dark.png)
400
+ ![Dashboard Light](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new3/dashboard_light.png)
348
401
 
349
- ### Teams & Organizations
402
+ </td>
403
+ <td width="50%">
350
404
 
351
- **Workspaces** — List of all organizations the user belongs to. Shows plan tier and role for each. Users can switch active workspace or create a new organization.
405
+ **Dashboard (dark)** — same view in dark theme; saved per-device.
352
406
 
353
- ![Organizations](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new2/organizations.png)
407
+ ![Dashboard Dark](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new3/dashboard_dark.png)
354
408
 
355
- **Team Management** — Organization detail page with workspace profile (name + avatar), member list with roles, and an "Invite teammate" button. Owners and admins can adjust roles inline.
409
+ </td>
410
+ </tr>
411
+ </table>
356
412
 
357
- ![Organization Details](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new2/organization_details.png)
413
+ ### Teams & Knowledge Bases
358
414
 
359
- ### Knowledge Bases
415
+ <table>
416
+ <tr>
417
+ <td width="50%">
360
418
 
361
- **Knowledge Bases** — List of RAG knowledge bases scoped to the current workspace. Each base shows its collection slug. Users can create new bases, toggle which ones are active in chat, and upload documents through the UI.
419
+ **Workspaces** — list of all orgs with plan tier and role; switch or create new workspace.
362
420
 
363
- ![Knowledge Bases](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new2/knowledge_bases.png)
421
+ ![Organizations](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new3/organizations_light.png)
364
422
 
365
- ### Billing
423
+ </td>
424
+ <td width="50%">
366
425
 
367
- **Billing** — Workspace billing dashboard showing current plan, storage usage (chat attachments + indexed RAG documents), quick links to usage breakdown, invoices, payment methods, and subscription management. "Manage in Stripe" opens the Stripe customer portal.
426
+ **Team management** — workspace profile, member list with roles, invite button.
368
427
 
369
- ![Billing](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new2/billing.png)
428
+ ![Organization Details](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new3/organization_light.png)
429
+
430
+ </td>
431
+ </tr>
432
+ <tr>
433
+ <td width="50%">
434
+
435
+ **Knowledge bases** — list of RAG collections; toggle active bases, upload documents.
436
+
437
+ ![Knowledge Bases](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new3/knowledge_bases_light.png)
438
+
439
+ </td>
440
+ <td width="50%">
441
+
442
+ **Documents & sync sources** — preview files, manage Google Drive/S3 connectors, view run logs.
443
+
444
+ ![Knowledge Base Source](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new3/knowledge_base_source_light.png)
445
+
446
+ </td>
447
+ </tr>
448
+ </table>
449
+
450
+ ### Billing & Usage
451
+
452
+ <table>
453
+ <tr>
454
+ <td width="50%">
455
+
456
+ **Billing overview** — current plan, seats, storage usage, Customer Portal link.
457
+
458
+ ![Billing and usage](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new3/billing_and_usage_light.png)
459
+
460
+ </td>
461
+ <td width="50%">
462
+
463
+ **Usage charts** — daily credits-spent + call-count charts, by-model token breakdown.
464
+
465
+ ![Billing usage charts](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new3/billing_usage_light.png)
466
+
467
+ </td>
468
+ </tr>
469
+ <tr>
470
+ <td width="50%">
471
+
472
+ **Credits** — balance, immutable transaction ledger, usage sparkline.
473
+
474
+ ![Billing credits](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new3/billing_credits_light.png)
475
+
476
+ </td>
477
+ <td width="50%">
478
+
479
+ **Subscription & invoices** — plan management, invoice list, payment methods — all via Stripe.
480
+
481
+ ![Billing subscription](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new3/billing_subscription_light.png)
482
+
483
+ </td>
484
+ </tr>
485
+ </table>
370
486
 
371
487
  ### Profile & Settings
372
488
 
373
- **Profile** — Personal info tab: avatar upload, display name, email, and active session list with per-device revoke buttons. Visibility note explains which fields are shown to teammates.
489
+ <table>
490
+ <tr>
491
+ <td width="50%">
374
492
 
375
- ![Profile](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new2/profile.png)
493
+ **Profile** — avatar upload, display name, email, active sessions with per-device revoke.
376
494
 
377
- **Account & Security** — Change password form with strength guidance, "Sign out everywhere" button, and danger zone for permanent account deletion.
495
+ ![Profile](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new3/profile_light.png)
378
496
 
379
- ![Account](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new2/profile_account.png)
497
+ </td>
498
+ <td width="50%">
380
499
 
381
- **Slash Commands** — Customize the `/command` palette in chat. Toggle built-in commands (`/clear`, `/regen`, `/settings`, `/summarize`, `/explain`) and create custom shortcuts that send a stored prompt with a few keystrokes.
500
+ **Account & security** — password change, "sign out everywhere", account deletion zone.
382
501
 
383
- ![Slash Commands](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new2/profile_commands.png)
502
+ ![Account](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new3/account_light.png)
384
503
 
385
- **Appearance** — Theme switcher (light / dark / system) and brand color picker with four presets: Blue (Stripe/Vercel), Green (healthtech), Red (energetic), Orange (B2C), Violet (Anthropic-style). Brand color updates CSS variables across the entire workspace and is saved per-device.
504
+ </td>
505
+ </tr>
506
+ <tr>
507
+ <td width="50%">
386
508
 
387
- ![Appearance](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new2/profile_appearance.png)
509
+ **Slash commands** — toggle built-ins, create custom prompt shortcuts for the chat palette.
388
510
 
389
- **Notification Preferences** — Per-category notification controls with separate toggles for email and in-app delivery. Categories: Billing, Team activity, Security alerts, and Product updates. Preferences stored locally and synced to the backend via `/users/me/notifications`.
511
+ ![Slash Commands](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new3/commands_light.png)
390
512
 
391
- ![Notifications](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new2/profile_notifications.png)
513
+ </td>
514
+ <td width="50%">
515
+
516
+ **Appearance** — light/dark/system theme + brand color picker (5 presets, saved per-device).
517
+
518
+ ![Appearance](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new3/appearance_light.png)
519
+
520
+ </td>
521
+ </tr>
522
+ </table>
392
523
 
393
524
  ### Admin Panel
394
525
 
395
- **Admin Overview** — Workspace-wide metrics (total users, active sessions last 24h, conversation count, MRR) plus a recent activity feed showing all conversations across all users. Requires the `admin` role.
526
+ <table>
527
+ <tr>
528
+ <td width="50%">
396
529
 
397
- ![Admin Overview](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new2/admin_overview.png)
530
+ **Overview** — workspace-wide metrics (users, sessions, conversations, MRR) + activity feed.
398
531
 
399
- **User Management** — Full user list with search by email or name. Shows role, status, join date, and an "Inspect" action to impersonate or suspend any user. Pagination built in.
532
+ ![Admin Overview](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new3/admin_overview_light.png)
400
533
 
401
- ![Admin Users](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new2/admin_users.png)
534
+ </td>
535
+ <td width="50%">
402
536
 
403
- **Conversation Browser** — Browse all conversations across the workspace. Filter by status and owner, sort by any column, open any conversation in a read-only view. Useful for support and quality review.
537
+ **User management** — search by email/name, roles, status, join date, inspect/suspend actions.
404
538
 
405
- ![Admin Conversations](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new2/admin_conversations.png)
539
+ ![Admin Users](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new3/admin_users_light.png)
406
540
 
407
- **Message Quality & Ratings** — Aggregated like/dislike feedback on AI responses over the last 30 days. Shows approval rate, daily chart, and a filterable table of individual ratings with optional user comments. Export to CSV.
541
+ </td>
542
+ </tr>
543
+ <tr>
544
+ <td width="50%">
408
545
 
409
- ![Admin Ratings](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new2/admin_ratings.png)
546
+ **Conversation browser** — filter by status/owner, open any conversation read-only.
410
547
 
411
- **Stripe Events Log** — Webhook event browser for debugging Stripe billing flows. Lists all received events (type, customer, amount, status, timestamp) and lets admins manually replay any event via the backend `/admin/stripe-events/{id}/replay` endpoint.
548
+ ![Admin Conversations](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new3/admin_conversations_light.png)
412
549
 
413
- ![Stripe Events](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new2/admin_stripe_events.png)
550
+ </td>
551
+ <td width="50%">
414
552
 
415
- **System Health** — Live readiness dashboard auto-refreshing every 30 seconds. Checks API, Database (PostgreSQL primary), Redis, Vector store, LLM provider, Background worker, and Stripe API. Shows uptime percentage per service.
553
+ **Message ratings** — approval rate, daily chart, filterable rating table with comments.
416
554
 
417
- ![System Health](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new2/admin_system_health.png)
555
+ ![Admin Ratings](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new3/admin_ratings_light.png)
418
556
 
419
- ### Observability
557
+ </td>
558
+ </tr>
559
+ <tr>
560
+ <td width="50%">
561
+
562
+ **Stripe events log** — webhook event browser with manual replay for debugging.
563
+
564
+ ![Stripe Events](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new3/admin_stripe_events_light.png)
565
+
566
+ </td>
567
+ <td width="50%">
420
568
 
421
- **Logfire (PydanticAI)** — Full distributed tracing for PydanticAI agent runs, FastAPI requests, database queries, Redis, Celery tasks, and HTTPX calls — all in one timeline.
569
+ **System health** — live readiness checks: API, DB, Redis, vector store, LLM, worker, Stripe.
570
+
571
+ ![System Health](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new3/admin_system_light.png)
572
+
573
+ </td>
574
+ </tr>
575
+ </table>
576
+
577
+ ### Marketing Site
578
+
579
+ <table>
580
+ <tr>
581
+ <td width="50%">
582
+
583
+ **Pricing** — three-tier page with monthly/annual toggle; pulls live Stripe plan data.
584
+
585
+ ![Pricing](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new3/landing_pricing.png)
586
+
587
+ </td>
588
+ <td width="50%">
589
+
590
+ **Blog** — engineering blog from MDX files; tags, featured posts, author bylines. No CMS needed.
591
+
592
+ ![Blog](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new3/blogs.png)
593
+
594
+ </td>
595
+ </tr>
596
+ </table>
597
+
598
+ ### Background Tasks, Observability & Channels
599
+
600
+ <table>
601
+ <tr>
602
+ <td width="50%">
603
+
604
+ **Prefect** — self-hosted server with RAG, billing, and email flows on cron schedules.
605
+
606
+ ![Prefect dashboard](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new3/prefect_dashboard.png)
607
+
608
+ </td>
609
+ <td width="50%">
610
+
611
+ **Prefect flow runs** — per-run history, task timeline, and retry visibility.
612
+
613
+ ![Prefect flow runs](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new3/prefect_runs.png)
614
+
615
+ </td>
616
+ </tr>
617
+ <tr>
618
+ <td width="50%">
619
+
620
+ **Logfire** — distributed tracing: FastAPI, PydanticAI, DB, Redis, Celery, HTTPX in one timeline.
422
621
 
423
622
  ![Logfire](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/logfire.png)
424
623
 
425
- **LangSmith (LangChain / LangGraph)** — Trace viewer for LangChain agent runs with step-by-step chain inspection, token usage, and feedback collection.
624
+ </td>
625
+ <td width="50%">
626
+
627
+ **LangSmith** — trace viewer for LangChain/LangGraph: chains, token usage, feedback.
426
628
 
427
629
  ![LangSmith](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/langsmith.png)
428
630
 
429
- ### Messaging Channels
631
+ </td>
632
+ </tr>
633
+ <tr>
634
+ <td width="50%">
430
635
 
431
- **Telegram Bot** — Multi-bot integration with both polling and webhook modes. Each bot gets its own session, supports group concurrency control, and routes messages through the same agent pipeline as the web UI.
636
+ **Telegram bot** — multi-bot, polling + webhook, per-thread sessions, group concurrency control.
432
637
 
433
638
  ![Telegram](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/telegram.png)
434
639
 
435
- ### Monitoring & API
640
+ </td>
641
+ <td width="50%">
436
642
 
437
- **Celery Flower** — Real-time task queue monitor. Track worker status, task throughput, and failure rates for background jobs (document ingestion, email, webhooks).
438
-
439
- ![Flower](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/flower.png)
440
-
441
- **API Documentation** — Auto-generated OpenAPI / Swagger UI at `/docs`. All endpoints documented with request/response schemas, auth requirements, and example payloads.
643
+ **API docs** — auto-generated OpenAPI / Swagger UI with schemas, auth, and example payloads.
442
644
 
443
645
  ![API Docs](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/docs_2.png)
444
646
 
647
+ </td>
648
+ </tr>
649
+ </table>
650
+
445
651
  ---
446
652
 
447
653
  ## 🎯 Why This Template
@@ -467,6 +673,12 @@ This template gives you all of that out of the box, with **20+ configurable inte
467
673
 
468
674
  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.
469
675
 
676
+ They also ship a ready-to-use **`.claude/` toolkit** that adapts to the options you selected:
677
+
678
+ - **Agent Skills** (`.claude/skills/`) — model-invoked playbooks that auto-trigger when relevant: `alembic-migration`, `pytest-suite`, `agent-tool` (framework-aware), `frontend-feature`, `rag-knowledge`, `background-task` (queue-aware), `billing-stripe`, and `channel-bot`. Feature-gated — only the skills that match your stack are generated.
679
+ - **Slash commands** (`.claude/commands/`) — `/add-endpoint`, `/fix-issue`, `/review`.
680
+ - **Convention rules** (`.claude/rules/`) — architecture, code style, schemas, exceptions/security, testing, and frontend conventions, loaded automatically.
681
+
470
682
  ---
471
683
 
472
684
  ## ✨ Features
@@ -475,7 +687,6 @@ Generated projects include **CLAUDE.md** and **AGENTS.md** files optimized for A
475
687
  <a href="https://ai.pydantic.dev"><img src="https://img.shields.io/badge/PydanticAI-E92063?logo=pydantic&logoColor=white" alt="PydanticAI"></a>
476
688
  <a href="https://python.langchain.com"><img src="https://img.shields.io/badge/LangChain-1C3C3C?logo=langchain&logoColor=white" alt="LangChain"></a>
477
689
  <a href="https://langchain-ai.github.io/langgraph/"><img src="https://img.shields.io/badge/LangGraph-005A9C?logo=langchain&logoColor=white" alt="LangGraph"></a>
478
- <a href="https://www.crewai.com"><img src="https://img.shields.io/badge/CrewAI-FF6B35?logoColor=white" alt="CrewAI"></a>
479
690
  <a href="https://milvus.io"><img src="https://img.shields.io/badge/Milvus-FF6B35?logoColor=white" alt="Milvus"></a>
480
691
  <a href="https://openai.com"><img src="https://img.shields.io/badge/OpenAI-412991?logo=openai&logoColor=white" alt="OpenAI"></a>
481
692
  <a href="https://anthropic.com"><img src="https://img.shields.io/badge/Anthropic-D4A373?logo=anthropic&logoColor=white" alt="Anthropic"></a>
@@ -494,12 +705,12 @@ Generated projects include **CLAUDE.md** and **AGENTS.md** files optimized for A
494
705
 
495
706
  <p align="center">
496
707
  <a href="https://www.postgresql.org"><img src="https://img.shields.io/badge/PostgreSQL-4169E1?logo=postgresql&logoColor=white" alt="PostgreSQL"></a>
497
- <a href="https://www.mongodb.com"><img src="https://img.shields.io/badge/MongoDB-47A248?logo=mongodb&logoColor=white" alt="MongoDB"></a>
498
708
  <a href="https://redis.io"><img src="https://img.shields.io/badge/Redis-DC382D?logo=redis&logoColor=white" alt="Redis"></a>
499
709
  <a href="https://milvus.io"><img src="https://img.shields.io/badge/Milvus-00A1EA?logoColor=white" alt="Milvus"></a>
500
710
  <a href="https://qdrant.tech"><img src="https://img.shields.io/badge/Qdrant-FF6B6B?logoColor=white" alt="Qdrant"></a>
501
711
  <a href="https://www.trychroma.com"><img src="https://img.shields.io/badge/ChromaDB-FF6F61?logoColor=white" alt="ChromaDB"></a>
502
712
  <a href="https://docs.celeryq.dev"><img src="https://img.shields.io/badge/Celery-37814A?logo=celery&logoColor=white" alt="Celery"></a>
713
+ <a href="https://www.prefect.io"><img src="https://img.shields.io/badge/Prefect-070E10?logo=prefect&logoColor=white" alt="Prefect"></a>
503
714
  <a href="https://logfire.pydantic.dev"><img src="https://img.shields.io/badge/Logfire-E92063?logo=pydantic&logoColor=white" alt="Logfire"></a>
504
715
  <a href="https://sentry.io"><img src="https://img.shields.io/badge/Sentry-362D59?logo=sentry&logoColor=white" alt="Sentry"></a>
505
716
  <a href="https://prometheus.io"><img src="https://img.shields.io/badge/Prometheus-E6522C?logo=prometheus&logoColor=white" alt="Prometheus"></a>
@@ -514,26 +725,28 @@ Generated projects include **CLAUDE.md** and **AGENTS.md** files optimized for A
514
725
 
515
726
  ### 🤖 AI/LLM First
516
727
 
517
- - **6 AI Frameworks** - [PydanticAI](https://ai.pydantic.dev), [PydanticDeep](https://github.com/vstorm-co/pydantic-deep), [LangChain](https://python.langchain.com), [LangGraph](https://langchain-ai.github.io/langgraph/), [CrewAI](https://www.crewai.com), [DeepAgents](https://github.com/vstorm-co/pydantic-deepagents)
728
+ - **5 AI Frameworks** - [PydanticAI](https://ai.pydantic.dev), [PydanticDeep](https://github.com/vstorm-co/pydantic-deep), [LangChain](https://python.langchain.com), [LangGraph](https://langchain-ai.github.io/langgraph/), [DeepAgents](https://github.com/vstorm-co/pydantic-deepagents)
518
729
  - **4 LLM Providers** - OpenAI, Anthropic, Google Gemini, OpenRouter
519
730
  - **RAG** - Document ingestion, vector search, reranking (Milvus, Qdrant, ChromaDB, pgvector)
520
731
  - **WebSocket Streaming** - Real-time responses with full event access
732
+ - **Rich Chat UI** - Specialized tool-call cards (web search, knowledge base, Python, charts, skills), live subagent feed, citation sources panel, plan/task checklist, reasoning view, and in-chat file previews
733
+ - **Agent Tools** - Web search, URL fetch, charts, code execution (`run_python`), skills, `ask_user`, plus optional Deep Research (TODO planner + parallel subagents)
521
734
  - **Messaging Channels** - Telegram and Slack multi-bot integration with polling, webhooks, per-thread sessions, group concurrency control
522
735
  - **Conversation Sharing** - Share conversations with users or via public links, admin conversation browser
523
736
  - **Conversation Persistence** - Save chat history to database
524
737
  - **Message Ratings** - Like/dislike responses with feedback, admin analytics
525
738
  - **Image Description** - Extract images from documents, describe via LLM vision
526
- - **Multimodal Embeddings** - Google Gemini embedding model (text + images)
739
+ - **Multimodal Embeddings** - Provider-aware: OpenAI, Voyage (Anthropic), Gemini (multimodal text + images)
527
740
  - **Document Sources** - Local files, API upload, Google Drive, S3/MinIO
528
- - **Sync Sources** - Configurable connectors (Google Drive, S3) with scheduled sync
741
+ - **Sync Sources** - Per-organization connector management UI (Google Drive, S3/MinIO) with scheduled sync, manual triggers, encrypted credentials, and per-run logs
529
742
  - **Observability** - Logfire for PydanticAI, LangSmith for LangChain/LangGraph/DeepAgents
530
743
 
531
744
  ### ⚡ Backend (FastAPI)
532
745
 
533
746
  - **[FastAPI](https://fastapi.tiangolo.com)** + **[Pydantic v2](https://docs.pydantic.dev)** - High-performance async API
534
- - **Multiple Databases** - PostgreSQL (async), MongoDB (async), SQLite
747
+ - **PostgreSQL** (async) - SQLAlchemy 2.0 + Alembic migrations, pgvector-ready
535
748
  - **Authentication** - JWT + Refresh tokens, API Keys, OAuth2 (Google)
536
- - **Background Tasks** - Celery, Taskiq, or ARQ
749
+ - **Background Tasks** - Celery, Taskiq, ARQ, or Prefect
537
750
  - **Django-style CLI** - Custom management commands with auto-discovery
538
751
 
539
752
  ### 🎨 Frontend (Next.js 15)
@@ -542,8 +755,9 @@ Generated projects include **CLAUDE.md** and **AGENTS.md** files optimized for A
542
755
  - **AI Chat Interface** - WebSocket streaming, tool call visualization
543
756
  - **Authentication** - HTTP-only cookies, auto-refresh, password reset, magic link
544
757
  - **Marketing Site** - hero, pricing, FAQ, blog, contact form, legal pages (PL + EN)
758
+ - **Billing Dashboard** - subscription, payment methods, invoices, credits balance/ledger, and usage charts (Stripe)
545
759
  - **User Settings** - profile, API keys CRUD (`sk_*` tokens), onboarding tracking
546
- - **Admin Panel** - workspace stats, Stripe events browser
760
+ - **Admin Panel** - workspace stats, message-rating analytics, Stripe events browser
547
761
  - **SEO** - per-page metadata, OG image, sitemap, robots, manifest, favicons
548
762
  - **Dark Mode** + **i18n** (PL/EN via next-intl, locale-prefixed routes)
549
763
 
@@ -551,11 +765,13 @@ Generated projects include **CLAUDE.md** and **AGENTS.md** files optimized for A
551
765
 
552
766
  | Category | Integrations |
553
767
  |----------|-------------|
554
- | **AI Frameworks** | PydanticAI, PydanticDeep, LangChain, LangGraph, CrewAI, DeepAgents |
768
+ | **AI Frameworks** | PydanticAI, PydanticDeep, LangChain, LangGraph, DeepAgents |
555
769
  | **LLM Providers** | OpenAI, Anthropic, Google Gemini, OpenRouter |
556
770
  | **RAG / Vector Stores** | Milvus, Qdrant, ChromaDB, pgvector |
557
- | **RAG Sources** | Local files, API upload, Google Drive, S3/MinIO, Sync Sources (configurable, scheduled) |
771
+ | **RAG Sources** | Local files, API upload, Google Drive, S3/MinIO, Sync Sources (per-org UI, scheduled) |
558
772
  | **Embeddings** | OpenAI, Voyage, Gemini (multimodal), SentenceTransformers |
773
+ | **Background Tasks** | Celery, Taskiq, ARQ, Prefect |
774
+ | **Billing** | Stripe subscriptions (seat-based), credits + usage metering, invoices, Customer Portal |
559
775
  | **Caching & State** | Redis, fastapi-cache2 |
560
776
  | **Security** | Rate limiting, CORS, CSRF protection |
561
777
  | **Observability** | Logfire, LangSmith, Sentry, Prometheus |
@@ -579,7 +795,7 @@ Generated projects include **CLAUDE.md** and **AGENTS.md** files optimized for A
579
795
  │ │
580
796
  │ ┌─────────────────────────────────────────────────────────────────┐ │
581
797
  │ │ AI AGENTS │ │
582
- │ │ PydanticAI · LangChain · LangGraph · CrewAI · DeepAgents │ │
798
+ │ │ PydanticAI · LangChain · LangGraph · DeepAgents │ │
583
799
  │ │ ──────────────────────────────────────────────────────────── │ │
584
800
  │ │ Tools: datetime · web_search (Tavily) · search_knowledge_base │ │
585
801
  │ │ Providers: OpenAI · Anthropic · Gemini · OpenRouter │ │
@@ -605,14 +821,15 @@ Generated projects include **CLAUDE.md** and **AGENTS.md** files optimized for A
605
821
  │ └─────────────────────────────────────────────────────────────────┘ │
606
822
  │ │
607
823
  │ Auth (JWT/API Key/OAuth) · Rate Limiting · Webhooks · Admin Panel │
608
- │ Background Tasks (Celery/Taskiq/ARQ) · Django-style CLI
609
- │ Observability (Logfire/LangSmith/Sentry/Prometheus)
824
+ Billing (Stripe + credits) · Background Tasks (Celery/Taskiq/ARQ/
825
+ Prefect) · Django-style CLI · Observability (Logfire/LangSmith/
826
+ │ Sentry/Prometheus) │
610
827
  └───────┬──────────────┬──────────────┬──────────────┬─────────────────────┘
611
828
  │ │ │ │
612
829
  ▼ ▼ ▼ ▼
613
830
  PostgreSQL Redis Vector DB LLM APIs
614
- MongoDB (Milvus/ (OpenAI/
615
- SQLite Qdrant/ Anthropic/
831
+ (async) (Milvus/ (OpenAI/
832
+ Qdrant/ Anthropic/
616
833
  ChromaDB/ Gemini)
617
834
  pgvector)
618
835
  ```
@@ -637,9 +854,9 @@ graph TB
637
854
  end
638
855
 
639
856
  subgraph Infrastructure
640
- DB[(PostgreSQL/MongoDB)]
857
+ DB[(PostgreSQL)]
641
858
  Redis[(Redis)]
642
- Queue[Celery/Taskiq]
859
+ Queue[Celery/Taskiq/ARQ/Prefect]
643
860
  end
644
861
 
645
862
  subgraph External
@@ -685,7 +902,7 @@ See [Architecture Documentation](https://github.com/vstorm-co/full-stack-ai-agen
685
902
 
686
903
  ## 🤖 AI Agent
687
904
 
688
- Choose from **6 AI frameworks** and **4 LLM providers** when generating your project:
905
+ Choose from **5 AI frameworks** and **4 LLM providers** when generating your project:
689
906
 
690
907
  ```bash
691
908
  # PydanticAI with OpenAI (default)
@@ -694,9 +911,6 @@ fastapi-fullstack create my_app --ai-framework pydantic_ai
694
911
  # LangGraph with Anthropic
695
912
  fastapi-fullstack create my_app --ai-framework langgraph --llm-provider anthropic
696
913
 
697
- # CrewAI with Google Gemini
698
- fastapi-fullstack create my_app --ai-framework crewai --llm-provider google
699
-
700
914
  # DeepAgents with OpenAI
701
915
  fastapi-fullstack create my_app --ai-framework deepagents
702
916
 
@@ -712,7 +926,6 @@ fastapi-fullstack create my_app --rag --database postgresql --task-queue celery
712
926
  | **PydanticDeep** | ✓ | ✓ | ✓ | - |
713
927
  | **LangChain** | ✓ | ✓ | ✓ | - |
714
928
  | **LangGraph** | ✓ | ✓ | ✓ | - |
715
- | **CrewAI** | ✓ | ✓ | ✓ | - |
716
929
  | **DeepAgents** | ✓ | ✓ | ✓ | - |
717
930
 
718
931
  ### PydanticAI Integration
@@ -833,7 +1046,7 @@ uv run my_app rag-sync-s3 --collection docs --prefix reports/ --bucket my-bucket
833
1046
  - **Image description** - Extract images from documents, describe via LLM vision API (opt-in)
834
1047
  - **Chunking** - RecursiveCharacterTextSplitter with configurable size/overlap
835
1048
  - **Reranking** - Cohere API or local CrossEncoder for improved search quality
836
- - **Agent integration** - All 6 AI frameworks get a `search_knowledge_base` tool automatically
1049
+ - **Agent integration** - All 5 AI frameworks get a `search_knowledge_base` tool automatically
837
1050
 
838
1051
  ---
839
1052
 
@@ -872,7 +1085,7 @@ graph LR
872
1085
  |-----------|-------------|
873
1086
  | **PydanticAI** | Agent runs, tool calls, LLM requests, token usage, streaming events |
874
1087
  | **FastAPI** | Request/response traces, latency, status codes, route performance |
875
- | **PostgreSQL/MongoDB** | Query execution time, slow queries, connection pool stats |
1088
+ | **PostgreSQL** | Query execution time, slow queries, connection pool stats |
876
1089
  | **Redis** | Cache hits/misses, command latency, key patterns |
877
1090
  | **Celery/Taskiq** | Task execution, queue depth, worker performance |
878
1091
  | **HTTPX** | External API calls, response times, error rates |
@@ -1000,7 +1213,7 @@ my_project/
1000
1213
  │ │ │ ├── deps.py # Dependency injection
1001
1214
  │ │ │ └── router.py # Route aggregation
1002
1215
  │ │ ├── core/ # Config, security, middleware
1003
- │ │ ├── db/models/ # SQLAlchemy/MongoDB models
1216
+ │ │ ├── db/models/ # SQLAlchemy 2.0 models
1004
1217
  │ │ ├── schemas/ # Pydantic schemas
1005
1218
  │ │ ├── repositories/ # Data access layer
1006
1219
  │ │ ├── services/ # Business logic
@@ -1039,15 +1252,15 @@ generated_at = "2024-12-21T10:30:00+00:00"
1039
1252
 
1040
1253
  | Option | Values | Description |
1041
1254
  |--------|--------|-------------|
1042
- | **Database** | `postgresql`, `mongodb`, `sqlite`, `none` | Async by default |
1255
+ | **Database** | `postgresql`, `none` | Async PostgreSQL (SQLAlchemy 2.0 + Alembic) |
1043
1256
  | **ORM** | `sqlalchemy`, `sqlmodel` | SQLModel for simplified syntax |
1044
1257
  | **Auth** | `jwt`, `api_key`, `both`, `none` | JWT includes user management |
1045
1258
  | **OAuth** | `none`, `google` | Social login |
1046
- | **AI Framework** | `pydantic_ai`, `langchain`, `langgraph`, `crewai`, `deepagents` | Choose your AI agent framework |
1259
+ | **AI Framework** | `pydantic_ai`, `pydantic_deep`, `langchain`, `langgraph`, `deepagents` | Choose your AI agent framework |
1047
1260
  | **LLM Provider** | `openai`, `anthropic`, `google`, `openrouter` | OpenRouter only with PydanticAI |
1048
1261
  | **RAG** | `--rag` | Enable RAG with vector database |
1049
1262
  | **Vector Store** | `milvus`, `qdrant`, `chromadb`, `pgvector` | pgvector uses existing PostgreSQL |
1050
- | **Background Tasks** | `none`, `celery`, `taskiq`, `arq` | Distributed queues |
1263
+ | **Background Tasks** | `none`, `celery`, `taskiq`, `arq`, `prefect` | Distributed queues / orchestration |
1051
1264
  | **Frontend** | `none`, `nextjs` | Next.js 15 + React 19 |
1052
1265
 
1053
1266
  ### Presets
@@ -1115,9 +1328,10 @@ fastapi-fullstack
1115
1328
  | **FastAPI Backend** | ✅ | ✅ | ❌ |
1116
1329
  | **Next.js Frontend** | ✅ (v15) | ❌ | ✅ |
1117
1330
  | **JWT + OAuth Authentication** | ✅ | ✅ | ✅ (NextAuth) |
1118
- | **Background Tasks** (Celery/Taskiq/ARQ) | ✅ | ✅ (Celery) | ❌ |
1331
+ | **Background Tasks** (Celery/Taskiq/ARQ/Prefect) | ✅ | ✅ (Celery) | ❌ |
1332
+ | **Billing & Credits** (Stripe + usage metering) | ✅ | ❌ | ❌ |
1119
1333
  | **Admin Panel** | ✅ (SQLAdmin) | ❌ | ❌ |
1120
- | **Multiple Databases** (PG/Mongo/SQLite) | ✅ | PostgreSQL only | Prisma |
1334
+ | **Async PostgreSQL** (SQLAlchemy 2.0 + pgvector) | ✅ | | Prisma |
1121
1335
  | **Docker + K8s** | ✅ | ✅ | ❌ |
1122
1336
  | **Interactive CLI Wizard** | ✅ | ❌ | ✅ |
1123
1337
  | **Django-style Commands** | ✅ | ❌ | ❌ |