fastapi-fullstack 0.2.7__tar.gz → 0.2.9__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1045) hide show
  1. fastapi_fullstack-0.2.9/PKG-INFO +1241 -0
  2. fastapi_fullstack-0.2.9/README.md +1194 -0
  3. fastapi_fullstack-0.2.9/fastapi_gen/cli.py +1453 -0
  4. fastapi_fullstack-0.2.9/fastapi_gen/config.py +983 -0
  5. fastapi_fullstack-0.2.9/fastapi_gen/prompts.py +1824 -0
  6. fastapi_fullstack-0.2.9/pyproject.toml +181 -0
  7. fastapi_fullstack-0.2.9/template/VARIABLES.md +467 -0
  8. fastapi_fullstack-0.2.9/template/cookiecutter.json +201 -0
  9. fastapi_fullstack-0.2.9/template/hooks/post_gen_project.py +1021 -0
  10. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/.claude/rules/architecture.md +138 -0
  11. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/.gitignore +106 -0
  12. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/CLAUDE.md +196 -0
  13. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/CONTRIBUTING.md +93 -0
  14. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/ENV_VARS.md +195 -0
  15. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/MANUAL_STEPS.md +216 -0
  16. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/Makefile +510 -0
  17. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/README.md +380 -0
  18. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/SECURITY.md +93 -0
  19. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/.env.example +403 -0
  20. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/Dockerfile +68 -0
  21. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/alembic/env.py +119 -0
  22. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0000_create_users.py +84 -0
  23. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0001_create_organization_tables.py +262 -0
  24. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0002_backfill_personal_orgs.py +145 -0
  25. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0003_add_is_app_admin.py +56 -0
  26. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0004_5_create_core_tables.py +333 -0
  27. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0004_create_audit_log.py +78 -0
  28. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0005_add_org_id_to_conversations_and_rag.py +121 -0
  29. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0006_backfill_org_id_on_conversations.py +73 -0
  30. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0007_create_knowledge_bases.py +99 -0
  31. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0008_backfill_default_kbs.py +165 -0
  32. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0009_conv_active_kb_ids.py +66 -0
  33. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0010_org_billing_seats.py +66 -0
  34. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0011_create_plan_price_tables.py +108 -0
  35. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0012_create_subscription_table.py +94 -0
  36. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0013_create_stripe_event_table.py +70 -0
  37. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0014_credits_usage_events.py +144 -0
  38. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0015_create_mv_usage_daily.py +62 -0
  39. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0016_user_onboarding_at.py +44 -0
  40. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0018_user_slash_commands.py +71 -0
  41. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0019_user_external_id.py +40 -0
  42. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0020_conversation_external_user_id.py +39 -0
  43. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0021_create_items.py +74 -0
  44. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/agents/__init__.py +65 -0
  45. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/agents/assistant.py +420 -0
  46. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/agents/crewai_assistant.py +711 -0
  47. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/agents/deepagents_assistant.py +849 -0
  48. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/agents/langchain_assistant.py +479 -0
  49. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/agents/langgraph_assistant.py +577 -0
  50. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/agents/prompts.py +69 -0
  51. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/agents/pydantic_deep_assistant.py +464 -0
  52. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/__init__.py +33 -0
  53. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/chart_render.py +125 -0
  54. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/chart_tool.py +166 -0
  55. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/datetime_tool.py +13 -0
  56. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/fetch_url.py +106 -0
  57. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/rag_tool.py +300 -0
  58. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/web_search.py +116 -0
  59. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/api/deps.py +1144 -0
  60. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/api/exception_handlers.py +110 -0
  61. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/__init__.py +201 -0
  62. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/admin_conversations.py +211 -0
  63. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/admin_stats.py +37 -0
  64. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/admin_users.py +200 -0
  65. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/agent.py +308 -0
  66. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/auth.py +252 -0
  67. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/billing.py +368 -0
  68. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/channels.py +365 -0
  69. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/contact.py +29 -0
  70. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/conversations.py +1229 -0
  71. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/files.py +153 -0
  72. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/health.py +310 -0
  73. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/invitations.py +178 -0
  74. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/items.py +129 -0
  75. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/knowledge_bases.py +508 -0
  76. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/marketing.py +28 -0
  77. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/me_slash_commands.py +121 -0
  78. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/members.py +206 -0
  79. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/oauth.py +174 -0
  80. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/organizations.py +335 -0
  81. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/rag.py +448 -0
  82. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/slack_webhook.py +76 -0
  83. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/telegram_webhook.py +123 -0
  84. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/commands/channel.py +270 -0
  85. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/commands/cleanup.py +96 -0
  86. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/commands/create_app_admin.py +111 -0
  87. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/commands/rag.py +808 -0
  88. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/commands/sync_stripe_plans.py +203 -0
  89. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/core/audit.py +117 -0
  90. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/core/config.py +736 -0
  91. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/core/exceptions.py +130 -0
  92. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/core/middleware.py +102 -0
  93. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/core/security.py +192 -0
  94. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/db/models/__init__.py +66 -0
  95. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/db/models/audit_log.py +169 -0
  96. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/db/models/channel_bot.py +243 -0
  97. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/db/models/conversation.py +721 -0
  98. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/db/models/credit_transaction.py +240 -0
  99. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/db/models/item.py +60 -0
  100. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/db/models/knowledge_base.py +250 -0
  101. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/db/models/organization.py +727 -0
  102. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/db/models/plan.py +295 -0
  103. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/db/models/rag_document.py +212 -0
  104. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/db/models/session.py +245 -0
  105. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/db/models/stripe_event.py +101 -0
  106. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/db/models/subscription.py +167 -0
  107. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/db/models/user.py +399 -0
  108. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/db/models/user_slash_command.py +227 -0
  109. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/db/models/webhook.py +416 -0
  110. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/main.py +613 -0
  111. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/repositories/__init__.py +105 -0
  112. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/repositories/channel_bot.py +387 -0
  113. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/repositories/conversation.py +1422 -0
  114. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/repositories/credit_transaction.py +159 -0
  115. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/repositories/invitation.py +303 -0
  116. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/repositories/item.py +146 -0
  117. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/repositories/knowledge_base.py +295 -0
  118. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/repositories/member.py +310 -0
  119. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/repositories/message_rating.py +661 -0
  120. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/repositories/organization.py +457 -0
  121. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/repositories/plan.py +135 -0
  122. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/repositories/rag_document.py +270 -0
  123. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/repositories/stripe_event.py +99 -0
  124. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/repositories/subscription.py +171 -0
  125. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/repositories/usage_event.py +508 -0
  126. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/repositories/user.py +536 -0
  127. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/repositories/user_slash_command.py +168 -0
  128. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/schemas/admin.py +42 -0
  129. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/schemas/billing.py +208 -0
  130. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/schemas/contact.py +29 -0
  131. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/schemas/conversation.py +318 -0
  132. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/schemas/conversation_share.py +114 -0
  133. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/schemas/item.py +50 -0
  134. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/schemas/knowledge_base.py +63 -0
  135. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/schemas/marketing.py +23 -0
  136. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/schemas/organization.py +149 -0
  137. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/schemas/password_reset.py +44 -0
  138. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/schemas/user.py +77 -0
  139. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/schemas/user_slash_command.py +66 -0
  140. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/__init__.py +11 -0
  141. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/admin.py +180 -0
  142. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/agent.py +446 -0
  143. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/agent_invocation.py +692 -0
  144. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/agent_session.py +2487 -0
  145. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/anomaly_detection.py +229 -0
  146. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/billing/__init__.py +13 -0
  147. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/billing/checkout_service.py +249 -0
  148. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/billing/credit_service.py +330 -0
  149. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/billing/exceptions.py +43 -0
  150. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/billing/facade.py +375 -0
  151. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/billing/handlers/__init__.py +5 -0
  152. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/billing/handlers/customer_events.py +90 -0
  153. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/billing/handlers/invoice_events.py +231 -0
  154. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/billing/handlers/payment_events.py +103 -0
  155. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/billing/handlers/subscription_events.py +515 -0
  156. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/billing/pricing.py +79 -0
  157. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/billing/stripe_client.py +185 -0
  158. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/billing/subscription_service.py +182 -0
  159. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/billing/webhook_handler.py +178 -0
  160. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/channel_bot.py +446 -0
  161. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/channels/__init__.py +31 -0
  162. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/channels/base.py +111 -0
  163. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/channels/router.py +709 -0
  164. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/channels/slack.py +265 -0
  165. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/channels/telegram.py +270 -0
  166. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/contact.py +52 -0
  167. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/conversation.py +1835 -0
  168. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/email/__init__.py +33 -0
  169. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/email/exceptions.py +33 -0
  170. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/email/providers/__init__.py +5 -0
  171. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/email/providers/base.py +33 -0
  172. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/email/providers/log.py +45 -0
  173. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/email/providers/resend.py +60 -0
  174. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/email/providers/smtp.py +75 -0
  175. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/email/service.py +204 -0
  176. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/email/templates.py +50 -0
  177. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/file_storage.py +130 -0
  178. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/file_upload.py +553 -0
  179. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/invitation.py +605 -0
  180. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/item.py +104 -0
  181. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/knowledge_base.py +625 -0
  182. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/member.py +390 -0
  183. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/message_rating.py +1193 -0
  184. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/newsletter.py +45 -0
  185. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/organization.py +362 -0
  186. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/rag/config.py +181 -0
  187. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/rag/connectors/__init__.py +70 -0
  188. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/rag/connectors/google_drive.py +204 -0
  189. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/rag/connectors/s3.py +131 -0
  190. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/rag/documents.py +1068 -0
  191. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/rag/embeddings.py +301 -0
  192. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/rag/ingestion.py +207 -0
  193. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/rag/reranker.py +408 -0
  194. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/rag/retrieval.py +392 -0
  195. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/rag/sources/__init__.py +22 -0
  196. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/rag/sources/base.py +120 -0
  197. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/rag/sources/google_drive.py +148 -0
  198. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/rag/sources/s3.py +95 -0
  199. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/rag/vectorstore.py +622 -0
  200. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/rag_document.py +560 -0
  201. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/rag_status.py +55 -0
  202. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/rag_sync.py +299 -0
  203. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/rate_limit/__init__.py +5 -0
  204. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/rate_limit/rules.py +56 -0
  205. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/rate_limit/service.py +155 -0
  206. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/rate_limit/storage.py +138 -0
  207. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/sync_source.py +396 -0
  208. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/usage.py +232 -0
  209. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/user.py +498 -0
  210. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services/user_slash_command.py +274 -0
  211. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/worker/__init__.py +3 -0
  212. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/worker/arq_app.py +85 -0
  213. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/worker/background/__init__.py +42 -0
  214. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/worker/background/channel.py +44 -0
  215. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/worker/background/rag.py +142 -0
  216. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/worker/celery_app.py +71 -0
  217. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/__init__.py +53 -0
  218. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/anomaly_tasks.py +54 -0
  219. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/cleanup_tasks.py +84 -0
  220. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/email_tasks.py +107 -0
  221. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/rag_tasks.py +466 -0
  222. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/schedules.py +54 -0
  223. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/pyproject.toml +415 -0
  224. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/tests/api/test_auth.py +255 -0
  225. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/tests/test_agents.py +298 -0
  226. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/tests/test_chart_tool.py +137 -0
  227. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/tests/test_conversation_kb_toggle.py +164 -0
  228. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/tests/test_fetch_url.py +101 -0
  229. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/tests/test_kb_scoping.py +314 -0
  230. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/tests/test_rbac_teams.py +316 -0
  231. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/tests/test_repositories_teams.py +501 -0
  232. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/tests/test_services.py +406 -0
  233. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/tests/test_services_conversation.py +904 -0
  234. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/tests/test_services_members.py +386 -0
  235. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/tests/test_services_organizations.py +260 -0
  236. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/tests/test_stripe_seats.py +221 -0
  237. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/tests/test_tenant_isolation.py +233 -0
  238. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/tests/test_web_search.py +97 -0
  239. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/docker-compose.dev.yml +430 -0
  240. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/docker-compose.prod.yml +765 -0
  241. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/docker-compose.yml +479 -0
  242. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/docs/configuration.md +515 -0
  243. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/docs/deploy.md +142 -0
  244. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/docs/howto/add-rag-source.md +180 -0
  245. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/docs/howto/add-sync-connector.md +273 -0
  246. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/docs/patterns.md +207 -0
  247. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/emails/compiled/email_verification.html +17 -0
  248. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/emails/compiled/email_verification.txt +11 -0
  249. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/emails/compiled/invitation.html +17 -0
  250. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/emails/compiled/invitation.txt +12 -0
  251. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/emails/compiled/low_credits.html +17 -0
  252. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/emails/compiled/low_credits.txt +10 -0
  253. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/emails/compiled/magic_link.html +18 -0
  254. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/emails/compiled/magic_link.txt +11 -0
  255. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/emails/compiled/newsletter_welcome.html +15 -0
  256. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/emails/compiled/newsletter_welcome.txt +7 -0
  257. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/emails/compiled/password_reset.html +18 -0
  258. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/emails/compiled/password_reset.txt +11 -0
  259. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/emails/compiled/payment_failed.html +17 -0
  260. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/emails/compiled/payment_failed.txt +12 -0
  261. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/emails/compiled/payment_succeeded.html +18 -0
  262. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/emails/compiled/payment_succeeded.txt +12 -0
  263. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/emails/compiled/subscription_canceled.html +18 -0
  264. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/emails/compiled/subscription_canceled.txt +10 -0
  265. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/emails/compiled/subscription_changed.html +17 -0
  266. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/emails/compiled/subscription_changed.txt +10 -0
  267. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/emails/compiled/trial_ending.html +17 -0
  268. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/emails/compiled/trial_ending.txt +12 -0
  269. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/emails/compiled/trial_expired.html +17 -0
  270. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/emails/compiled/trial_expired.txt +10 -0
  271. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/emails/compiled/welcome.html +16 -0
  272. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/emails/compiled/welcome.txt +12 -0
  273. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/README.md +648 -0
  274. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/content/blog/rag-defaults-that-age-well.mdx +81 -0
  275. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/content/blog/shipping-ai-saas-template.mdx +61 -0
  276. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/content/blog/streaming-tool-calls-without-tears.mdx +83 -0
  277. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/messages/en.json +887 -0
  278. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/messages/pl.json +887 -0
  279. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/next.config.ts +116 -0
  280. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/package.json +109 -0
  281. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(auth)/forgot-password/page.tsx +24 -0
  282. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(auth)/layout.tsx +94 -0
  283. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(auth)/login/page.tsx +30 -0
  284. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(auth)/magic-link-sent/page.tsx +74 -0
  285. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(auth)/register/page.tsx +29 -0
  286. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(auth)/reset-password/page.tsx +62 -0
  287. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/admin/conversations/page.tsx +378 -0
  288. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/admin/layout.tsx +31 -0
  289. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/admin/page.tsx +283 -0
  290. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/admin/ratings/page.tsx +427 -0
  291. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/admin/stripe-events/page.tsx +599 -0
  292. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/admin/system/page.tsx +328 -0
  293. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/admin/users/page.tsx +364 -0
  294. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/billing/credits/page.tsx +302 -0
  295. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/billing/invoices/page.tsx +23 -0
  296. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/billing/page.tsx +386 -0
  297. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/billing/payment-methods/page.tsx +23 -0
  298. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/billing/subscription/page.tsx +137 -0
  299. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/billing/usage/page.tsx +284 -0
  300. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/chat/page.tsx +17 -0
  301. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/dashboard/page.tsx +437 -0
  302. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/invitations/[token]/page.tsx +82 -0
  303. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/kb/[id]/page.tsx +431 -0
  304. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/kb/page.tsx +60 -0
  305. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/layout.tsx +25 -0
  306. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/orgs/[id]/members/page.tsx +299 -0
  307. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/orgs/page.tsx +206 -0
  308. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/profile/page.tsx +5 -0
  309. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/rag/page.tsx +1054 -0
  310. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/account/page.tsx +224 -0
  311. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/appearance/page.tsx +35 -0
  312. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/layout.tsx +28 -0
  313. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/notifications/page.tsx +204 -0
  314. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/page.tsx +5 -0
  315. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/profile/page.tsx +348 -0
  316. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/slash-commands/page.tsx +17 -0
  317. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/about/page.tsx +204 -0
  318. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/auth/callback/page.tsx +66 -0
  319. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/auth/magic-link/layout.tsx +14 -0
  320. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/auth/magic-link/page.tsx +101 -0
  321. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/blog/[slug]/page.tsx +215 -0
  322. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/blog/page.tsx +171 -0
  323. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/changelog/page.tsx +125 -0
  324. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/community/page.tsx +118 -0
  325. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/contact/page.tsx +136 -0
  326. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/error.tsx +45 -0
  327. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/help/page.tsx +126 -0
  328. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/layout.tsx +71 -0
  329. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/legal/cookies/page.tsx +44 -0
  330. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/legal/privacy/page.tsx +44 -0
  331. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/legal/terms/page.tsx +44 -0
  332. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/onboarding/[step]/page.tsx +57 -0
  333. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/onboarding/page.tsx +5 -0
  334. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/page.tsx +436 -0
  335. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/pricing/layout.tsx +42 -0
  336. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/pricing/page.tsx +336 -0
  337. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/security/page.tsx +121 -0
  338. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/shared/[token]/page.tsx +73 -0
  339. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/admin/conversations/[id]/route.ts +29 -0
  340. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/admin/conversations/route.ts +41 -0
  341. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/admin/conversations/users/route.ts +33 -0
  342. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/admin/ratings/export/route.ts +53 -0
  343. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/admin/ratings/route.ts +37 -0
  344. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/admin/ratings/summary/route.ts +30 -0
  345. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/admin/stats/route.ts +22 -0
  346. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/admin/stripe-events/route.ts +24 -0
  347. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/admin/users/[userId]/impersonate/route.ts +27 -0
  348. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/admin/users/[userId]/route.ts +72 -0
  349. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/admin/users/route.ts +36 -0
  350. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/login/route.ts +61 -0
  351. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/logout/route.ts +41 -0
  352. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/magic-link/request/route.ts +19 -0
  353. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/magic-link/verify/route.ts +51 -0
  354. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/me/route.ts +33 -0
  355. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/oauth-callback/route.ts +50 -0
  356. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/password-reset/confirm/route.ts +19 -0
  357. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/password-reset/request/route.ts +19 -0
  358. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/refresh/route.ts +68 -0
  359. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/register/route.ts +22 -0
  360. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/billing/checkout/route.ts +20 -0
  361. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/billing/invoices/route.ts +19 -0
  362. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/billing/me/[...path]/route.ts +56 -0
  363. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/billing/portal/route.ts +18 -0
  364. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/contact/route.ts +25 -0
  365. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/[id]/messages/[messageId]/rate/route.ts +87 -0
  366. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/[id]/messages/route.ts +34 -0
  367. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/[id]/route.ts +95 -0
  368. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/route.ts +61 -0
  369. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/shared-with-me/route.ts +27 -0
  370. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/tool-stats/route.ts +25 -0
  371. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/files/[id]/route.ts +46 -0
  372. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/files/upload/route.ts +32 -0
  373. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/health/route.ts +15 -0
  374. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/invitations/[token]/route.ts +40 -0
  375. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/kb/[id]/documents/[docId]/route.ts +27 -0
  376. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/kb/[id]/documents/route.ts +57 -0
  377. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/kb/[id]/route.ts +58 -0
  378. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/kb/[id]/sync-sources/[sourceId]/route.ts +27 -0
  379. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/kb/[id]/sync-sources/[sourceId]/trigger/route.ts +27 -0
  380. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/kb/[id]/sync-sources/connectors/route.ts +27 -0
  381. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/kb/[id]/sync-sources/route.ts +51 -0
  382. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/kb/route.ts +35 -0
  383. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/me/slash-commands/[id]/route.ts +51 -0
  384. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/me/slash-commands/builtin/route.ts +24 -0
  385. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/me/slash-commands/custom/route.ts +24 -0
  386. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/me/slash-commands/route.ts +22 -0
  387. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/orgs/[id]/avatar/route.ts +54 -0
  388. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/orgs/[id]/invitations/route.ts +41 -0
  389. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/orgs/[id]/members/[userId]/route.ts +42 -0
  390. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/orgs/[id]/members/route.ts +22 -0
  391. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/orgs/[id]/route.ts +58 -0
  392. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/orgs/route.ts +37 -0
  393. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/sessions/[id]/route.ts +22 -0
  394. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/sessions/route.ts +33 -0
  395. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/users/avatar/[userId]/route.ts +30 -0
  396. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/users/me/route.ts +35 -0
  397. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/agent/models/route.ts +24 -0
  398. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/collections/[name]/documents/[documentId]/route.ts +27 -0
  399. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/collections/[name]/documents/route.ts +21 -0
  400. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/collections/[name]/info/route.ts +55 -0
  401. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/collections/[name]/ingest/route.ts +37 -0
  402. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/collections/[name]/route.ts +54 -0
  403. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/collections/route.ts +51 -0
  404. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/documents/[docId]/download/route.ts +39 -0
  405. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/documents/[docId]/route.ts +27 -0
  406. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/documents/route.ts +25 -0
  407. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/search/route.ts +29 -0
  408. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/supported-formats/route.ts +18 -0
  409. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/sync/[syncId]/route.ts +25 -0
  410. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/sync/connectors/route.ts +19 -0
  411. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/sync/local/route.ts +23 -0
  412. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/sync/sources/[sourceId]/route.ts +73 -0
  413. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/sync/sources/[sourceId]/trigger/route.ts +26 -0
  414. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/sync/sources/route.ts +41 -0
  415. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/apple-icon.tsx +34 -0
  416. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/global-error.tsx +106 -0
  417. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/globals.css +916 -0
  418. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/icon.tsx +35 -0
  419. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/layout.tsx +105 -0
  420. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/manifest.ts +21 -0
  421. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/not-found.tsx +29 -0
  422. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/opengraph-image.tsx +110 -0
  423. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/providers.tsx +34 -0
  424. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/robots.ts +45 -0
  425. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/app/sitemap.ts +69 -0
  426. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/admin/admin-nav.tsx +104 -0
  427. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/admin/user-detail-drawer.tsx +308 -0
  428. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/auth/forgot-password-form.tsx +125 -0
  429. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/auth/index.ts +4 -0
  430. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/auth/login-form.tsx +134 -0
  431. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/auth/oauth-buttons.tsx +73 -0
  432. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/auth/register-form.tsx +268 -0
  433. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/auth/reset-password-form.tsx +184 -0
  434. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/billing/billing-card.tsx +99 -0
  435. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/billing/credits-panel.tsx +133 -0
  436. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/billing/index.ts +7 -0
  437. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/billing/invoices-panel.tsx +111 -0
  438. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/billing/payment-methods-panel.tsx +89 -0
  439. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/billing/seat-selector-dialog.tsx +144 -0
  440. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/billing/subscription-panel.tsx +238 -0
  441. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/billing/usage-gauge.tsx +117 -0
  442. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/blog/mdx-components.tsx +49 -0
  443. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/brand-override.tsx +39 -0
  444. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chart-message.tsx +321 -0
  445. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chat-container.tsx +464 -0
  446. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chat-empty-state.tsx +73 -0
  447. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chat-input.tsx +346 -0
  448. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chat-settings.tsx +139 -0
  449. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/conversation-sidebar.tsx +464 -0
  450. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/copy-button.tsx +44 -0
  451. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/file-preview-panel.tsx +637 -0
  452. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/index.ts +14 -0
  453. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/kb-selector.tsx +166 -0
  454. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/markdown-content.tsx +211 -0
  455. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/message-item.tsx +369 -0
  456. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/message-list.tsx +53 -0
  457. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/pending-messages.tsx +64 -0
  458. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/rating-buttons.tsx +252 -0
  459. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/share-dialog.tsx +221 -0
  460. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/slash-command-palette.tsx +75 -0
  461. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/slash-commands.ts +148 -0
  462. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-approval-dialog.tsx +129 -0
  463. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-call-card.tsx +660 -0
  464. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/active-sessions.tsx +106 -0
  465. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/onboarding-banner.tsx +59 -0
  466. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/quick-actions.tsx +78 -0
  467. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/recent-activity.tsx +190 -0
  468. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/segmented-control.tsx +42 -0
  469. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/stat-card.tsx +131 -0
  470. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/subscription-chip.tsx +112 -0
  471. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/team-summary.tsx +150 -0
  472. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/tool-usage.tsx +143 -0
  473. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/top-models.tsx +146 -0
  474. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/usage-timeline.tsx +225 -0
  475. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/icons/google-icon.tsx +1 -0
  476. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/icons/index.ts +0 -0
  477. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/kb/create-kb-dialog.tsx +108 -0
  478. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/kb/index.ts +2 -0
  479. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/kb/kb-list.tsx +165 -0
  480. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/language-switcher.tsx +165 -0
  481. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/auth-guard.tsx +43 -0
  482. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/breadcrumb.tsx +52 -0
  483. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/command-palette.tsx +229 -0
  484. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/header.tsx +139 -0
  485. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/landing-nav.tsx +79 -0
  486. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/mobile-tab-bar.tsx +125 -0
  487. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/sidebar.tsx +111 -0
  488. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/legal/cookies-content.tsx +132 -0
  489. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/legal/privacy-content.tsx +245 -0
  490. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/legal/terms-content.tsx +265 -0
  491. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/animated-number.tsx +69 -0
  492. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/brand-icon.tsx +85 -0
  493. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/code-preview.tsx +142 -0
  494. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/contact-form.tsx +189 -0
  495. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/cookie-banner.tsx +243 -0
  496. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/data-flow-diagram.tsx +355 -0
  497. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/faq-accordion.tsx +33 -0
  498. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/feature-glyph.tsx +63 -0
  499. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/feature-mockup.tsx +169 -0
  500. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/feature-section.tsx +72 -0
  501. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/final-cta.tsx +43 -0
  502. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/footer-config.ts +112 -0
  503. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/hero-demo.tsx +117 -0
  504. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/hero.tsx +137 -0
  505. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/highlight.tsx +12 -0
  506. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/how-it-works.tsx +47 -0
  507. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/legal-page.tsx +73 -0
  508. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/logos-strip.tsx +40 -0
  509. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/marketing-footer.tsx +82 -0
  510. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/marketing-page-layout.tsx +93 -0
  511. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/marquee.tsx +68 -0
  512. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/newsletter-signup.tsx +52 -0
  513. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/pill-nav.tsx +85 -0
  514. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/pricing-teaser.tsx +97 -0
  515. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/reveal.tsx +58 -0
  516. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/section.tsx +52 -0
  517. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/testimonial-carousel.tsx +66 -0
  518. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/testimonial-grid.tsx +50 -0
  519. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/onboarding/onboarding-shell.tsx +133 -0
  520. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/onboarding/onboarding-state.ts +59 -0
  521. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/onboarding/step-agent.tsx +120 -0
  522. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/onboarding/step-data.tsx +147 -0
  523. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/onboarding/step-done.tsx +58 -0
  524. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/onboarding/step-team.tsx +102 -0
  525. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/onboarding/step-welcome.tsx +67 -0
  526. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/rag/drag-drop-overlay.tsx +108 -0
  527. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/rag/sync-source-wizard.tsx +519 -0
  528. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/seo/json-ld.tsx +27 -0
  529. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/settings/brand-color-picker.tsx +159 -0
  530. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/settings/settings-nav.tsx +125 -0
  531. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/settings/settings-section.tsx +83 -0
  532. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/settings/slash-commands-manager.tsx +305 -0
  533. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/states/empty-state.tsx +84 -0
  534. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/states/error-state.tsx +41 -0
  535. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/states/index.ts +3 -0
  536. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/states/loading-state.tsx +113 -0
  537. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/teams/create-org-dialog.tsx +69 -0
  538. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/teams/index.ts +4 -0
  539. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/teams/invite-member-dialog.tsx +91 -0
  540. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/teams/members-table.tsx +116 -0
  541. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/teams/org-switcher.tsx +77 -0
  542. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/theme/index.ts +2 -0
  543. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/theme/theme-provider.tsx +46 -0
  544. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/theme/theme-toggle.tsx +87 -0
  545. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/accordion.tsx +52 -0
  546. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/alert-dialog.tsx +116 -0
  547. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/alert.tsx +62 -0
  548. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/avatar.tsx +49 -0
  549. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/badge.tsx +31 -0
  550. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/button.test.tsx +71 -0
  551. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/button.tsx +48 -0
  552. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/card.tsx +54 -0
  553. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/checkbox.tsx +27 -0
  554. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/dialog.tsx +105 -0
  555. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/dropdown-menu.tsx +175 -0
  556. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/index.ts +77 -0
  557. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/input.tsx +21 -0
  558. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/label.tsx +20 -0
  559. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/popover.tsx +30 -0
  560. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/progress.tsx +25 -0
  561. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/radio-group.tsx +37 -0
  562. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/scroll-area.tsx +45 -0
  563. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/select.tsx +149 -0
  564. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/separator.tsx +25 -0
  565. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/sheet.tsx +99 -0
  566. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/switch.tsx +28 -0
  567. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/table.tsx +93 -0
  568. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/tabs.tsx +54 -0
  569. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/textarea.tsx +21 -0
  570. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/tooltip.tsx +29 -0
  571. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/hooks/index.ts +21 -0
  572. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-admin-conversations.ts +134 -0
  573. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-admin-users.ts +104 -0
  574. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-auth.ts +101 -0
  575. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-billing.ts +202 -0
  576. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-chat.ts +602 -0
  577. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-conversation-shares.ts +116 -0
  578. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-conversations.ts +269 -0
  579. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-invitations.ts +60 -0
  580. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-knowledge-bases.ts +226 -0
  581. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-members.ts +58 -0
  582. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-organizations.ts +86 -0
  583. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-projects.ts +0 -0
  584. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-slash-commands.ts +131 -0
  585. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-websocket.ts +113 -0
  586. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/i18n.ts +50 -0
  587. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/lib/admin-auth.ts +39 -0
  588. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/lib/api-client.ts +87 -0
  589. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/lib/blog.ts +156 -0
  590. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/lib/changelog.ts +93 -0
  591. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/lib/constants.ts +54 -0
  592. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/lib/contact-info.ts +34 -0
  593. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/lib/rag-api.ts +282 -0
  594. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/lib/schema-org.ts +80 -0
  595. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/lib/seo.ts +122 -0
  596. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/lib/server-api.ts +88 -0
  597. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/lib/slash-commands-api.ts +57 -0
  598. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/lib/teaser-plans.ts +108 -0
  599. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/lib/utils.test.ts +39 -0
  600. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/middleware.ts +34 -0
  601. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/stores/auth-store.test.ts +59 -0
  602. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/stores/auth-store.ts +71 -0
  603. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/stores/chat-store.ts +150 -0
  604. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/stores/conversation-store.ts +72 -0
  605. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/stores/file-preview-store.ts +17 -0
  606. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/stores/index.ts +13 -0
  607. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/stores/kb-selection-store.ts +54 -0
  608. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/stores/org-store.ts +53 -0
  609. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/stores/project-store.ts +0 -0
  610. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/stores/theme-store.ts +37 -0
  611. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/types/auth.ts +72 -0
  612. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/types/billing.ts +125 -0
  613. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/types/chat.ts +218 -0
  614. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/types/conversation.ts +137 -0
  615. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/types/index.ts +20 -0
  616. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/types/knowledge-base.ts +46 -0
  617. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/types/organization.ts +62 -0
  618. fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/frontend/src/types/project.ts +0 -0
  619. fastapi_fullstack-0.2.7/PKG-INFO +0 -1101
  620. fastapi_fullstack-0.2.7/README.md +0 -1061
  621. fastapi_fullstack-0.2.7/fastapi_gen/cli.py +0 -555
  622. fastapi_fullstack-0.2.7/fastapi_gen/config.py +0 -606
  623. fastapi_fullstack-0.2.7/fastapi_gen/prompts.py +0 -1096
  624. fastapi_fullstack-0.2.7/pyproject.toml +0 -174
  625. fastapi_fullstack-0.2.7/template/VARIABLES.md +0 -375
  626. fastapi_fullstack-0.2.7/template/cookiecutter.json +0 -134
  627. fastapi_fullstack-0.2.7/template/hooks/post_gen_project.py +0 -496
  628. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/.claude/rules/architecture.md +0 -109
  629. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/.env.prod.example +0 -112
  630. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/.gitignore +0 -107
  631. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/CLAUDE.md +0 -187
  632. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/Makefile +0 -378
  633. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/README.md +0 -289
  634. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/.env.example +0 -349
  635. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/Dockerfile +0 -57
  636. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/alembic/env.py +0 -109
  637. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/agents/__init__.py +0 -65
  638. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/agents/assistant.py +0 -291
  639. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/agents/crewai_assistant.py +0 -623
  640. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/agents/deepagents_assistant.py +0 -627
  641. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/agents/langchain_assistant.py +0 -276
  642. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/agents/langgraph_assistant.py +0 -420
  643. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/agents/prompts.py +0 -65
  644. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/agents/pydantic_deep_assistant.py +0 -359
  645. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/__init__.py +0 -18
  646. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/datetime_tool.py +0 -13
  647. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/rag_tool.py +0 -223
  648. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/web_search.py +0 -82
  649. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/api/deps.py +0 -770
  650. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/api/exception_handlers.py +0 -89
  651. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/__init__.py +0 -132
  652. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/admin_conversations.py +0 -166
  653. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/agent.py +0 -3345
  654. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/auth.py +0 -443
  655. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/channels.py +0 -431
  656. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/conversations.py +0 -1094
  657. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/files.py +0 -131
  658. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/health.py +0 -213
  659. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/oauth.py +0 -138
  660. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/rag.py +0 -693
  661. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/slack_webhook.py +0 -76
  662. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/telegram_webhook.py +0 -123
  663. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/channels/__init__.py +0 -31
  664. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/channels/base.py +0 -99
  665. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/channels/router.py +0 -636
  666. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/channels/slack.py +0 -253
  667. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/channels/telegram.py +0 -258
  668. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/commands/channel.py +0 -270
  669. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/commands/cleanup.py +0 -98
  670. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/commands/rag.py +0 -808
  671. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/core/config.py +0 -539
  672. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/core/exceptions.py +0 -122
  673. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/core/middleware.py +0 -100
  674. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/core/security.py +0 -102
  675. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/db/models/__init__.py +0 -53
  676. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/db/models/channel_bot.py +0 -243
  677. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/db/models/conversation.py +0 -649
  678. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/db/models/rag_document.py +0 -136
  679. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/db/models/session.py +0 -245
  680. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/db/models/user.py +0 -375
  681. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/db/models/webhook.py +0 -416
  682. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/main.py +0 -543
  683. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/rag/config.py +0 -174
  684. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/rag/connectors/__init__.py +0 -70
  685. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/rag/connectors/google_drive.py +0 -204
  686. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/rag/connectors/s3.py +0 -131
  687. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/rag/documents.py +0 -1013
  688. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/rag/embeddings.py +0 -301
  689. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/rag/ingestion.py +0 -207
  690. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/rag/reranker.py +0 -408
  691. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/rag/retrieval.py +0 -392
  692. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/rag/sources/__init__.py +0 -22
  693. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/rag/sources/base.py +0 -120
  694. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/rag/sources/google_drive.py +0 -148
  695. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/rag/sources/s3.py +0 -95
  696. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/rag/vectorstore.py +0 -622
  697. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/repositories/__init__.py +0 -75
  698. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/repositories/channel_bot.py +0 -387
  699. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/repositories/conversation.py +0 -1238
  700. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/repositories/message_rating.py +0 -661
  701. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/repositories/rag_document.py +0 -214
  702. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/repositories/user.py +0 -484
  703. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/schemas/conversation.py +0 -243
  704. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/schemas/conversation_share.py +0 -112
  705. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/schemas/user.py +0 -82
  706. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/services/__init__.py +0 -64
  707. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/services/agent.py +0 -41
  708. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/services/agent_invocation.py +0 -496
  709. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/services/channel_bot.py +0 -370
  710. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/services/conversation.py +0 -1688
  711. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/services/file_storage.py +0 -101
  712. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/services/file_upload.py +0 -535
  713. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/services/message_rating.py +0 -1193
  714. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/services/rag_document.py +0 -406
  715. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/services/rag_sync.py +0 -248
  716. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/services/sync_source.py +0 -366
  717. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/services/user.py +0 -662
  718. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/tasks/__init__.py +0 -1
  719. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/tasks/channel.py +0 -35
  720. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/tasks/rag.py +0 -140
  721. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/worker/__init__.py +0 -5
  722. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/worker/arq_app.py +0 -176
  723. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/worker/celery_app.py +0 -68
  724. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/__init__.py +0 -50
  725. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/examples.py +0 -106
  726. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/rag_tasks.py +0 -466
  727. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/schedules.py +0 -38
  728. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/taskiq_examples.py +0 -92
  729. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/pyproject.toml +0 -389
  730. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/tests/api/test_auth.py +0 -266
  731. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/tests/test_agents.py +0 -271
  732. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/tests/test_services.py +0 -363
  733. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/tests/test_services_conversation.py +0 -902
  734. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/tests/test_worker.py +0 -74
  735. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/docker-compose.dev.yml +0 -409
  736. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/docker-compose.prod.yml +0 -757
  737. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/docker-compose.yml +0 -457
  738. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/docs/configuration.md +0 -515
  739. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/docs/howto/add-rag-source.md +0 -180
  740. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/docs/howto/add-sync-connector.md +0 -273
  741. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/docs/patterns.md +0 -207
  742. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/README.md +0 -648
  743. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/messages/en.json +0 -192
  744. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/messages/pl.json +0 -192
  745. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/next.config.ts +0 -70
  746. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/package.json +0 -99
  747. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(auth)/layout.tsx +0 -94
  748. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(auth)/login/page.tsx +0 -5
  749. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(auth)/register/page.tsx +0 -5
  750. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/admin/conversations/page.tsx +0 -354
  751. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/admin/ratings/page.tsx +0 -336
  752. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/chat/page.tsx +0 -29
  753. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/dashboard/page.tsx +0 -275
  754. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/layout.tsx +0 -33
  755. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/profile/page.tsx +0 -344
  756. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/rag/page.tsx +0 -836
  757. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/page.tsx +0 -126
  758. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/auth/callback/page.tsx +0 -113
  759. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/error.tsx +0 -47
  760. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/layout.tsx +0 -35
  761. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/page.tsx +0 -282
  762. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/shared/[token]/page.tsx +0 -98
  763. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/login/route.ts +0 -65
  764. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/logout/route.ts +0 -24
  765. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/me/route.ts +0 -42
  766. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/oauth-callback/route.ts +0 -50
  767. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/refresh/route.ts +0 -68
  768. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/register/route.ts +0 -26
  769. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/[id]/messages/[messageId]/rate/route.ts +0 -95
  770. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/[id]/messages/route.ts +0 -39
  771. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/[id]/route.ts +0 -106
  772. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/route.ts +0 -71
  773. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/shared-with-me/route.ts +0 -27
  774. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/api/files/[id]/route.ts +0 -47
  775. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/api/files/upload/route.ts +0 -39
  776. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/api/health/route.ts +0 -21
  777. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/api/users/avatar/[userId]/route.ts +0 -30
  778. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/admin/conversations/route.ts +0 -48
  779. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/admin/ratings/export/route.ts +0 -58
  780. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/admin/ratings/route.ts +0 -42
  781. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/admin/ratings/summary/route.ts +0 -35
  782. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/agent/models/route.ts +0 -29
  783. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/collections/[name]/documents/[documentId]/route.ts +0 -33
  784. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/collections/[name]/documents/route.ts +0 -30
  785. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/collections/[name]/info/route.ts +0 -60
  786. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/collections/[name]/ingest/route.ts +0 -43
  787. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/collections/[name]/route.ts +0 -60
  788. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/collections/route.ts +0 -56
  789. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/documents/[docId]/download/route.ts +0 -43
  790. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/documents/[docId]/route.ts +0 -33
  791. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/documents/route.ts +0 -31
  792. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/search/route.ts +0 -35
  793. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/supported-formats/route.ts +0 -23
  794. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/sync/[syncId]/route.ts +0 -31
  795. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/sync/connectors/route.ts +0 -24
  796. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/sync/local/route.ts +0 -29
  797. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/sync/sources/[sourceId]/route.ts +0 -78
  798. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/sync/sources/[sourceId]/trigger/route.ts +0 -31
  799. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/sync/sources/route.ts +0 -46
  800. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/global-error.tsx +0 -108
  801. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/globals.css +0 -519
  802. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/layout.tsx +0 -23
  803. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/not-found.tsx +0 -31
  804. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/app/providers.tsx +0 -36
  805. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/auth/index.ts +0 -2
  806. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/auth/login-form.tsx +0 -132
  807. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/auth/register-form.tsx +0 -226
  808. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chat-container.tsx +0 -255
  809. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chat-input.tsx +0 -267
  810. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/conversation-sidebar.tsx +0 -387
  811. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/copy-button.tsx +0 -46
  812. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/index.ts +0 -9
  813. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/markdown-content.tsx +0 -167
  814. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/message-item.tsx +0 -175
  815. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/message-list.tsx +0 -38
  816. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/rating-buttons.tsx +0 -257
  817. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/share-dialog.tsx +0 -235
  818. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-approval-dialog.tsx +0 -138
  819. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-call-card.tsx +0 -389
  820. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/icons/google-icon.tsx +0 -32
  821. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/icons/index.ts +0 -3
  822. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/language-switcher.tsx +0 -76
  823. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/auth-guard.tsx +0 -45
  824. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/breadcrumb.tsx +0 -51
  825. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/header.tsx +0 -110
  826. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/landing-nav.tsx +0 -85
  827. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/sidebar.tsx +0 -82
  828. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/theme/index.ts +0 -7
  829. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/theme/theme-provider.tsx +0 -53
  830. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/theme/theme-toggle.tsx +0 -105
  831. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/accordion.tsx +0 -52
  832. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/alert-dialog.tsx +0 -86
  833. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/avatar.tsx +0 -39
  834. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/badge.tsx +0 -35
  835. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/button.test.tsx +0 -76
  836. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/button.tsx +0 -48
  837. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/card.tsx +0 -82
  838. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/checkbox.tsx +0 -27
  839. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/dialog.tsx +0 -76
  840. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/dropdown-menu.tsx +0 -162
  841. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/index.ts +0 -25
  842. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/input.tsx +0 -21
  843. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/label.tsx +0 -21
  844. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/popover.tsx +0 -30
  845. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/progress.tsx +0 -25
  846. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/radio-group.tsx +0 -37
  847. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/scroll-area.tsx +0 -45
  848. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/select.tsx +0 -141
  849. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/separator.tsx +0 -25
  850. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/sheet.tsx +0 -109
  851. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/switch.tsx +0 -28
  852. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/table.tsx +0 -93
  853. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/tabs.tsx +0 -54
  854. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/textarea.tsx +0 -21
  855. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/tooltip.tsx +0 -29
  856. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/hooks/index.ts +0 -11
  857. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-admin-conversations.ts +0 -130
  858. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-auth.ts +0 -108
  859. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-chat.ts +0 -516
  860. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-conversation-shares.ts +0 -126
  861. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-conversations.ts +0 -238
  862. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-projects.ts +0 -207
  863. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-websocket.ts +0 -108
  864. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/i18n.ts +0 -30
  865. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/lib/admin-auth.ts +0 -47
  866. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/lib/api-client.ts +0 -90
  867. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/lib/constants.ts +0 -49
  868. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/lib/rag-api.ts +0 -267
  869. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/lib/server-api.ts +0 -93
  870. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/lib/utils.test.ts +0 -44
  871. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/middleware.ts +0 -26
  872. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/stores/auth-store.test.ts +0 -72
  873. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/stores/auth-store.ts +0 -71
  874. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/stores/chat-store.ts +0 -74
  875. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/stores/conversation-store.ts +0 -74
  876. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/stores/index.ts +0 -9
  877. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/stores/project-store.ts +0 -73
  878. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/stores/theme-store.ts +0 -44
  879. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/types/auth.ts +0 -74
  880. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/types/chat.ts +0 -161
  881. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/types/conversation.ts +0 -149
  882. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/types/index.ts +0 -13
  883. fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/frontend/src/types/project.ts +0 -59
  884. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/.gitignore +0 -0
  885. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/LICENSE +0 -0
  886. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/fastapi_gen/__init__.py +0 -0
  887. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/fastapi_gen/generator.py +0 -0
  888. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/.claude/commands/add-endpoint.md +0 -0
  889. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/.claude/commands/fix-issue.md +0 -0
  890. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/.claude/commands/review.md +0 -0
  891. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/.claude/rules/api-conventions.md +0 -0
  892. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/.claude/rules/code-style.md +0 -0
  893. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/.claude/rules/exceptions-security.md +0 -0
  894. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/.claude/rules/frontend.md +0 -0
  895. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/.claude/rules/schemas-models.md +0 -0
  896. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/.claude/rules/testing.md +0 -0
  897. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/.claude/settings.json +0 -0
  898. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/.github/workflows/ci.yml +0 -0
  899. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/.gitlab-ci.yml +0 -0
  900. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/AGENTS.md +0 -0
  901. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/.dockerignore +0 -0
  902. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/.pre-commit-config.yaml +0 -0
  903. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/alembic/script.py.mako +0 -0
  904. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/.gitkeep +0 -0
  905. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/alembic.ini +0 -0
  906. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/__init__.py +0 -0
  907. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/admin.py +0 -0
  908. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/api/__init__.py +0 -0
  909. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/api/router.py +0 -0
  910. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/__init__.py +0 -0
  911. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/admin_ratings.py +0 -0
  912. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/projects.py +0 -0
  913. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/sessions.py +0 -0
  914. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/users.py +0 -0
  915. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/webhooks.py +0 -0
  916. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/api/versioning.py +0 -0
  917. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/clients/__init__.py +0 -0
  918. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/clients/redis.py +0 -0
  919. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/commands/__init__.py +0 -0
  920. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/commands/example.py +0 -0
  921. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/commands/seed.py +0 -0
  922. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/core/__init__.py +0 -0
  923. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/core/cache.py +0 -0
  924. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/core/channel_crypto.py +0 -0
  925. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/core/csrf.py +0 -0
  926. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/core/logfire_setup.py +0 -0
  927. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/core/logging.py +0 -0
  928. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/core/oauth.py +0 -0
  929. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/core/rate_limit.py +0 -0
  930. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/core/sanitize.py +0 -0
  931. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/db/__init__.py +0 -0
  932. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/db/base.py +0 -0
  933. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/db/models/channel_identity.py +0 -0
  934. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/db/models/channel_session.py +0 -0
  935. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/db/models/chat_file.py +0 -0
  936. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/db/models/conversation_share.py +0 -0
  937. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/db/models/message_rating.py +0 -0
  938. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/db/models/project.py +0 -0
  939. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/db/models/sync_log.py +0 -0
  940. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/db/models/sync_source.py +0 -0
  941. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/db/session.py +0 -0
  942. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/repositories/channel_identity.py +0 -0
  943. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/repositories/channel_session.py +0 -0
  944. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/repositories/chat_file.py +0 -0
  945. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/repositories/conversation_share.py +0 -0
  946. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/repositories/project.py +0 -0
  947. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/repositories/session.py +0 -0
  948. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/repositories/sync_log.py +0 -0
  949. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/repositories/sync_source.py +0 -0
  950. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/repositories/webhook.py +0 -0
  951. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/schemas/__init__.py +0 -0
  952. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/schemas/base.py +0 -0
  953. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/schemas/channel_bot.py +0 -0
  954. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/schemas/file.py +0 -0
  955. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/schemas/message_rating.py +0 -0
  956. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/schemas/project.py +0 -0
  957. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/schemas/rag.py +0 -0
  958. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/schemas/session.py +0 -0
  959. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/schemas/sync_source.py +0 -0
  960. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/schemas/token.py +0 -0
  961. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/schemas/webhook.py +0 -0
  962. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/services/conversation_share.py +0 -0
  963. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/services/health.py +0 -0
  964. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/services/project.py +0 -0
  965. {fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app → fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services}/rag/__init__.py +0 -0
  966. {fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app → fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services}/rag/image_describer.py +0 -0
  967. {fastapi_fullstack-0.2.7/template/{{cookiecutter.project_slug}}/backend/app → fastapi_fullstack-0.2.9/template/{{cookiecutter.project_slug}}/backend/app/services}/rag/models.py +0 -0
  968. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/services/session.py +0 -0
  969. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/services/webhook.py +0 -0
  970. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/app/worker/taskiq_app.py +0 -0
  971. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/cli/__init__.py +0 -0
  972. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/cli/commands.py +0 -0
  973. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/scripts/.gitkeep +0 -0
  974. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/tests/__init__.py +0 -0
  975. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/tests/api/__init__.py +0 -0
  976. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_exceptions.py +0 -0
  977. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_health.py +0 -0
  978. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_metrics.py +0 -0
  979. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_openapi.py +0 -0
  980. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_users.py +0 -0
  981. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/tests/conftest.py +0 -0
  982. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/tests/test_admin.py +0 -0
  983. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/tests/test_clients.py +0 -0
  984. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/tests/test_commands.py +0 -0
  985. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/tests/test_core.py +0 -0
  986. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/tests/test_migrations.py +0 -0
  987. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/tests/test_repositories.py +0 -0
  988. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/tests/test_security.py +0 -0
  989. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/backend/tests/test_ssrf.py +0 -0
  990. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/docker-compose.frontend.yml +0 -0
  991. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/docs/adding_features.md +0 -0
  992. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/docs/architecture.md +0 -0
  993. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/docs/commands.md +0 -0
  994. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/docs/file-processing.md +0 -0
  995. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/docs/howto/add-agent-tool.md +0 -0
  996. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/docs/howto/add-api-endpoint.md +0 -0
  997. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/docs/howto/add-background-task.md +0 -0
  998. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/docs/howto/configure-sync-sources.md +0 -0
  999. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/docs/howto/customize-agent-prompt.md +0 -0
  1000. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/docs/howto/use-ratings.md +0 -0
  1001. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/docs/permissions.md +0 -0
  1002. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/docs/testing.md +0 -0
  1003. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/frontend/.dockerignore +0 -0
  1004. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/frontend/.editorconfig +0 -0
  1005. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/frontend/.env.example +0 -0
  1006. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/frontend/.gitignore +0 -0
  1007. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/frontend/.husky/pre-commit +0 -0
  1008. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/frontend/.prettierignore +0 -0
  1009. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/frontend/.prettierrc +0 -0
  1010. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/frontend/Dockerfile +0 -0
  1011. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/frontend/e2e/auth.setup.ts +0 -0
  1012. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/frontend/e2e/auth.spec.ts +0 -0
  1013. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/frontend/e2e/chat.spec.ts +0 -0
  1014. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/frontend/e2e/home.spec.ts +0 -0
  1015. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/frontend/eslint.config.mjs +0 -0
  1016. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/frontend/instrumentation.ts +0 -0
  1017. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/frontend/playwright.config.ts +0 -0
  1018. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/frontend/postcss.config.mjs +0 -0
  1019. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/[id]/shares/[shareId]/route.ts +0 -0
  1020. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/[id]/shares/route.ts +0 -0
  1021. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/export/route.ts +0 -0
  1022. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/users/me/avatar/route.ts +0 -0
  1023. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/index.ts +0 -0
  1024. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/page-transition.tsx +0 -0
  1025. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/skeleton.tsx +0 -0
  1026. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/spinner.tsx +0 -0
  1027. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/frontend/src/lib/file-api.ts +0 -0
  1028. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/frontend/src/lib/utils.ts +0 -0
  1029. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/frontend/src/stores/chat-sidebar-store.ts +0 -0
  1030. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/frontend/src/stores/sidebar-store.ts +0 -0
  1031. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/frontend/src/types/api.ts +0 -0
  1032. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/frontend/src/types/speech.d.ts +0 -0
  1033. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/frontend/tsconfig.json +0 -0
  1034. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/frontend/vercel.json +0 -0
  1035. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/frontend/vitest.config.ts +0 -0
  1036. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/frontend/vitest.setup.ts +0 -0
  1037. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/kubernetes/configmap.yaml +0 -0
  1038. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/kubernetes/deployment.yaml +0 -0
  1039. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/kubernetes/ingress.yaml +0 -0
  1040. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/kubernetes/kustomization.yaml +0 -0
  1041. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/kubernetes/namespace.yaml +0 -0
  1042. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/kubernetes/secret.yaml +0 -0
  1043. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/kubernetes/service.yaml +0 -0
  1044. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/nginx/nginx.conf +0 -0
  1045. {fastapi_fullstack-0.2.7 → fastapi_fullstack-0.2.9}/template/{{cookiecutter.project_slug}}/nginx/ssl/.gitkeep +0 -0
@@ -0,0 +1,1241 @@
1
+ Metadata-Version: 2.4
2
+ Name: fastapi-fullstack
3
+ Version: 0.2.9
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
+ Project-URL: Homepage, https://github.com/vstorm-co/full-stack-ai-agent-template
6
+ Project-URL: Documentation, https://github.com/vstorm-co/full-stack-ai-agent-template#readme
7
+ Project-URL: Repository, https://github.com/vstorm-co/full-stack-ai-agent-template
8
+ Author-email: Vstorm <hr@vstorm.co>
9
+ License: MIT
10
+ License-File: LICENSE
11
+ Keywords: ai-agents,celery,cookiecutter,docker,fastapi,full-stack,langchain,langgraph,llm,logfire,milvus,mongodb,nextjs,observability,postgresql,pydantic-ai,python,rag,react,redis,retrieval-augmented-generation,template,typescript
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Environment :: Console
14
+ Classifier: Framework :: FastAPI
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: License :: OSI Approved :: MIT License
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Topic :: Software Development :: Code Generators
21
+ Requires-Python: >=3.11
22
+ Requires-Dist: arq>=0.28.0
23
+ Requires-Dist: celery>=5.6.3
24
+ Requires-Dist: click>=8.3.0
25
+ Requires-Dist: cookiecutter>=2.7.0
26
+ Requires-Dist: email-validator>=2.3.0
27
+ Requires-Dist: httpx>=0.28.1
28
+ Requires-Dist: pydantic-settings>=2.13.0
29
+ Requires-Dist: pydantic>=2.13.0
30
+ Requires-Dist: pytest-asyncio>=1.3.0
31
+ Requires-Dist: pytest>=9.0.3
32
+ Requires-Dist: questionary>=2.1.0
33
+ Requires-Dist: rich>=15.0.0
34
+ Requires-Dist: stripe>=15.1.0
35
+ Requires-Dist: taskiq>=0.12.4
36
+ Provides-Extra: dev
37
+ Requires-Dist: pre-commit>=4.0.0; extra == 'dev'
38
+ Requires-Dist: pytest-cov>=7.0.0; extra == 'dev'
39
+ Requires-Dist: pytest>=9.0.0; extra == 'dev'
40
+ Requires-Dist: ruff>=0.14.0; extra == 'dev'
41
+ Requires-Dist: ty>=0.0.31; extra == 'dev'
42
+ Provides-Extra: docs
43
+ Requires-Dist: mkdocs-material>=9.7.0; extra == 'docs'
44
+ Requires-Dist: mkdocs>=1.6.1; extra == 'docs'
45
+ Requires-Dist: pymdown-extensions>=10.20; extra == 'docs'
46
+ Description-Content-Type: text/markdown
47
+
48
+ <p align="center">
49
+ <img src="https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/banner.png" alt="Full-Stack AI Agent Template" width="100%">
50
+ </p>
51
+
52
+ <h1 align="center">Full-Stack AI Agent Template</h1>
53
+
54
+ <p align="center">
55
+ <i>Production-ready FastAPI + Next.js project generator with AI agents, RAG, and 20+ enterprise integrations.</i>
56
+ </p>
57
+
58
+ <p align="center">
59
+ <a href="#-quick-start">Quick Start</a> •
60
+ <a href="#-features">Features</a> •
61
+ <a href="#-demo">Demo</a> •
62
+ <a href="https://vstorm-co.github.io/full-stack-ai-agent-template/">Documentation</a> •
63
+ <a href="https://oss.vstorm.co/projects/full-stack-ai-agent-template/configurator/">Configurator</a> •
64
+ <a href="https://pypi.org/project/fastapi-fullstack/">PyPI</a>
65
+ </p>
66
+
67
+ <p align="center">
68
+ <a href="https://pypi.org/project/fastapi-fullstack/"><img src="https://img.shields.io/pypi/v/fastapi-fullstack?color=green&logo=pypi&logoColor=white" alt="PyPI"></a>
69
+ <a href="https://pepy.tech/projects/fastapi-fullstack"><img src="https://static.pepy.tech/badge/fastapi-fullstack/month" alt="PyPI Downloads"></a>
70
+ <a href="https://github.com/vstorm-co/full-stack-ai-agent-template/stargazers"><img src="https://img.shields.io/github/stars/vstorm-co/full-stack-ai-agent-template?style=flat&logo=github&color=yellow" alt="GitHub Stars"></a>
71
+ <a href="https://www.python.org/"><img src="https://img.shields.io/badge/python-3.11+-blue?logo=python&logoColor=white" alt="Python 3.11+"></a>
72
+ <a href="https://github.com/vstorm-co/full-stack-ai-agent-template/blob/main/LICENSE"><img src="https://img.shields.io/github/license/vstorm-co/full-stack-ai-agent-template?color=blue" alt="License"></a>
73
+ <img src="https://img.shields.io/badge/coverage-100%25-brightgreen" alt="Coverage">
74
+ <a href="https://github.com/vstorm-co/full-stack-ai-agent-template/actions/workflows/ci.yml"><img src="https://github.com/vstorm-co/full-stack-ai-agent-template/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
75
+ <a href="https://github.com/vstorm-co/full-stack-ai-agent-template/blob/main/SECURITY.md"><img src="https://img.shields.io/badge/security-policy-blueviolet?logo=shieldsdotio&logoColor=white" alt="Security Policy"></a>
76
+ <a href="https://www.bestpractices.dev/projects/12539"><img src="https://www.bestpractices.dev/projects/12539/badge" alt="OpenSSF Best Practices"></a>
77
+ <a href="https://github.com/pydantic/pydantic-ai"><img src="https://img.shields.io/badge/Powered%20by-Pydantic%20AI-E92063?logo=pydantic&logoColor=white" alt="Pydantic AI"></a>
78
+ <a href="https://x.com/Kacper95682155"><img src="https://img.shields.io/badge/X-000000?logo=x&logoColor=white" alt="X"></a>
79
+ </p>
80
+
81
+ <p align="center">
82
+ <b>🤖 6 AI Agent Frameworks</b> <i>(PydanticAI, PydanticDeep, LangChain, LangGraph, CrewAI, DeepAgents)</i>
83
+ <br>
84
+ <b>📄 RAG Pipeline</b> <i>(Milvus, Qdrant, pgvector, ChromaDB)</i>
85
+ <br>
86
+ <b>⚡ FastAPI + Next.js 15</b> <i>(WebSocket streaming, real-time chat UI)</i>
87
+ <br>
88
+ <b>🔗 Conversation Sharing</b> <i>(direct sharing, public links, admin browser)</i>
89
+ <br>
90
+ <b>🔒 Enterprise-Ready</b> <i>(JWT, OAuth, admin panel, Celery, Docker, K8s)</i>
91
+ </p>
92
+
93
+ <details>
94
+ <summary><b>Table of Contents</b></summary>
95
+
96
+ - [Quick Start](#-quick-start)
97
+ - [Demo](#-demo)
98
+ - [Screenshots](#-screenshots)
99
+ - [Why This Template](#-why-this-template)
100
+ - [Features](#-features)
101
+ - [Architecture](#-architecture)
102
+ - [AI Agent](#-ai-agent)
103
+ - [RAG](#-rag-retrieval-augmented-generation)
104
+ - [Observability](#-observability)
105
+ - [Django-style CLI](#-django-style-cli)
106
+ - [Generated Project Structure](#-generated-project-structure)
107
+ - [Configuration Options](#-configuration-options)
108
+ - [Comparison](#-comparison)
109
+ - [FAQ](#-faq)
110
+ - [Documentation](#-documentation)
111
+ - [Contributing](#-contributing)
112
+
113
+ </details>
114
+
115
+ ---
116
+
117
+ ## Vstorm OSS Ecosystem
118
+
119
+ This template is part of a broader open-source ecosystem for production AI agents:
120
+
121
+ | Project | Description | |
122
+ |---------|-------------|---|
123
+ | **[pydantic-deepagents](https://github.com/vstorm-co/pydantic-deepagents)** | The modular agent runtime for Python. Claude Code-style CLI with Docker sandbox, browser automation, multi-agent teams, and /improve. | [![Stars](https://img.shields.io/github/stars/vstorm-co/pydantic-deepagents?style=flat&logo=github&color=yellow)](https://github.com/vstorm-co/pydantic-deepagents) |
124
+ | **[pydantic-ai-shields](https://github.com/vstorm-co/pydantic-ai-shields)** | Drop-in guardrails for Pydantic AI agents. 5 infra + 5 content shields. | [![Stars](https://img.shields.io/github/stars/vstorm-co/pydantic-ai-shields?style=flat&logo=github&color=yellow)](https://github.com/vstorm-co/pydantic-ai-shields) |
125
+ | **[pydantic-ai-subagents](https://github.com/vstorm-co/pydantic-ai-subagents)** | Declarative multi-agent orchestration with token tracking. | [![Stars](https://img.shields.io/github/stars/vstorm-co/pydantic-ai-subagents?style=flat&logo=github&color=yellow)](https://github.com/vstorm-co/pydantic-ai-subagents) |
126
+ | **[summarization-pydantic-ai](https://github.com/vstorm-co/pydantic-ai-summarization)** | Smart context compression for long-running agents. | [![Stars](https://img.shields.io/github/stars/vstorm-co/summarization-pydantic-ai?style=flat&logo=github&color=yellow)](https://github.com/vstorm-co/summarization-pydantic-ai) |
127
+ | **[pydantic-ai-backend](https://github.com/vstorm-co/pydantic-ai-backend)** | Sandboxed execution for AI agents. Docker + Daytona. | [![Stars](https://img.shields.io/github/stars/vstorm-co/pydantic-ai-backend?style=flat&logo=github&color=yellow)](https://github.com/vstorm-co/pydantic-ai-backend) |
128
+
129
+ > **Want the runtime behind this template's AI agents?** [pydantic-deepagents](https://github.com/vstorm-co/pydantic-deepagents) powers the `deepagents` framework option — install it standalone with `curl -fsSL .../install.sh | bash`.
130
+
131
+ Browse all projects at [oss.vstorm.co](https://oss.vstorm.co)
132
+
133
+ ---
134
+
135
+ ## 🚀 Quick Start
136
+
137
+ > [!TIP]
138
+ > **Prefer a visual configurator?** Use the [Web Configurator](https://oss.vstorm.co/projects/full-stack-ai-agent-template/configurator/) to configure your project in the browser and download a ZIP — no CLI installation needed.
139
+
140
+ ### Installation
141
+
142
+ ```bash
143
+ # pip
144
+ pip install fastapi-fullstack
145
+
146
+ # uv (recommended)
147
+ uv tool install fastapi-fullstack
148
+
149
+ # pipx
150
+ pipx install fastapi-fullstack
151
+ ```
152
+
153
+ ### Create Your Project
154
+
155
+ ```bash
156
+ # Interactive wizard (recommended — runs by default)
157
+ fastapi-fullstack
158
+
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
177
+ 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.
182
+
183
+ #### Day-to-day
184
+
185
+ ```bash
186
+ make dev # idempotent: build + up + migrate. Re-run anytime.
187
+ ```
188
+
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)
197
+
198
+ **Then access:**
199
+
200
+ | | URL | |
201
+ |---|---|---|
202
+ | Backend API | <http://localhost:8000> | |
203
+ | Docs | <http://localhost:8000/docs> | OpenAPI / Swagger |
204
+ | Admin | <http://localhost:8000/admin> | `admin@example.com` / `admin123` (after `make seed`) |
205
+ | Frontend | <http://localhost:3000> | `make dev-frontend` (Docker) or `cd frontend && bun install && bun dev` (local) |
206
+
207
+ ### Day-to-day commands
208
+
209
+ ```bash
210
+ make dev # bootstrap or restart (no admin re-seed)
211
+ make seed # one-shot admin creation (no-op if admin exists)
212
+ make dev-down # stop everything
213
+ make dev-logs # tail container logs
214
+ make dev-rebuild # force-rebuild backend image (after pyproject.toml changes)
215
+ make dev-frontend # start the Next.js container
216
+ ```
217
+
218
+ ### Environments
219
+
220
+ | `make` target | Compose file | When to use |
221
+ |---|---|---|
222
+ | `make dev` | `docker-compose.dev.yml` | Local development with hot-reload + bind-mounted source. |
223
+ | `make stage` | `docker-compose.yml` | Production-like build (no bind mounts) running on localhost. Sanity-check before deploy. |
224
+ | `make prod` | `docker-compose.prod.yml` | Production. Requires `backend/.env` (copy from `backend/.env.example`, fill real secrets) + external Nginx using `nginx/nginx.conf`. |
225
+
226
+ Each env has matching `-down`, `-logs`, `-rebuild` siblings.
227
+
228
+ > [!NOTE]
229
+ > **Windows users:** `make` requires GNU Make. Install via [Chocolatey](https://chocolatey.org/) (`choco install make`) or use **WSL2 / Git Bash**. The Docker workflow is identical across macOS, Linux, and WSL2.
230
+
231
+ <details>
232
+ <summary><b>Local backend (no Docker, for IDE breakpoints)</b></summary>
233
+
234
+ If you want to run the backend on the host while the database stays in Docker:
235
+
236
+ ```bash
237
+ cd my_ai_app
238
+ make install # uv sync + pre-commit hooks
239
+
240
+ # Start only infrastructure containers
241
+ docker compose -f docker-compose.dev.yml up -d db redis # add 'milvus etcd minio' if RAG
242
+
243
+ make db-upgrade # apply migrations
244
+ make create-admin # interactive
245
+ make run # uvicorn --reload
246
+ ```
247
+
248
+ </details>
249
+
250
+ <details>
251
+ <summary><b>Production deploy</b></summary>
252
+
253
+ ```bash
254
+ # On your server
255
+ git clone <your-repo>
256
+ cd my_ai_app
257
+
258
+ cp backend/.env.example backend/.env # fill in real secrets
259
+ # Configure your nginx host using nginx/nginx.conf as reference
260
+
261
+ make prod # builds + starts + migrates
262
+ make prod-logs # tail logs
263
+ ```
264
+
265
+ For frontend deployment to **Vercel**:
266
+
267
+ ```bash
268
+ cd frontend && npx vercel --prod
269
+ ```
270
+
271
+ In the Vercel dashboard set `BACKEND_URL`, `BACKEND_WS_URL`, `NEXT_PUBLIC_AUTH_ENABLED=true`.
272
+
273
+ </details>
274
+
275
+ ### Using the Project CLI
276
+
277
+ Each generated project has a CLI named after your `project_slug`. For example, if you created `my_ai_app`:
278
+
279
+ ```bash
280
+ cd backend
281
+
282
+ # The CLI command is: uv run <project_slug> <command>
283
+ uv run my_ai_app server run --reload # Start dev server
284
+ uv run my_ai_app db migrate -m "message" # Create migration
285
+ uv run my_ai_app db upgrade # Apply migrations
286
+ uv run my_ai_app user create-admin # Create admin user
287
+ ```
288
+
289
+ Use `make help` to see all available Makefile shortcuts.
290
+
291
+ ---
292
+
293
+ ## 🎬 Demo
294
+
295
+ **CLI generator:**
296
+
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>
300
+
301
+ **Live chat — web search:**
302
+
303
+ <p align="center">
304
+ <img src="https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/chat/websearchdemo.gif" alt="Agent answering with live web search">
305
+ </p>
306
+
307
+ **Live chat — chart generation:**
308
+
309
+ <p align="center">
310
+ <img src="https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/chat/chartdemo.gif" alt="Agent generating an interactive chart">
311
+ </p>
312
+
313
+ **File upload & RAG ingestion:**
314
+
315
+ <p align="center">
316
+ <img src="https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new/file_uploud_light.gif" alt="File Upload Demo">
317
+ </p>
318
+
319
+ ---
320
+
321
+ ## 📸 Screenshots
322
+
323
+ ### Marketing Site
324
+
325
+ **Landing Page** — Full-page marketing site with hero, features breakdown, testimonials, pricing preview, and FAQ. Generated with the `enable_marketing_site` option.
326
+
327
+ ![Landing Page](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new/landing_page.png)
328
+
329
+ **Pricing** — Three-tier pricing page (Starter / Pro / Business) with monthly/annual toggle. Pulls live plan data from Stripe when connected; shows template plans otherwise.
330
+
331
+ ![Pricing](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new/pricing.png)
332
+
333
+ **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.
334
+
335
+ ![Blog](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new/blog.png)
336
+
337
+ **Blog Post** — Individual post view with author card, reading time, and tag badges. Content is plain MDX — edit files and redeploy.
338
+
339
+ ![Blog Post](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new/blog_post.png)
340
+
341
+ ### Auth
342
+
343
+ **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.
344
+
345
+ ![Login](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new/login.png)
346
+
347
+ **Register** — Same split-screen layout as login. Google sign-up and email/password form with confirm-password field and terms acceptance.
348
+
349
+ ![Register](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new/register.png)
350
+
351
+ ### Dashboard
352
+
353
+ **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.
354
+
355
+ ![Dashboard Light](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new/dashboard_light.png)
356
+
357
+ **Dashboard (dark mode)** — Same dashboard in dark theme. Theme is saved per-device and can be overridden per-workspace in appearance settings.
358
+
359
+ ![Dashboard Dark](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new/dashboard_dark.png)
360
+
361
+ ### Teams & Organizations
362
+
363
+ **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.
364
+
365
+ ![Organizations](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new/organizations.png)
366
+
367
+ **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.
368
+
369
+ ![Organization Details](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new/organizations_details.png)
370
+
371
+ ### Knowledge Bases
372
+
373
+ **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.
374
+
375
+ ![Knowledge Bases](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new/knowledge_bases.png)
376
+
377
+ ### Billing
378
+
379
+ **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.
380
+
381
+ ![Billing](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new/billing.png)
382
+
383
+ ### Profile & Settings
384
+
385
+ **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.
386
+
387
+ ![Profile](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new/profile.png)
388
+
389
+ **Account & Security** — Change password form with strength guidance, "Sign out everywhere" button, and danger zone for permanent account deletion.
390
+
391
+ ![Account](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new/profile_account.png)
392
+
393
+ **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.
394
+
395
+ ![Slash Commands](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new/profile_commands.png)
396
+
397
+ **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.
398
+
399
+ ![Appearance](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new/profile_apperance.png)
400
+
401
+ **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`.
402
+
403
+ ![Notifications](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new/profile_notifications.png)
404
+
405
+ ### Admin Panel
406
+
407
+ **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.
408
+
409
+ ![Admin Overview](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new/admin.png)
410
+
411
+ **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.
412
+
413
+ ![Admin Users](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new/admin_users.png)
414
+
415
+ **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.
416
+
417
+ ![Admin Conversations](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new/admin_conversations.png)
418
+
419
+ **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.
420
+
421
+ ![Admin Ratings](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new/admin_ratings.png)
422
+
423
+ **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.
424
+
425
+ ![Stripe Events](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new/admin_stripe_events.png)
426
+
427
+ **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.
428
+
429
+ ![System Health](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/new/admin_system_health.png)
430
+
431
+ ### Observability
432
+
433
+ **Logfire (PydanticAI)** — Full distributed tracing for PydanticAI agent runs, FastAPI requests, database queries, Redis, Celery tasks, and HTTPX calls — all in one timeline.
434
+
435
+ ![Logfire](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/logfire.png)
436
+
437
+ **LangSmith (LangChain / LangGraph)** — Trace viewer for LangChain agent runs with step-by-step chain inspection, token usage, and feedback collection.
438
+
439
+ ![LangSmith](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/langsmith.png)
440
+
441
+ ### Messaging Channels
442
+
443
+ **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.
444
+
445
+ ![Telegram](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/telegram.png)
446
+
447
+ ### Monitoring & API
448
+
449
+ **Celery Flower** — Real-time task queue monitor. Track worker status, task throughput, and failure rates for background jobs (document ingestion, email, webhooks).
450
+
451
+ ![Flower](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/flower.png)
452
+
453
+ **API Documentation** — Auto-generated OpenAPI / Swagger UI at `/docs`. All endpoints documented with request/response schemas, auth requirements, and example payloads.
454
+
455
+ ![API Docs](https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/docs_2.png)
456
+
457
+ ---
458
+
459
+ ## 🎯 Why This Template
460
+
461
+ Building AI/LLM applications requires more than just an API wrapper. You need:
462
+
463
+ - **Type-safe AI agents** with tool/function calling
464
+ - **Real-time streaming** responses via WebSocket
465
+ - **Conversation persistence** and history management
466
+ - **Production infrastructure** - auth, rate limiting, observability
467
+ - **Enterprise integrations** - background tasks, webhooks, admin panels
468
+
469
+ This template gives you all of that out of the box, with **20+ configurable integrations** so you can focus on building your AI product, not boilerplate.
470
+
471
+ ### Perfect For
472
+
473
+ - 🤖 **AI Chatbots & Assistants** - PydanticAI or LangChain agents with streaming responses
474
+ - 📊 **ML Applications** - Background task processing with Celery/Taskiq
475
+ - 🏢 **Enterprise SaaS** - Full auth, admin panel, webhooks, and more
476
+ - 🚀 **Startups** - Ship fast with production-ready infrastructure
477
+
478
+ ### AI-Agent Friendly
479
+
480
+ 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.
481
+
482
+ ---
483
+
484
+ ## ✨ Features
485
+
486
+ <p align="center">
487
+ <a href="https://ai.pydantic.dev"><img src="https://img.shields.io/badge/PydanticAI-E92063?logo=pydantic&logoColor=white" alt="PydanticAI"></a>
488
+ <a href="https://python.langchain.com"><img src="https://img.shields.io/badge/LangChain-1C3C3C?logo=langchain&logoColor=white" alt="LangChain"></a>
489
+ <a href="https://langchain-ai.github.io/langgraph/"><img src="https://img.shields.io/badge/LangGraph-005A9C?logo=langchain&logoColor=white" alt="LangGraph"></a>
490
+ <a href="https://www.crewai.com"><img src="https://img.shields.io/badge/CrewAI-FF6B35?logoColor=white" alt="CrewAI"></a>
491
+ <a href="https://milvus.io"><img src="https://img.shields.io/badge/Milvus-FF6B35?logoColor=white" alt="Milvus"></a>
492
+ <a href="https://openai.com"><img src="https://img.shields.io/badge/OpenAI-412991?logo=openai&logoColor=white" alt="OpenAI"></a>
493
+ <a href="https://anthropic.com"><img src="https://img.shields.io/badge/Anthropic-D4A373?logo=anthropic&logoColor=white" alt="Anthropic"></a>
494
+ <a href="https://ai.google.dev"><img src="https://img.shields.io/badge/Gemini-4285F4?logo=google&logoColor=white" alt="Google Gemini"></a>
495
+ <a href="https://openrouter.ai"><img src="https://img.shields.io/badge/OpenRouter-6366F1?logoColor=white" alt="OpenRouter"></a>
496
+ </p>
497
+
498
+ <p align="center">
499
+ <a href="https://fastapi.tiangolo.com"><img src="https://img.shields.io/badge/FastAPI-009688?logo=fastapi&logoColor=white" alt="FastAPI"></a>
500
+ <a href="https://nextjs.org"><img src="https://img.shields.io/badge/Next.js_15-000000?logo=next.js&logoColor=white" alt="Next.js 15"></a>
501
+ <a href="https://react.dev"><img src="https://img.shields.io/badge/React_19-61DAFB?logo=react&logoColor=black" alt="React 19"></a>
502
+ <a href="https://www.typescriptlang.org"><img src="https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=white" alt="TypeScript"></a>
503
+ <a href="https://tailwindcss.com"><img src="https://img.shields.io/badge/Tailwind_v4-06B6D4?logo=tailwindcss&logoColor=white" alt="Tailwind CSS"></a>
504
+ <a href="https://www.sqlalchemy.org"><img src="https://img.shields.io/badge/SQLAlchemy-D71F00?logo=sqlalchemy&logoColor=white" alt="SQLAlchemy"></a>
505
+ </p>
506
+
507
+ <p align="center">
508
+ <a href="https://www.postgresql.org"><img src="https://img.shields.io/badge/PostgreSQL-4169E1?logo=postgresql&logoColor=white" alt="PostgreSQL"></a>
509
+ <a href="https://www.mongodb.com"><img src="https://img.shields.io/badge/MongoDB-47A248?logo=mongodb&logoColor=white" alt="MongoDB"></a>
510
+ <a href="https://redis.io"><img src="https://img.shields.io/badge/Redis-DC382D?logo=redis&logoColor=white" alt="Redis"></a>
511
+ <a href="https://milvus.io"><img src="https://img.shields.io/badge/Milvus-00A1EA?logoColor=white" alt="Milvus"></a>
512
+ <a href="https://qdrant.tech"><img src="https://img.shields.io/badge/Qdrant-FF6B6B?logoColor=white" alt="Qdrant"></a>
513
+ <a href="https://www.trychroma.com"><img src="https://img.shields.io/badge/ChromaDB-FF6F61?logoColor=white" alt="ChromaDB"></a>
514
+ <a href="https://docs.celeryq.dev"><img src="https://img.shields.io/badge/Celery-37814A?logo=celery&logoColor=white" alt="Celery"></a>
515
+ <a href="https://logfire.pydantic.dev"><img src="https://img.shields.io/badge/Logfire-E92063?logo=pydantic&logoColor=white" alt="Logfire"></a>
516
+ <a href="https://sentry.io"><img src="https://img.shields.io/badge/Sentry-362D59?logo=sentry&logoColor=white" alt="Sentry"></a>
517
+ <a href="https://prometheus.io"><img src="https://img.shields.io/badge/Prometheus-E6522C?logo=prometheus&logoColor=white" alt="Prometheus"></a>
518
+ </p>
519
+
520
+ <p align="center">
521
+ <a href="https://www.docker.com"><img src="https://img.shields.io/badge/Docker-2496ED?logo=docker&logoColor=white" alt="Docker"></a>
522
+ <a href="https://kubernetes.io"><img src="https://img.shields.io/badge/Kubernetes-326CE5?logo=kubernetes&logoColor=white" alt="Kubernetes"></a>
523
+ <a href="https://github.com/features/actions"><img src="https://img.shields.io/badge/GitHub_Actions-2088FF?logo=githubactions&logoColor=white" alt="GitHub Actions"></a>
524
+ <a href="https://aws.amazon.com/s3/"><img src="https://img.shields.io/badge/S3-569A31?logo=amazons3&logoColor=white" alt="S3"></a>
525
+ </p>
526
+
527
+ ### 🤖 AI/LLM First
528
+
529
+ - **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)
530
+ - **4 LLM Providers** - OpenAI, Anthropic, Google Gemini, OpenRouter
531
+ - **RAG** - Document ingestion, vector search, reranking (Milvus, Qdrant, ChromaDB, pgvector)
532
+ - **WebSocket Streaming** - Real-time responses with full event access
533
+ - **Messaging Channels** - Telegram and Slack multi-bot integration with polling, webhooks, per-thread sessions, group concurrency control
534
+ - **Conversation Sharing** - Share conversations with users or via public links, admin conversation browser
535
+ - **Conversation Persistence** - Save chat history to database
536
+ - **Message Ratings** - Like/dislike responses with feedback, admin analytics
537
+ - **Image Description** - Extract images from documents, describe via LLM vision
538
+ - **Multimodal Embeddings** - Google Gemini embedding model (text + images)
539
+ - **Document Sources** - Local files, API upload, Google Drive, S3/MinIO
540
+ - **Sync Sources** - Configurable connectors (Google Drive, S3) with scheduled sync
541
+ - **Observability** - Logfire for PydanticAI, LangSmith for LangChain/LangGraph/DeepAgents
542
+
543
+ ### ⚡ Backend (FastAPI)
544
+
545
+ - **[FastAPI](https://fastapi.tiangolo.com)** + **[Pydantic v2](https://docs.pydantic.dev)** - High-performance async API
546
+ - **Multiple Databases** - PostgreSQL (async), MongoDB (async), SQLite
547
+ - **Authentication** - JWT + Refresh tokens, API Keys, OAuth2 (Google)
548
+ - **Background Tasks** - Celery, Taskiq, or ARQ
549
+ - **Django-style CLI** - Custom management commands with auto-discovery
550
+
551
+ ### 🎨 Frontend (Next.js 15)
552
+
553
+ - **React 19** + **TypeScript** + **Tailwind CSS v4**
554
+ - **AI Chat Interface** - WebSocket streaming, tool call visualization
555
+ - **Authentication** - HTTP-only cookies, auto-refresh, password reset, magic link
556
+ - **Marketing Site** - hero, pricing, FAQ, blog, contact form, legal pages (PL + EN)
557
+ - **User Settings** - profile, API keys CRUD (`sk_*` tokens), onboarding tracking
558
+ - **Admin Panel** - workspace stats, Stripe events browser
559
+ - **SEO** - per-page metadata, OG image, sitemap, robots, manifest, favicons
560
+ - **Dark Mode** + **i18n** (PL/EN via next-intl, locale-prefixed routes)
561
+
562
+ ### 🔌 20+ Enterprise Integrations
563
+
564
+ | Category | Integrations |
565
+ |----------|-------------|
566
+ | **AI Frameworks** | PydanticAI, PydanticDeep, LangChain, LangGraph, CrewAI, DeepAgents |
567
+ | **LLM Providers** | OpenAI, Anthropic, Google Gemini, OpenRouter |
568
+ | **RAG / Vector Stores** | Milvus, Qdrant, ChromaDB, pgvector |
569
+ | **RAG Sources** | Local files, API upload, Google Drive, S3/MinIO, Sync Sources (configurable, scheduled) |
570
+ | **Embeddings** | OpenAI, Voyage, Gemini (multimodal), SentenceTransformers |
571
+ | **Caching & State** | Redis, fastapi-cache2 |
572
+ | **Security** | Rate limiting, CORS, CSRF protection |
573
+ | **Observability** | Logfire, LangSmith, Sentry, Prometheus |
574
+ | **Admin** | SQLAdmin panel with auth |
575
+ | **Collaboration** | Conversation sharing (direct + link), admin conversation browser |
576
+ | **Messaging** | Telegram multi-bot (polling + webhook), Slack multi-bot (Events API + Socket Mode) |
577
+ | **Events** | Webhooks, WebSockets |
578
+ | **DevOps** | Docker, GitHub Actions, GitLab CI, Kubernetes |
579
+
580
+ ### 🗺️ Architecture Overview
581
+
582
+ ```
583
+ ┌──────────────────────────────────────────────────────────────────────────┐
584
+ │ FRONTEND (Next.js 15) │
585
+ │ Chat UI · Knowledge Base · Dashboard · Settings · Dark Mode · i18n │
586
+ └──────────────┬───────────────────────────────────────────┬───────────────┘
587
+ │ REST / WebSocket │ Vercel
588
+ ▼ ▼
589
+ ┌──────────────────────────────────────────────────────────────────────────┐
590
+ │ BACKEND (FastAPI) │
591
+ │ │
592
+ │ ┌─────────────────────────────────────────────────────────────────┐ │
593
+ │ │ AI AGENTS │ │
594
+ │ │ PydanticAI · LangChain · LangGraph · CrewAI · DeepAgents │ │
595
+ │ │ ──────────────────────────────────────────────────────────── │ │
596
+ │ │ Tools: datetime · web_search (Tavily) · search_knowledge_base │ │
597
+ │ │ Providers: OpenAI · Anthropic · Gemini · OpenRouter │ │
598
+ │ └─────────────────────────────────────────────────────────────────┘ │
599
+ │ │
600
+ │ ┌─────────────────────────────────────────────────────────────────┐ │
601
+ │ │ RAG PIPELINE │ │
602
+ │ │ │ │
603
+ │ │ Sources Parse Chunk Embed │ │
604
+ │ │ ───────── ────────── ────────── ────────────── │ │
605
+ │ │ Local files PyMuPDF recursive OpenAI │ │
606
+ │ │ API upload LiteParse markdown Voyage │ │
607
+ │ │ Google Drive LlamaParse fixed Gemini (multi) │ │
608
+ │ │ S3/MinIO python-docx SentenceTransf. │ │
609
+ │ │ Sync Sources │ │
610
+ │ │ │ │
611
+ │ │ Store Search Rank │ │
612
+ │ │ ────────────── ────────────── ────────────── │ │
613
+ │ │ Milvus Vector similarity Cohere reranker │ │
614
+ │ │ Qdrant BM25 + vector RRF CrossEncoder │ │
615
+ │ │ ChromaDB Multi-collection │ │
616
+ │ │ pgvector │ │
617
+ │ └─────────────────────────────────────────────────────────────────┘ │
618
+ │ │
619
+ │ Auth (JWT/API Key/OAuth) · Rate Limiting · Webhooks · Admin Panel │
620
+ │ Background Tasks (Celery/Taskiq/ARQ) · Django-style CLI │
621
+ │ Observability (Logfire/LangSmith/Sentry/Prometheus) │
622
+ └───────┬──────────────┬──────────────┬──────────────┬─────────────────────┘
623
+ │ │ │ │
624
+ ▼ ▼ ▼ ▼
625
+ PostgreSQL Redis Vector DB LLM APIs
626
+ MongoDB (Milvus/ (OpenAI/
627
+ SQLite Qdrant/ Anthropic/
628
+ ChromaDB/ Gemini)
629
+ pgvector)
630
+ ```
631
+
632
+ ---
633
+
634
+ ## 🏗️ Architecture
635
+
636
+ ```mermaid
637
+ graph TB
638
+ subgraph Frontend["Frontend (Next.js 15)"]
639
+ UI[React Components]
640
+ WS[WebSocket Client]
641
+ Store[Zustand Stores]
642
+ end
643
+
644
+ subgraph Backend["Backend (FastAPI)"]
645
+ API[API Routes]
646
+ Services[Services Layer]
647
+ Repos[Repositories]
648
+ Agent[AI Agent]
649
+ end
650
+
651
+ subgraph Infrastructure
652
+ DB[(PostgreSQL/MongoDB)]
653
+ Redis[(Redis)]
654
+ Queue[Celery/Taskiq]
655
+ end
656
+
657
+ subgraph External
658
+ LLM[OpenAI/Anthropic]
659
+ Webhook[Webhook Endpoints]
660
+ end
661
+
662
+ UI --> API
663
+ WS <--> Agent
664
+ API --> Services
665
+ Services --> Repos
666
+ Services --> Agent
667
+ Repos --> DB
668
+ Agent --> LLM
669
+ Services --> Redis
670
+ Services --> Queue
671
+ Services --> Webhook
672
+ ```
673
+
674
+ ### Layered Architecture
675
+
676
+ The backend follows a clean **Repository + Service** pattern:
677
+
678
+ ```mermaid
679
+ graph LR
680
+ A[API Routes] --> B[Services]
681
+ B --> C[Repositories]
682
+ C --> D[(Database)]
683
+
684
+ B --> E[External APIs]
685
+ B --> F[AI Agents]
686
+ ```
687
+
688
+ | Layer | Responsibility |
689
+ |-------|---------------|
690
+ | **Routes** | HTTP handling, validation, auth |
691
+ | **Services** | Business logic, orchestration |
692
+ | **Repositories** | Data access, queries |
693
+
694
+ See [Architecture Documentation](https://github.com/vstorm-co/full-stack-ai-agent-template/blob/main/docs/architecture.md) for details.
695
+
696
+ ---
697
+
698
+ ## 🤖 AI Agent
699
+
700
+ Choose from **6 AI frameworks** and **4 LLM providers** when generating your project:
701
+
702
+ ```bash
703
+ # PydanticAI with OpenAI (default)
704
+ fastapi-fullstack create my_app --ai-framework pydantic_ai
705
+
706
+ # LangGraph with Anthropic
707
+ fastapi-fullstack create my_app --ai-framework langgraph --llm-provider anthropic
708
+
709
+ # CrewAI with Google Gemini
710
+ fastapi-fullstack create my_app --ai-framework crewai --llm-provider google
711
+
712
+ # DeepAgents with OpenAI
713
+ fastapi-fullstack create my_app --ai-framework deepagents
714
+
715
+ # With RAG enabled
716
+ fastapi-fullstack create my_app --rag --database postgresql --task-queue celery
717
+ ```
718
+
719
+ ### Supported Combinations
720
+
721
+ | Framework | OpenAI | Anthropic | Gemini | OpenRouter |
722
+ |-----------|:------:|:---------:|:------:|:----------:|
723
+ | **PydanticAI** | ✓ | ✓ | ✓ | ✓ |
724
+ | **PydanticDeep** | ✓ | ✓ | ✓ | - |
725
+ | **LangChain** | ✓ | ✓ | ✓ | - |
726
+ | **LangGraph** | ✓ | ✓ | ✓ | - |
727
+ | **CrewAI** | ✓ | ✓ | ✓ | - |
728
+ | **DeepAgents** | ✓ | ✓ | ✓ | - |
729
+
730
+ ### PydanticAI Integration
731
+
732
+ Type-safe agents with full dependency injection:
733
+
734
+ ```python
735
+ # app/agents/assistant.py
736
+ from pydantic_ai import Agent, RunContext
737
+
738
+ @dataclass
739
+ class Deps:
740
+ user_id: str | None = None
741
+ db: AsyncSession | None = None
742
+
743
+ agent = Agent[Deps, str](
744
+ model="openai:gpt-4o-mini",
745
+ system_prompt="You are a helpful assistant.",
746
+ )
747
+
748
+ @agent.tool
749
+ async def search_database(ctx: RunContext[Deps], query: str) -> list[dict]:
750
+ """Search the database for relevant information."""
751
+ # Access user context and database via ctx.deps
752
+ ...
753
+ ```
754
+
755
+ ### LangChain Integration
756
+
757
+ Flexible agents with LangGraph:
758
+
759
+ ```python
760
+ # app/agents/langchain_assistant.py
761
+ from langchain.tools import tool
762
+ from langgraph.prebuilt import create_react_agent
763
+
764
+ @tool
765
+ def search_database(query: str) -> list[dict]:
766
+ """Search the database for relevant information."""
767
+ ...
768
+
769
+ agent = create_react_agent(
770
+ model=ChatOpenAI(model="gpt-4o-mini"),
771
+ tools=[search_database],
772
+ prompt="You are a helpful assistant.",
773
+ )
774
+ ```
775
+
776
+ ### WebSocket Streaming
777
+
778
+ Both frameworks use the same WebSocket endpoint with real-time streaming:
779
+
780
+ ```python
781
+ @router.websocket("/ws")
782
+ async def agent_ws(websocket: WebSocket):
783
+ await websocket.accept()
784
+
785
+ # Works with both PydanticAI and LangChain
786
+ async for event in agent.stream(user_input):
787
+ await websocket.send_json({
788
+ "type": "text_delta",
789
+ "content": event.content
790
+ })
791
+ ```
792
+
793
+ ### Observability
794
+
795
+ Each framework has its own observability solution:
796
+
797
+ | Framework | Observability | Dashboard |
798
+ |-----------|--------------|-----------|
799
+ | **PydanticAI** | [Logfire](https://logfire.pydantic.dev) | Agent runs, tool calls, token usage |
800
+ | **LangChain** | [LangSmith](https://smith.langchain.com) | Traces, feedback, datasets |
801
+
802
+ See [AI Agent Documentation](https://github.com/vstorm-co/full-stack-ai-agent-template/blob/main/docs/ai-agent.md) for more.
803
+
804
+ ---
805
+
806
+ ## 📄 RAG (Retrieval-Augmented Generation)
807
+
808
+ Enable RAG to give your AI agents access to a knowledge base built from your documents.
809
+
810
+ ### Vector Store Backends
811
+
812
+ | Backend | Type | Docker Required | Best For |
813
+ |---------|------|:---:|---------|
814
+ | **Milvus** | Dedicated vector DB | Yes (3 services) | Production, large scale |
815
+ | **Qdrant** | Dedicated vector DB | Yes (1 service) | Production, simple setup |
816
+ | **ChromaDB** | Embedded / HTTP | No | Development, prototyping |
817
+ | **pgvector** | PostgreSQL extension | No (uses existing PG) | Already have PostgreSQL |
818
+
819
+ ### Document Ingestion (CLI)
820
+
821
+ ```bash
822
+ # Local files
823
+ uv run my_app rag-ingest /path/to/document.pdf --collection docs
824
+ uv run my_app rag-ingest /path/to/folder/ --recursive
825
+
826
+ # Google Drive (service account)
827
+ uv run my_app rag-sync-gdrive --collection docs --folder-id <drive_folder_id>
828
+
829
+ # S3/MinIO
830
+ uv run my_app rag-sync-s3 --collection docs --prefix reports/ --bucket my-bucket
831
+ ```
832
+
833
+ ### Embedding Providers
834
+
835
+ | Provider | Model | Dimensions | Multimodal |
836
+ |----------|-------|:---:|:---:|
837
+ | **OpenAI** | text-embedding-3-small | 1536 | - |
838
+ | **Voyage** | voyage-3 | 1024 | - |
839
+ | **Gemini** | gemini-embedding-exp-03-07 | 3072 | Text + Images |
840
+ | **SentenceTransformers** | all-MiniLM-L6-v2 | 384 | - |
841
+
842
+ ### Features
843
+
844
+ - **Document parsing** - PDF (PyMuPDF with tables, headers/footers, OCR), DOCX, TXT, MD + 130+ formats via LlamaParse
845
+ - **Image description** - Extract images from documents, describe via LLM vision API (opt-in)
846
+ - **Chunking** - RecursiveCharacterTextSplitter with configurable size/overlap
847
+ - **Reranking** - Cohere API or local CrossEncoder for improved search quality
848
+ - **Agent integration** - All 6 AI frameworks get a `search_knowledge_base` tool automatically
849
+
850
+ ---
851
+
852
+ ## 📊 Observability
853
+
854
+ ### Logfire (for PydanticAI)
855
+
856
+ [Logfire](https://logfire.pydantic.dev) provides complete observability for your application - from AI agents to database queries. Built by the Pydantic team, it offers first-class support for the entire Python ecosystem.
857
+
858
+ ```mermaid
859
+ graph LR
860
+ subgraph Your App
861
+ API[FastAPI]
862
+ Agent[PydanticAI]
863
+ DB[(Database)]
864
+ Cache[(Redis)]
865
+ Queue[Celery/Taskiq]
866
+ HTTP[HTTPX]
867
+ end
868
+
869
+ subgraph Logfire
870
+ Traces[Traces]
871
+ Metrics[Metrics]
872
+ Logs[Logs]
873
+ end
874
+
875
+ API --> Traces
876
+ Agent --> Traces
877
+ DB --> Traces
878
+ Cache --> Traces
879
+ Queue --> Traces
880
+ HTTP --> Traces
881
+ ```
882
+
883
+ | Component | What You See |
884
+ |-----------|-------------|
885
+ | **PydanticAI** | Agent runs, tool calls, LLM requests, token usage, streaming events |
886
+ | **FastAPI** | Request/response traces, latency, status codes, route performance |
887
+ | **PostgreSQL/MongoDB** | Query execution time, slow queries, connection pool stats |
888
+ | **Redis** | Cache hits/misses, command latency, key patterns |
889
+ | **Celery/Taskiq** | Task execution, queue depth, worker performance |
890
+ | **HTTPX** | External API calls, response times, error rates |
891
+
892
+ ### LangSmith (for LangChain)
893
+
894
+ [LangSmith](https://smith.langchain.com) provides observability specifically designed for LangChain applications:
895
+
896
+ | Feature | Description |
897
+ |---------|-------------|
898
+ | **Traces** | Full execution traces for agent runs and chains |
899
+ | **Feedback** | Collect user feedback on agent responses |
900
+ | **Datasets** | Build evaluation datasets from production data |
901
+ | **Monitoring** | Track latency, errors, and token usage |
902
+
903
+ LangSmith is automatically configured when you choose LangChain:
904
+
905
+ ```bash
906
+ # .env
907
+ LANGCHAIN_TRACING_V2=true
908
+ LANGCHAIN_API_KEY=your-api-key
909
+ LANGCHAIN_PROJECT=my_project
910
+ ```
911
+
912
+ ### Configuration
913
+
914
+ Enable Logfire and select which components to instrument:
915
+
916
+ ```bash
917
+ fastapi-fullstack new
918
+ # ✓ Enable Logfire observability
919
+ # ✓ Instrument FastAPI
920
+ # ✓ Instrument Database
921
+ # ✓ Instrument Redis
922
+ # ✓ Instrument Celery
923
+ # ✓ Instrument HTTPX
924
+ ```
925
+
926
+ ### Usage
927
+
928
+ ```python
929
+ # Automatic instrumentation in app/main.py
930
+ import logfire
931
+
932
+ logfire.configure()
933
+ logfire.instrument_fastapi(app)
934
+ logfire.instrument_asyncpg()
935
+ logfire.instrument_redis()
936
+ logfire.instrument_httpx()
937
+ ```
938
+
939
+ ```python
940
+ # Manual spans for custom logic
941
+ with logfire.span("process_order", order_id=order.id):
942
+ await validate_order(order)
943
+ await charge_payment(order)
944
+ await send_confirmation(order)
945
+ ```
946
+
947
+ For more details, see [Logfire Documentation](https://logfire.pydantic.dev/docs/integrations/).
948
+
949
+ ---
950
+
951
+ ## 🛠️ Django-style CLI
952
+
953
+ Each generated project includes a powerful CLI inspired by Django's management commands:
954
+
955
+ ### Built-in Commands
956
+
957
+ ```bash
958
+ # Server
959
+ my_app server run --reload
960
+ my_app server routes
961
+
962
+ # Database (Alembic wrapper)
963
+ my_app db init
964
+ my_app db migrate -m "Add users"
965
+ my_app db upgrade
966
+
967
+ # Users
968
+ my_app user create --email admin@example.com --superuser
969
+ my_app user list
970
+ ```
971
+
972
+ ### Custom Commands
973
+
974
+ Create your own commands with auto-discovery:
975
+
976
+ ```python
977
+ # app/commands/seed.py
978
+ from app.commands import command, success, error
979
+ import click
980
+
981
+ @command("seed", help="Seed database with test data")
982
+ @click.option("--count", "-c", default=10, type=int)
983
+ @click.option("--dry-run", is_flag=True)
984
+ def seed_database(count: int, dry_run: bool):
985
+ """Seed the database with sample data."""
986
+ if dry_run:
987
+ info(f"[DRY RUN] Would create {count} records")
988
+ return
989
+
990
+ # Your logic here
991
+ success(f"Created {count} records!")
992
+ ```
993
+
994
+ Commands are **automatically discovered** from `app/commands/` - just create a file and use the `@command` decorator.
995
+
996
+ ```bash
997
+ my_app cmd seed --count 100
998
+ my_app cmd seed --dry-run
999
+ ```
1000
+
1001
+ ---
1002
+
1003
+ ## 📁 Generated Project Structure
1004
+
1005
+ ```
1006
+ my_project/
1007
+ ├── backend/
1008
+ │ ├── app/
1009
+ │ │ ├── main.py # FastAPI app with lifespan
1010
+ │ │ ├── api/
1011
+ │ │ │ ├── routes/v1/ # Versioned API endpoints
1012
+ │ │ │ ├── deps.py # Dependency injection
1013
+ │ │ │ └── router.py # Route aggregation
1014
+ │ │ ├── core/ # Config, security, middleware
1015
+ │ │ ├── db/models/ # SQLAlchemy/MongoDB models
1016
+ │ │ ├── schemas/ # Pydantic schemas
1017
+ │ │ ├── repositories/ # Data access layer
1018
+ │ │ ├── services/ # Business logic
1019
+ │ │ ├── agents/ # AI agents with centralized prompts
1020
+ │ │ ├── rag/ # RAG module (vector store, embeddings, ingestion)
1021
+ │ │ ├── commands/ # Django-style CLI commands
1022
+ │ │ └── worker/ # Background tasks
1023
+ │ ├── cli/ # Project CLI
1024
+ │ ├── tests/ # pytest test suite
1025
+ │ └── alembic/ # Database migrations
1026
+ ├── frontend/
1027
+ │ ├── src/
1028
+ │ │ ├── app/ # Next.js App Router
1029
+ │ │ ├── components/ # React components
1030
+ │ │ ├── hooks/ # useChat, useWebSocket, etc.
1031
+ │ │ └── stores/ # Zustand state management
1032
+ │ └── e2e/ # Playwright tests
1033
+ ├── docker-compose.yml
1034
+ ├── Makefile
1035
+ └── README.md
1036
+ ```
1037
+
1038
+ Generated projects include version metadata in `pyproject.toml` for tracking:
1039
+
1040
+ ```toml
1041
+ [tool.fastapi-fullstack]
1042
+ generator_version = "0.1.5"
1043
+ generated_at = "2024-12-21T10:30:00+00:00"
1044
+ ```
1045
+
1046
+ ---
1047
+
1048
+ ## ⚙️ Configuration Options
1049
+
1050
+ ### Core Options
1051
+
1052
+ | Option | Values | Description |
1053
+ |--------|--------|-------------|
1054
+ | **Database** | `postgresql`, `mongodb`, `sqlite`, `none` | Async by default |
1055
+ | **ORM** | `sqlalchemy`, `sqlmodel` | SQLModel for simplified syntax |
1056
+ | **Auth** | `jwt`, `api_key`, `both`, `none` | JWT includes user management |
1057
+ | **OAuth** | `none`, `google` | Social login |
1058
+ | **AI Framework** | `pydantic_ai`, `langchain`, `langgraph`, `crewai`, `deepagents` | Choose your AI agent framework |
1059
+ | **LLM Provider** | `openai`, `anthropic`, `google`, `openrouter` | OpenRouter only with PydanticAI |
1060
+ | **RAG** | `--rag` | Enable RAG with vector database |
1061
+ | **Vector Store** | `milvus`, `qdrant`, `chromadb`, `pgvector` | pgvector uses existing PostgreSQL |
1062
+ | **Background Tasks** | `none`, `celery`, `taskiq`, `arq` | Distributed queues |
1063
+ | **Frontend** | `none`, `nextjs` | Next.js 15 + React 19 |
1064
+
1065
+ ### Presets
1066
+
1067
+ | Preset | Description |
1068
+ |--------|-------------|
1069
+ | `--preset production` | Full production setup with Redis, Sentry, Kubernetes, Prometheus |
1070
+ | `--preset ai-agent` | AI agent with WebSocket streaming and conversation persistence |
1071
+ | `--minimal` | Minimal project with no extras |
1072
+
1073
+ ### Integrations
1074
+
1075
+ Select what you need:
1076
+
1077
+ ```bash
1078
+ fastapi-fullstack new
1079
+ # ✓ Redis (caching/sessions)
1080
+ # ✓ Rate limiting (slowapi)
1081
+ # ✓ Pagination (fastapi-pagination)
1082
+ # ✓ Admin Panel (SQLAdmin)
1083
+ # ✓ AI Agent (PydanticAI or LangChain)
1084
+ # ✓ Webhooks
1085
+ # ✓ Sentry
1086
+ # ✓ Logfire / LangSmith
1087
+ # ✓ Prometheus
1088
+ # ... and more
1089
+ ```
1090
+
1091
+ ---
1092
+
1093
+ ## 🔄 Comparison
1094
+
1095
+ ### vs. Manual Setup
1096
+
1097
+ Setting up a production AI agent stack manually means wiring together 10+ tools yourself:
1098
+
1099
+ ```bash
1100
+ # Without this template, you'd need to manually:
1101
+ # 1. Set up FastAPI project structure
1102
+ # 2. Configure SQLAlchemy + Alembic migrations
1103
+ # 3. Implement JWT auth with refresh tokens
1104
+ # 4. Build WebSocket streaming for AI responses
1105
+ # 5. Integrate PydanticAI/LangChain with tool calling
1106
+ # 6. Set up RAG pipeline (parsing, chunking, embedding, vector store)
1107
+ # 7. Configure Celery + Redis for background tasks
1108
+ # 8. Build Next.js frontend with auth and chat UI
1109
+ # 9. Write Docker Compose for all services
1110
+ # 10. Add observability, rate limiting, admin panel...
1111
+
1112
+ # With this template:
1113
+ pip install fastapi-fullstack
1114
+ fastapi-fullstack
1115
+ # Done. All of the above, configured and working.
1116
+ ```
1117
+
1118
+ ### vs. Alternatives
1119
+
1120
+ | Feature | **This Template** | [full-stack-fastapi-template](https://github.com/fastapi/full-stack-fastapi-template) | [create-t3-app](https://github.com/t3-oss/create-t3-app) |
1121
+ |---------|:-:|:-:|:-:|
1122
+ | **AI Agents** (5 frameworks) | ✅ | ❌ | ❌ |
1123
+ | **RAG Pipeline** (4 vector stores) | ✅ | ❌ | ❌ |
1124
+ | **WebSocket Streaming** | ✅ | ❌ | ❌ |
1125
+ | **Conversation Persistence** | ✅ | ❌ | ❌ |
1126
+ | **LLM Observability** (Logfire/LangSmith) | ✅ | ❌ | ❌ |
1127
+ | **FastAPI Backend** | ✅ | ✅ | ❌ |
1128
+ | **Next.js Frontend** | ✅ (v15) | ❌ | ✅ |
1129
+ | **JWT + OAuth Authentication** | ✅ | ✅ | ✅ (NextAuth) |
1130
+ | **Background Tasks** (Celery/Taskiq/ARQ) | ✅ | ✅ (Celery) | ❌ |
1131
+ | **Admin Panel** | ✅ (SQLAdmin) | ❌ | ❌ |
1132
+ | **Multiple Databases** (PG/Mongo/SQLite) | ✅ | PostgreSQL only | Prisma |
1133
+ | **Docker + K8s** | ✅ | ✅ | ❌ |
1134
+ | **Interactive CLI Wizard** | ✅ | ❌ | ✅ |
1135
+ | **Django-style Commands** | ✅ | ❌ | ❌ |
1136
+ | **Document Sources** (GDrive, S3, API) | ✅ | ❌ | ❌ |
1137
+ | **AI-Agent Friendly** (CLAUDE.md) | ✅ | ❌ | ❌ |
1138
+
1139
+ ---
1140
+
1141
+ ## ❓ FAQ
1142
+
1143
+ <details>
1144
+ <summary><b>How is this different from full-stack-fastapi-template?</b></summary>
1145
+
1146
+ [full-stack-fastapi-template](https://github.com/fastapi/full-stack-fastapi-template) by @tiangolo is a great starting point for FastAPI projects, but it focuses on traditional web apps. This template is purpose-built for **AI/LLM applications** — it adds AI agents (5 frameworks), RAG with 4 vector stores, WebSocket streaming, conversation persistence, LLM observability, and a Next.js chat UI out of the box.
1147
+
1148
+ </details>
1149
+
1150
+ <details>
1151
+ <summary><b>Can I use this without AI/LLM features?</b></summary>
1152
+
1153
+ Yes. The AI agent and RAG modules are optional. You can use this as a pure FastAPI + Next.js template with auth, admin panel, background tasks, and all other infrastructure — just skip the AI framework selection during setup.
1154
+
1155
+ </details>
1156
+
1157
+ <details>
1158
+ <summary><b>What Python and Node.js versions are required?</b></summary>
1159
+
1160
+ Python 3.11+ and Node.js 18+ (for the Next.js frontend). We recommend using [uv](https://docs.astral.sh/uv/) for Python and [bun](https://bun.sh) for the frontend.
1161
+
1162
+ </details>
1163
+
1164
+ <details>
1165
+ <summary><b>Can I add integrations after project generation?</b></summary>
1166
+
1167
+ The generated project is plain code — no lock-in or runtime dependency on the generator. You can add, remove, or modify any integration manually. The template just gives you a well-structured starting point.
1168
+
1169
+ </details>
1170
+
1171
+ <details>
1172
+ <summary><b>Can I use a different LLM provider than the one I selected?</b></summary>
1173
+
1174
+ Yes. The LLM provider is configured via environment variables (`AI_MODEL`, `OPENAI_API_KEY`, etc.). You can switch providers by changing the `.env` file and the model name — no code changes needed for PydanticAI (which supports all providers natively).
1175
+
1176
+ </details>
1177
+
1178
+ ---
1179
+
1180
+ ## 📚 Documentation
1181
+
1182
+ | Document | Description |
1183
+ |----------|-------------|
1184
+ | [Architecture](https://github.com/vstorm-co/full-stack-ai-agent-template/blob/main/docs/architecture.md) | Repository + Service pattern, layered design |
1185
+ | [Frontend](https://github.com/vstorm-co/full-stack-ai-agent-template/blob/main/docs/frontend.md) | Next.js setup, auth, state management |
1186
+ | [AI Agent](https://github.com/vstorm-co/full-stack-ai-agent-template/blob/main/docs/ai-agent.md) | PydanticAI, tools, WebSocket streaming |
1187
+ | [Observability](https://github.com/vstorm-co/full-stack-ai-agent-template/blob/main/docs/observability.md) | Logfire integration, tracing, metrics |
1188
+ | [Deployment](https://github.com/vstorm-co/full-stack-ai-agent-template/blob/main/docs/deployment.md) | Docker, Kubernetes, production setup |
1189
+ | [Development](https://github.com/vstorm-co/full-stack-ai-agent-template/blob/main/docs/development.md) | Local setup, testing, debugging |
1190
+ | [Changelog](https://github.com/vstorm-co/full-stack-ai-agent-template/blob/main/docs/CHANGELOG.md) | Version history and release notes |
1191
+
1192
+ ---
1193
+
1194
+ ## Star History
1195
+
1196
+ [![Star History Chart](https://api.star-history.com/svg?repos=vstorm-co/full-stack-fastapi-nextjs-llm-template&type=date&legend=top-left)](https://www.star-history.com/#vstorm-co/full-stack-fastapi-nextjs-llm-template&type=date&legend=top-left)
1197
+
1198
+ ---
1199
+
1200
+ ## 🙏 Inspiration
1201
+
1202
+ This project is inspired by:
1203
+
1204
+ - [full-stack-fastapi-template](https://github.com/fastapi/full-stack-fastapi-template) by @tiangolo
1205
+ - [fastapi-template](https://github.com/s3rius/fastapi-template) by @s3rius
1206
+ - [FastAPI Best Practices](https://github.com/zhanymkanov/fastapi-best-practices) by @zhanymkanov
1207
+ - Django's management commands system
1208
+
1209
+ ---
1210
+
1211
+ ## 🤝 Contributing
1212
+
1213
+ Contributions are welcome! Please read our [Contributing Guide](https://github.com/vstorm-co/full-stack-ai-agent-template/blob/main/CONTRIBUTING.md) for details.
1214
+
1215
+ <a href="https://github.com/vstorm-co/full-stack-ai-agent-template/graphs/contributors">
1216
+ <img src="https://contrib.rocks/image?repo=vstorm-co/full-stack-ai-agent-template" alt="Contributors" />
1217
+ </a>
1218
+
1219
+ ---
1220
+
1221
+ ## 📄 License
1222
+
1223
+ MIT License - see [LICENSE](https://github.com/vstorm-co/full-stack-ai-agent-template/blob/main/LICENSE) for details.
1224
+
1225
+ ---
1226
+
1227
+ <div align="center">
1228
+
1229
+ ### Need help implementing this in your company?
1230
+
1231
+ <p>We're <a href="https://vstorm.co"><b>Vstorm</b></a> — an Applied Agentic AI Engineering Consultancy<br>with 30+ production AI agent implementations.</p>
1232
+
1233
+ <a href="https://vstorm.co/contact-us/">
1234
+ <img src="https://img.shields.io/badge/Talk%20to%20us%20%E2%86%92-0066FF?style=for-the-badge&logoColor=white" alt="Talk to us">
1235
+ </a>
1236
+
1237
+ <br><br>
1238
+
1239
+ Made with ❤️ by <a href="https://vstorm.co"><b>Vstorm</b></a>
1240
+
1241
+ </div>