fastapi-fullstack 0.2.4__tar.gz → 0.2.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/PKG-INFO +67 -21
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/README.md +66 -20
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/fastapi_gen/cli.py +1 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/fastapi_gen/config.py +19 -7
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/fastapi_gen/prompts.py +90 -11
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/pyproject.toml +2 -1
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/VARIABLES.md +21 -3
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/cookiecutter.json +5 -2
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/hooks/post_gen_project.py +5 -2
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/.env.prod.example +14 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/.gitignore +1 -1
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/README.md +12 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/.env.example +27 -1
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/.pre-commit-config.yaml +1 -1
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/alembic/env.py +24 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/agents/__init__.py +11 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/agents/assistant.py +7 -2
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/agents/deepagents_assistant.py +81 -34
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/agents/langchain_assistant.py +1 -1
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/backend/app/agents/pydantic_deep_assistant.py +359 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/api/deps.py +134 -18
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/api/exception_handlers.py +6 -15
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/__init__.py +50 -2
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/admin_conversations.py +400 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/admin_ratings.py +365 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/agent.py +1081 -47
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/channels.py +431 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/conversations.py +531 -15
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/projects.py +200 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/slack_webhook.py +128 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/telegram_webhook.py +181 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/backend/app/channels/__init__.py +31 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/backend/app/channels/base.py +99 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/backend/app/channels/router.py +633 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/backend/app/channels/slack.py +254 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/backend/app/channels/telegram.py +259 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/backend/app/commands/channel.py +309 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/backend/app/core/channel_crypto.py +47 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/core/config.py +37 -1
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/core/sanitize.py +1 -1
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/db/models/__init__.py +18 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/backend/app/db/models/channel_bot.py +243 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/backend/app/db/models/channel_identity.py +219 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/backend/app/db/models/channel_session.py +303 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/db/models/conversation.py +44 -1
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/backend/app/db/models/conversation_share.py +277 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/backend/app/db/models/message_rating.py +295 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/backend/app/db/models/project.py +425 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/db/session.py +5 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/main.py +79 -11
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/rag/vectorstore.py +1 -1
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/repositories/__init__.py +21 -1
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/backend/app/repositories/channel_bot.py +387 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/backend/app/repositories/channel_identity.py +280 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/backend/app/repositories/channel_session.py +378 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/repositories/conversation.py +225 -1
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/backend/app/repositories/conversation_share.py +373 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/backend/app/repositories/message_rating.py +541 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/backend/app/repositories/project.py +611 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/backend/app/schemas/channel_bot.py +165 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/schemas/conversation.py +32 -1
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/backend/app/schemas/conversation_share.py +112 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/backend/app/schemas/message_rating.py +126 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/backend/app/schemas/project.py +103 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/services/__init__.py +16 -1
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/backend/app/services/agent_invocation.py +496 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/backend/app/services/channel_bot.py +331 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/services/conversation.py +569 -44
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/backend/app/services/conversation_share.py +495 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/backend/app/services/message_rating.py +891 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/backend/app/services/project.py +678 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/pyproject.toml +22 -8
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/tests/test_admin.py +0 -14
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/tests/test_agents.py +3 -3
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/tests/test_services_conversation.py +27 -7
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/tests/test_ssrf.py +0 -12
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/docs/architecture.md +4 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/docs/configuration.md +21 -1
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/docs/howto/use-ratings.md +132 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/docs/permissions.md +11 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/admin/conversations/page.tsx +273 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/admin/ratings/page.tsx +334 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/chat/page.tsx +29 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/dashboard/page.tsx +40 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/shared/[token]/page.tsx +98 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/login/route.ts +3 -1
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/me/route.ts +4 -1
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/refresh/route.ts +4 -1
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/[id]/messages/[messageId]/rate/route.ts +95 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/[id]/shares/[shareId]/route.ts +29 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/[id]/shares/route.ts +55 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/shared-with-me/route.ts +27 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/admin/conversations/route.ts +48 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/admin/ratings/export/route.ts +58 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/admin/ratings/route.ts +42 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/admin/ratings/summary/route.ts +35 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chat-container.tsx +20 -3
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/conversation-sidebar.tsx +43 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/message-item.tsx +25 -1
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/rating-buttons.tsx +244 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/share-dialog.tsx +199 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/frontend/src/hooks/index.ts +11 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-admin-conversations.ts +130 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-auth.ts +18 -8
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-chat.ts +70 -8
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-conversation-shares.ts +126 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-projects.ts +207 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-websocket.ts +5 -2
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/frontend/src/lib/admin-auth.ts +47 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/lib/constants.ts +4 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/lib/server-api.ts +7 -1
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/stores/auth-store.ts +7 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/stores/chat-store.ts +9 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/stores/index.ts +3 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/frontend/src/stores/project-store.ts +73 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/types/chat.ts +20 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/frontend/src/types/conversation.ts +149 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/types/index.ts +3 -0
- fastapi_fullstack-0.2.6/template/{{cookiecutter.project_slug}}/frontend/src/types/project.ts +59 -0
- fastapi_fullstack-0.2.4/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/chat/page.tsx +0 -16
- fastapi_fullstack-0.2.4/template/{{cookiecutter.project_slug}}/frontend/src/hooks/index.ts +0 -4
- fastapi_fullstack-0.2.4/template/{{cookiecutter.project_slug}}/frontend/src/types/conversation.ts +0 -47
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/.gitignore +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/LICENSE +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/fastapi_gen/__init__.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/fastapi_gen/generator.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/.claude/commands/add-endpoint.md +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/.claude/commands/fix-issue.md +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/.claude/commands/review.md +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/.claude/rules/api-conventions.md +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/.claude/rules/architecture.md +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/.claude/rules/code-style.md +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/.claude/rules/exceptions-security.md +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/.claude/rules/frontend.md +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/.claude/rules/schemas-models.md +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/.claude/rules/testing.md +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/.claude/settings.json +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/.github/workflows/ci.yml +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/.gitlab-ci.yml +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/AGENTS.md +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/CLAUDE.md +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/Makefile +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/.dockerignore +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/Dockerfile +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/alembic/script.py.mako +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/.gitkeep +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/alembic.ini +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/__init__.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/admin.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/agents/crewai_assistant.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/agents/langgraph_assistant.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/agents/prompts.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/__init__.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/datetime_tool.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/rag_tool.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/web_search.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/api/__init__.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/api/router.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/__init__.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/auth.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/files.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/health.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/oauth.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/rag.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/sessions.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/users.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/webhooks.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/api/versioning.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/clients/__init__.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/clients/redis.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/commands/__init__.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/commands/cleanup.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/commands/example.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/commands/rag.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/commands/seed.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/core/__init__.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/core/cache.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/core/csrf.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/core/exceptions.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/core/logfire_setup.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/core/logging.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/core/middleware.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/core/oauth.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/core/rate_limit.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/core/security.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/db/__init__.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/db/base.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/db/models/chat_file.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/db/models/rag_document.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/db/models/session.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/db/models/sync_log.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/db/models/sync_source.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/db/models/user.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/db/models/webhook.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/rag/__init__.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/rag/config.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/rag/connectors/__init__.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/rag/connectors/google_drive.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/rag/connectors/s3.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/rag/documents.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/rag/embeddings.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/rag/image_describer.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/rag/ingestion.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/rag/models.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/rag/reranker.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/rag/retrieval.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/rag/sources/__init__.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/rag/sources/base.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/rag/sources/google_drive.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/rag/sources/s3.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/repositories/chat_file.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/repositories/rag_document.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/repositories/session.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/repositories/sync_log.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/repositories/sync_source.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/repositories/user.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/repositories/webhook.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/schemas/__init__.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/schemas/base.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/schemas/file.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/schemas/rag.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/schemas/session.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/schemas/sync_source.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/schemas/token.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/schemas/user.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/schemas/webhook.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/services/file_storage.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/services/file_upload.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/services/rag_document.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/services/rag_sync.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/services/session.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/services/sync_source.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/services/user.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/services/webhook.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/worker/__init__.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/worker/arq_app.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/worker/celery_app.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/worker/taskiq_app.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/__init__.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/examples.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/rag_tasks.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/schedules.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/taskiq_examples.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/cli/__init__.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/cli/commands.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/scripts/.gitkeep +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/tests/__init__.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/tests/api/__init__.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_auth.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_exceptions.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_health.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_metrics.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_openapi.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_users.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/tests/conftest.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/tests/test_clients.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/tests/test_commands.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/tests/test_core.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/tests/test_migrations.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/tests/test_repositories.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/tests/test_security.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/tests/test_services.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/backend/tests/test_worker.py +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/docker-compose.dev.yml +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/docker-compose.frontend.yml +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/docker-compose.prod.yml +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/docker-compose.yml +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/docs/adding_features.md +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/docs/commands.md +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/docs/file-processing.md +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/docs/howto/add-agent-tool.md +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/docs/howto/add-api-endpoint.md +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/docs/howto/add-background-task.md +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/docs/howto/add-rag-source.md +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/docs/howto/add-sync-connector.md +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/docs/howto/configure-sync-sources.md +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/docs/howto/customize-agent-prompt.md +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/docs/patterns.md +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/docs/testing.md +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/.dockerignore +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/.env.example +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/.gitignore +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/.prettierignore +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/.prettierrc +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/Dockerfile +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/README.md +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/e2e/auth.setup.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/e2e/auth.spec.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/e2e/chat.spec.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/e2e/home.spec.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/eslint.config.mjs +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/instrumentation.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/messages/en.json +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/messages/pl.json +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/next.config.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/package.json +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/playwright.config.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/postcss.config.mjs +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(auth)/layout.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(auth)/login/page.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(auth)/register/page.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/layout.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/profile/page.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/rag/page.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/page.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/auth/callback/page.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/error.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/layout.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/page.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/logout/route.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/oauth-callback/route.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/register/route.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/[id]/messages/route.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/[id]/route.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/export/route.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/route.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/files/[id]/route.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/files/upload/route.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/health/route.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/users/avatar/[userId]/route.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/users/me/avatar/route.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/agent/models/route.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/collections/[name]/documents/[documentId]/route.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/collections/[name]/documents/route.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/collections/[name]/info/route.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/collections/[name]/ingest/route.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/collections/[name]/route.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/collections/route.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/documents/[docId]/download/route.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/documents/[docId]/route.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/documents/route.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/search/route.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/supported-formats/route.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/sync/[syncId]/route.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/sync/connectors/route.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/sync/local/route.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/sync/sources/[sourceId]/route.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/sync/sources/[sourceId]/trigger/route.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/sync/sources/route.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/global-error.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/globals.css +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/layout.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/not-found.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/app/providers.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/auth/index.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/auth/login-form.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/auth/register-form.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chat-input.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/copy-button.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/index.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/markdown-content.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/message-list.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-approval-dialog.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-call-card.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/icons/google-icon.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/icons/index.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/language-switcher.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/auth-guard.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/breadcrumb.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/header.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/index.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/landing-nav.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/page-transition.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/sidebar.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/theme/index.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/theme/theme-provider.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/theme/theme-toggle.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/accordion.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/alert-dialog.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/avatar.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/badge.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/button.test.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/button.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/card.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/checkbox.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/dialog.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/dropdown-menu.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/index.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/input.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/label.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/popover.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/progress.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/radio-group.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/scroll-area.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/select.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/separator.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/sheet.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/skeleton.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/spinner.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/switch.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/table.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/tabs.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/textarea.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/tooltip.tsx +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-conversations.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/i18n.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/lib/api-client.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/lib/file-api.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/lib/rag-api.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/lib/utils.test.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/lib/utils.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/middleware.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/stores/auth-store.test.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/stores/chat-sidebar-store.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/stores/conversation-store.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/stores/sidebar-store.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/stores/theme-store.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/types/api.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/types/auth.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/src/types/speech.d.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/tsconfig.json +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/vercel.json +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/vitest.config.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/frontend/vitest.setup.ts +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/kubernetes/configmap.yaml +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/kubernetes/deployment.yaml +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/kubernetes/ingress.yaml +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/kubernetes/kustomization.yaml +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/kubernetes/namespace.yaml +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/kubernetes/secret.yaml +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/kubernetes/service.yaml +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/nginx/nginx.conf +0 -0
- {fastapi_fullstack-0.2.4 → fastapi_fullstack-0.2.6}/template/{{cookiecutter.project_slug}}/nginx/ssl/.gitkeep +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fastapi-fullstack
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.6
|
|
4
4
|
Summary: Full-stack FastAPI + Next.js template generator with PydanticAI/LangChain agents, WebSocket streaming, 20+ enterprise integrations, and Logfire/LangSmith observability. Ship AI apps fast. CLI tool to generate production-ready FastAPI + Next.js projects with AI agents, auth, and observability.
|
|
5
5
|
Project-URL: Homepage, https://github.com/vstorm-co/full-stack-ai-agent-template
|
|
6
6
|
Project-URL: Documentation, https://github.com/vstorm-co/full-stack-ai-agent-template#readme
|
|
@@ -59,22 +59,27 @@ Description-Content-Type: text/markdown
|
|
|
59
59
|
|
|
60
60
|
<p align="center">
|
|
61
61
|
<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>
|
|
62
|
-
<a href="https://pepy.tech/projects/fastapi-fullstack"><img src="https://static.pepy.tech/badge/fastapi-fullstack" alt="PyPI Downloads"></a>
|
|
62
|
+
<a href="https://pepy.tech/projects/fastapi-fullstack"><img src="https://static.pepy.tech/badge/fastapi-fullstack/month" alt="PyPI Downloads"></a>
|
|
63
|
+
<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>
|
|
63
64
|
<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>
|
|
64
65
|
<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>
|
|
65
66
|
<img src="https://img.shields.io/badge/coverage-100%25-brightgreen" alt="Coverage">
|
|
67
|
+
<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>
|
|
66
68
|
<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>
|
|
67
|
-
<a href="https://
|
|
69
|
+
<a href="https://www.bestpractices.dev/projects/12539"><img src="https://www.bestpractices.dev/projects/12539/badge" alt="OpenSSF Best Practices"></a>
|
|
70
|
+
<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>
|
|
68
71
|
<a href="https://x.com/Kacper95682155"><img src="https://img.shields.io/badge/X-000000?logo=x&logoColor=white" alt="X"></a>
|
|
69
72
|
</p>
|
|
70
73
|
|
|
71
74
|
<p align="center">
|
|
72
|
-
<b>🤖
|
|
75
|
+
<b>🤖 6 AI Agent Frameworks</b> <i>(PydanticAI, PydanticDeep, LangChain, LangGraph, CrewAI, DeepAgents)</i>
|
|
73
76
|
<br>
|
|
74
77
|
<b>📄 RAG Pipeline</b> <i>(Milvus, Qdrant, pgvector, ChromaDB)</i>
|
|
75
78
|
<br>
|
|
76
79
|
<b>⚡ FastAPI + Next.js 15</b> <i>(WebSocket streaming, real-time chat UI)</i>
|
|
77
80
|
<br>
|
|
81
|
+
<b>🔗 Conversation Sharing</b> <i>(direct sharing, public links, admin browser)</i>
|
|
82
|
+
<br>
|
|
78
83
|
<b>🔒 Enterprise-Ready</b> <i>(JWT, OAuth, admin panel, Celery, Docker, K8s)</i>
|
|
79
84
|
</p>
|
|
80
85
|
|
|
@@ -102,10 +107,21 @@ Description-Content-Type: text/markdown
|
|
|
102
107
|
|
|
103
108
|
---
|
|
104
109
|
|
|
105
|
-
##
|
|
110
|
+
## Vstorm OSS Ecosystem
|
|
106
111
|
|
|
107
|
-
|
|
108
|
-
|
|
112
|
+
This template is part of a broader open-source ecosystem for production AI agents:
|
|
113
|
+
|
|
114
|
+
| Project | Description | |
|
|
115
|
+
|---------|-------------|---|
|
|
116
|
+
| **[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. | [](https://github.com/vstorm-co/pydantic-deepagents) |
|
|
117
|
+
| **[pydantic-ai-shields](https://github.com/vstorm-co/pydantic-ai-shields)** | Drop-in guardrails for Pydantic AI agents. 5 infra + 5 content shields. | [](https://github.com/vstorm-co/pydantic-ai-shields) |
|
|
118
|
+
| **[pydantic-ai-subagents](https://github.com/vstorm-co/pydantic-ai-subagents)** | Declarative multi-agent orchestration with token tracking. | [](https://github.com/vstorm-co/pydantic-ai-subagents) |
|
|
119
|
+
| **[summarization-pydantic-ai](https://github.com/vstorm-co/pydantic-ai-summarization)** | Smart context compression for long-running agents. | [](https://github.com/vstorm-co/summarization-pydantic-ai) |
|
|
120
|
+
| **[pydantic-ai-backend](https://github.com/vstorm-co/pydantic-ai-backend)** | Sandboxed execution for AI agents. Docker + Daytona. | [](https://github.com/vstorm-co/pydantic-ai-backend) |
|
|
121
|
+
|
|
122
|
+
> **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`.
|
|
123
|
+
|
|
124
|
+
Browse all projects at [oss.vstorm.co](https://oss.vstorm.co)
|
|
109
125
|
|
|
110
126
|
---
|
|
111
127
|
|
|
@@ -146,9 +162,28 @@ fastapi-fullstack create my_ai_app --preset ai-agent # AI agent with streami
|
|
|
146
162
|
fastapi-fullstack create my_ai_app --minimal
|
|
147
163
|
```
|
|
148
164
|
|
|
149
|
-
### Start Development
|
|
165
|
+
### Start Development (Docker — recommended)
|
|
166
|
+
|
|
167
|
+
The fastest way to get running — 2 commands:
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
cd my_ai_app
|
|
171
|
+
make docker-up # Start backend + database + migrations + admin user
|
|
172
|
+
make docker-frontend # Start frontend
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
**Access:**
|
|
176
|
+
|
|
177
|
+
- API: <http://localhost:8000>
|
|
178
|
+
- Docs: <http://localhost:8000/docs>
|
|
179
|
+
- Admin Panel: <http://localhost:8000/admin>
|
|
180
|
+
- Frontend: <http://localhost:3000>
|
|
181
|
+
|
|
182
|
+
> [!TIP]
|
|
183
|
+
> That's it. Docker handles database setup, migrations, and admin user creation automatically.
|
|
150
184
|
|
|
151
|
-
|
|
185
|
+
<details>
|
|
186
|
+
<summary><b>Manual setup (without Docker)</b></summary>
|
|
152
187
|
|
|
153
188
|
#### 1. Install dependencies
|
|
154
189
|
|
|
@@ -211,14 +246,7 @@ bun dev
|
|
|
211
246
|
- Admin Panel: <http://localhost:8000/admin> (login with admin user)
|
|
212
247
|
- Frontend: <http://localhost:3000>
|
|
213
248
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
Run everything in Docker:
|
|
217
|
-
|
|
218
|
-
```bash
|
|
219
|
-
make docker-up # Start backend + database
|
|
220
|
-
make docker-frontend # Start frontend
|
|
221
|
-
```
|
|
249
|
+
</details>
|
|
222
250
|
|
|
223
251
|
### Using the Project CLI
|
|
224
252
|
|
|
@@ -268,6 +296,18 @@ Use `make help` to see all available Makefile shortcuts.
|
|
|
268
296
|
|:---:|:---:|
|
|
269
297
|
|  |  |
|
|
270
298
|
|
|
299
|
+
### Messaging Channels
|
|
300
|
+
|
|
301
|
+
<p align="center">
|
|
302
|
+
<img src="https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/telegram_icon.png" width="40" alt="Telegram">
|
|
303
|
+
|
|
304
|
+
<img src="https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/slack_icon.png" width="40" alt="Slack">
|
|
305
|
+
</p>
|
|
306
|
+
|
|
307
|
+
| Telegram Bot |
|
|
308
|
+
|:---:|
|
|
309
|
+
|  |
|
|
310
|
+
|
|
271
311
|
### Admin, Monitoring & API
|
|
272
312
|
|
|
273
313
|
| Celery Flower | SQLAdmin Panel |
|
|
@@ -350,11 +390,14 @@ Generated projects include **CLAUDE.md** and **AGENTS.md** files optimized for A
|
|
|
350
390
|
|
|
351
391
|
### 🤖 AI/LLM First
|
|
352
392
|
|
|
353
|
-
- **
|
|
393
|
+
- **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)
|
|
354
394
|
- **4 LLM Providers** - OpenAI, Anthropic, Google Gemini, OpenRouter
|
|
355
395
|
- **RAG** - Document ingestion, vector search, reranking (Milvus, Qdrant, ChromaDB, pgvector)
|
|
356
396
|
- **WebSocket Streaming** - Real-time responses with full event access
|
|
397
|
+
- **Messaging Channels** - Telegram and Slack multi-bot integration with polling, webhooks, per-thread sessions, group concurrency control
|
|
398
|
+
- **Conversation Sharing** - Share conversations with users or via public links, admin conversation browser
|
|
357
399
|
- **Conversation Persistence** - Save chat history to database
|
|
400
|
+
- **Message Ratings** - Like/dislike responses with feedback, admin analytics
|
|
358
401
|
- **Image Description** - Extract images from documents, describe via LLM vision
|
|
359
402
|
- **Multimodal Embeddings** - Google Gemini embedding model (text + images)
|
|
360
403
|
- **Document Sources** - Local files, API upload, Google Drive, S3/MinIO
|
|
@@ -380,7 +423,7 @@ Generated projects include **CLAUDE.md** and **AGENTS.md** files optimized for A
|
|
|
380
423
|
|
|
381
424
|
| Category | Integrations |
|
|
382
425
|
|----------|-------------|
|
|
383
|
-
| **AI Frameworks** | PydanticAI, LangChain, LangGraph, CrewAI, DeepAgents |
|
|
426
|
+
| **AI Frameworks** | PydanticAI, PydanticDeep, LangChain, LangGraph, CrewAI, DeepAgents |
|
|
384
427
|
| **LLM Providers** | OpenAI, Anthropic, Google Gemini, OpenRouter |
|
|
385
428
|
| **RAG / Vector Stores** | Milvus, Qdrant, ChromaDB, pgvector |
|
|
386
429
|
| **RAG Sources** | Local files, API upload, Google Drive, S3/MinIO, Sync Sources (configurable, scheduled) |
|
|
@@ -389,6 +432,8 @@ Generated projects include **CLAUDE.md** and **AGENTS.md** files optimized for A
|
|
|
389
432
|
| **Security** | Rate limiting, CORS, CSRF protection |
|
|
390
433
|
| **Observability** | Logfire, LangSmith, Sentry, Prometheus |
|
|
391
434
|
| **Admin** | SQLAdmin panel with auth |
|
|
435
|
+
| **Collaboration** | Conversation sharing (direct + link), admin conversation browser |
|
|
436
|
+
| **Messaging** | Telegram multi-bot (polling + webhook), Slack multi-bot (Events API + Socket Mode) |
|
|
392
437
|
| **Events** | Webhooks, WebSockets |
|
|
393
438
|
| **DevOps** | Docker, GitHub Actions, GitLab CI, Kubernetes |
|
|
394
439
|
|
|
@@ -512,7 +557,7 @@ See [Architecture Documentation](https://github.com/vstorm-co/full-stack-ai-agen
|
|
|
512
557
|
|
|
513
558
|
## 🤖 AI Agent
|
|
514
559
|
|
|
515
|
-
Choose from **
|
|
560
|
+
Choose from **6 AI frameworks** and **4 LLM providers** when generating your project:
|
|
516
561
|
|
|
517
562
|
```bash
|
|
518
563
|
# PydanticAI with OpenAI (default)
|
|
@@ -536,6 +581,7 @@ fastapi-fullstack create my_app --rag --database postgresql --task-queue celery
|
|
|
536
581
|
| Framework | OpenAI | Anthropic | Gemini | OpenRouter |
|
|
537
582
|
|-----------|:------:|:---------:|:------:|:----------:|
|
|
538
583
|
| **PydanticAI** | ✓ | ✓ | ✓ | ✓ |
|
|
584
|
+
| **PydanticDeep** | ✓ | ✓ | ✓ | - |
|
|
539
585
|
| **LangChain** | ✓ | ✓ | ✓ | - |
|
|
540
586
|
| **LangGraph** | ✓ | ✓ | ✓ | - |
|
|
541
587
|
| **CrewAI** | ✓ | ✓ | ✓ | - |
|
|
@@ -659,7 +705,7 @@ uv run my_app rag-sync-s3 --collection docs --prefix reports/ --bucket my-bucket
|
|
|
659
705
|
- **Image description** - Extract images from documents, describe via LLM vision API (opt-in)
|
|
660
706
|
- **Chunking** - RecursiveCharacterTextSplitter with configurable size/overlap
|
|
661
707
|
- **Reranking** - Cohere API or local CrossEncoder for improved search quality
|
|
662
|
-
- **Agent integration** - All
|
|
708
|
+
- **Agent integration** - All 6 AI frameworks get a `search_knowledge_base` tool automatically
|
|
663
709
|
|
|
664
710
|
---
|
|
665
711
|
|
|
@@ -19,22 +19,27 @@
|
|
|
19
19
|
|
|
20
20
|
<p align="center">
|
|
21
21
|
<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>
|
|
22
|
-
<a href="https://pepy.tech/projects/fastapi-fullstack"><img src="https://static.pepy.tech/badge/fastapi-fullstack" alt="PyPI Downloads"></a>
|
|
22
|
+
<a href="https://pepy.tech/projects/fastapi-fullstack"><img src="https://static.pepy.tech/badge/fastapi-fullstack/month" alt="PyPI Downloads"></a>
|
|
23
|
+
<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>
|
|
23
24
|
<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>
|
|
24
25
|
<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>
|
|
25
26
|
<img src="https://img.shields.io/badge/coverage-100%25-brightgreen" alt="Coverage">
|
|
27
|
+
<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>
|
|
26
28
|
<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>
|
|
27
|
-
<a href="https://
|
|
29
|
+
<a href="https://www.bestpractices.dev/projects/12539"><img src="https://www.bestpractices.dev/projects/12539/badge" alt="OpenSSF Best Practices"></a>
|
|
30
|
+
<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>
|
|
28
31
|
<a href="https://x.com/Kacper95682155"><img src="https://img.shields.io/badge/X-000000?logo=x&logoColor=white" alt="X"></a>
|
|
29
32
|
</p>
|
|
30
33
|
|
|
31
34
|
<p align="center">
|
|
32
|
-
<b>🤖
|
|
35
|
+
<b>🤖 6 AI Agent Frameworks</b> <i>(PydanticAI, PydanticDeep, LangChain, LangGraph, CrewAI, DeepAgents)</i>
|
|
33
36
|
<br>
|
|
34
37
|
<b>📄 RAG Pipeline</b> <i>(Milvus, Qdrant, pgvector, ChromaDB)</i>
|
|
35
38
|
<br>
|
|
36
39
|
<b>⚡ FastAPI + Next.js 15</b> <i>(WebSocket streaming, real-time chat UI)</i>
|
|
37
40
|
<br>
|
|
41
|
+
<b>🔗 Conversation Sharing</b> <i>(direct sharing, public links, admin browser)</i>
|
|
42
|
+
<br>
|
|
38
43
|
<b>🔒 Enterprise-Ready</b> <i>(JWT, OAuth, admin panel, Celery, Docker, K8s)</i>
|
|
39
44
|
</p>
|
|
40
45
|
|
|
@@ -62,10 +67,21 @@
|
|
|
62
67
|
|
|
63
68
|
---
|
|
64
69
|
|
|
65
|
-
##
|
|
70
|
+
## Vstorm OSS Ecosystem
|
|
66
71
|
|
|
67
|
-
|
|
68
|
-
|
|
72
|
+
This template is part of a broader open-source ecosystem for production AI agents:
|
|
73
|
+
|
|
74
|
+
| Project | Description | |
|
|
75
|
+
|---------|-------------|---|
|
|
76
|
+
| **[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. | [](https://github.com/vstorm-co/pydantic-deepagents) |
|
|
77
|
+
| **[pydantic-ai-shields](https://github.com/vstorm-co/pydantic-ai-shields)** | Drop-in guardrails for Pydantic AI agents. 5 infra + 5 content shields. | [](https://github.com/vstorm-co/pydantic-ai-shields) |
|
|
78
|
+
| **[pydantic-ai-subagents](https://github.com/vstorm-co/pydantic-ai-subagents)** | Declarative multi-agent orchestration with token tracking. | [](https://github.com/vstorm-co/pydantic-ai-subagents) |
|
|
79
|
+
| **[summarization-pydantic-ai](https://github.com/vstorm-co/pydantic-ai-summarization)** | Smart context compression for long-running agents. | [](https://github.com/vstorm-co/summarization-pydantic-ai) |
|
|
80
|
+
| **[pydantic-ai-backend](https://github.com/vstorm-co/pydantic-ai-backend)** | Sandboxed execution for AI agents. Docker + Daytona. | [](https://github.com/vstorm-co/pydantic-ai-backend) |
|
|
81
|
+
|
|
82
|
+
> **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`.
|
|
83
|
+
|
|
84
|
+
Browse all projects at [oss.vstorm.co](https://oss.vstorm.co)
|
|
69
85
|
|
|
70
86
|
---
|
|
71
87
|
|
|
@@ -106,9 +122,28 @@ fastapi-fullstack create my_ai_app --preset ai-agent # AI agent with streami
|
|
|
106
122
|
fastapi-fullstack create my_ai_app --minimal
|
|
107
123
|
```
|
|
108
124
|
|
|
109
|
-
### Start Development
|
|
125
|
+
### Start Development (Docker — recommended)
|
|
126
|
+
|
|
127
|
+
The fastest way to get running — 2 commands:
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
cd my_ai_app
|
|
131
|
+
make docker-up # Start backend + database + migrations + admin user
|
|
132
|
+
make docker-frontend # Start frontend
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
**Access:**
|
|
136
|
+
|
|
137
|
+
- API: <http://localhost:8000>
|
|
138
|
+
- Docs: <http://localhost:8000/docs>
|
|
139
|
+
- Admin Panel: <http://localhost:8000/admin>
|
|
140
|
+
- Frontend: <http://localhost:3000>
|
|
141
|
+
|
|
142
|
+
> [!TIP]
|
|
143
|
+
> That's it. Docker handles database setup, migrations, and admin user creation automatically.
|
|
110
144
|
|
|
111
|
-
|
|
145
|
+
<details>
|
|
146
|
+
<summary><b>Manual setup (without Docker)</b></summary>
|
|
112
147
|
|
|
113
148
|
#### 1. Install dependencies
|
|
114
149
|
|
|
@@ -171,14 +206,7 @@ bun dev
|
|
|
171
206
|
- Admin Panel: <http://localhost:8000/admin> (login with admin user)
|
|
172
207
|
- Frontend: <http://localhost:3000>
|
|
173
208
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
Run everything in Docker:
|
|
177
|
-
|
|
178
|
-
```bash
|
|
179
|
-
make docker-up # Start backend + database
|
|
180
|
-
make docker-frontend # Start frontend
|
|
181
|
-
```
|
|
209
|
+
</details>
|
|
182
210
|
|
|
183
211
|
### Using the Project CLI
|
|
184
212
|
|
|
@@ -228,6 +256,18 @@ Use `make help` to see all available Makefile shortcuts.
|
|
|
228
256
|
|:---:|:---:|
|
|
229
257
|
|  |  |
|
|
230
258
|
|
|
259
|
+
### Messaging Channels
|
|
260
|
+
|
|
261
|
+
<p align="center">
|
|
262
|
+
<img src="https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/telegram_icon.png" width="40" alt="Telegram">
|
|
263
|
+
|
|
264
|
+
<img src="https://raw.githubusercontent.com/vstorm-co/full-stack-ai-agent-template/main/assets/slack_icon.png" width="40" alt="Slack">
|
|
265
|
+
</p>
|
|
266
|
+
|
|
267
|
+
| Telegram Bot |
|
|
268
|
+
|:---:|
|
|
269
|
+
|  |
|
|
270
|
+
|
|
231
271
|
### Admin, Monitoring & API
|
|
232
272
|
|
|
233
273
|
| Celery Flower | SQLAdmin Panel |
|
|
@@ -310,11 +350,14 @@ Generated projects include **CLAUDE.md** and **AGENTS.md** files optimized for A
|
|
|
310
350
|
|
|
311
351
|
### 🤖 AI/LLM First
|
|
312
352
|
|
|
313
|
-
- **
|
|
353
|
+
- **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)
|
|
314
354
|
- **4 LLM Providers** - OpenAI, Anthropic, Google Gemini, OpenRouter
|
|
315
355
|
- **RAG** - Document ingestion, vector search, reranking (Milvus, Qdrant, ChromaDB, pgvector)
|
|
316
356
|
- **WebSocket Streaming** - Real-time responses with full event access
|
|
357
|
+
- **Messaging Channels** - Telegram and Slack multi-bot integration with polling, webhooks, per-thread sessions, group concurrency control
|
|
358
|
+
- **Conversation Sharing** - Share conversations with users or via public links, admin conversation browser
|
|
317
359
|
- **Conversation Persistence** - Save chat history to database
|
|
360
|
+
- **Message Ratings** - Like/dislike responses with feedback, admin analytics
|
|
318
361
|
- **Image Description** - Extract images from documents, describe via LLM vision
|
|
319
362
|
- **Multimodal Embeddings** - Google Gemini embedding model (text + images)
|
|
320
363
|
- **Document Sources** - Local files, API upload, Google Drive, S3/MinIO
|
|
@@ -340,7 +383,7 @@ Generated projects include **CLAUDE.md** and **AGENTS.md** files optimized for A
|
|
|
340
383
|
|
|
341
384
|
| Category | Integrations |
|
|
342
385
|
|----------|-------------|
|
|
343
|
-
| **AI Frameworks** | PydanticAI, LangChain, LangGraph, CrewAI, DeepAgents |
|
|
386
|
+
| **AI Frameworks** | PydanticAI, PydanticDeep, LangChain, LangGraph, CrewAI, DeepAgents |
|
|
344
387
|
| **LLM Providers** | OpenAI, Anthropic, Google Gemini, OpenRouter |
|
|
345
388
|
| **RAG / Vector Stores** | Milvus, Qdrant, ChromaDB, pgvector |
|
|
346
389
|
| **RAG Sources** | Local files, API upload, Google Drive, S3/MinIO, Sync Sources (configurable, scheduled) |
|
|
@@ -349,6 +392,8 @@ Generated projects include **CLAUDE.md** and **AGENTS.md** files optimized for A
|
|
|
349
392
|
| **Security** | Rate limiting, CORS, CSRF protection |
|
|
350
393
|
| **Observability** | Logfire, LangSmith, Sentry, Prometheus |
|
|
351
394
|
| **Admin** | SQLAdmin panel with auth |
|
|
395
|
+
| **Collaboration** | Conversation sharing (direct + link), admin conversation browser |
|
|
396
|
+
| **Messaging** | Telegram multi-bot (polling + webhook), Slack multi-bot (Events API + Socket Mode) |
|
|
352
397
|
| **Events** | Webhooks, WebSockets |
|
|
353
398
|
| **DevOps** | Docker, GitHub Actions, GitLab CI, Kubernetes |
|
|
354
399
|
|
|
@@ -472,7 +517,7 @@ See [Architecture Documentation](https://github.com/vstorm-co/full-stack-ai-agen
|
|
|
472
517
|
|
|
473
518
|
## 🤖 AI Agent
|
|
474
519
|
|
|
475
|
-
Choose from **
|
|
520
|
+
Choose from **6 AI frameworks** and **4 LLM providers** when generating your project:
|
|
476
521
|
|
|
477
522
|
```bash
|
|
478
523
|
# PydanticAI with OpenAI (default)
|
|
@@ -496,6 +541,7 @@ fastapi-fullstack create my_app --rag --database postgresql --task-queue celery
|
|
|
496
541
|
| Framework | OpenAI | Anthropic | Gemini | OpenRouter |
|
|
497
542
|
|-----------|:------:|:---------:|:------:|:----------:|
|
|
498
543
|
| **PydanticAI** | ✓ | ✓ | ✓ | ✓ |
|
|
544
|
+
| **PydanticDeep** | ✓ | ✓ | ✓ | - |
|
|
499
545
|
| **LangChain** | ✓ | ✓ | ✓ | - |
|
|
500
546
|
| **LangGraph** | ✓ | ✓ | ✓ | - |
|
|
501
547
|
| **CrewAI** | ✓ | ✓ | ✓ | - |
|
|
@@ -619,7 +665,7 @@ uv run my_app rag-sync-s3 --collection docs --prefix reports/ --bucket my-bucket
|
|
|
619
665
|
- **Image description** - Extract images from documents, describe via LLM vision API (opt-in)
|
|
620
666
|
- **Chunking** - RecursiveCharacterTextSplitter with configurable size/overlap
|
|
621
667
|
- **Reranking** - Cohere API or local CrossEncoder for improved search quality
|
|
622
|
-
- **Agent integration** - All
|
|
668
|
+
- **Agent integration** - All 6 AI frameworks get a `search_knowledge_base` tool automatically
|
|
623
669
|
|
|
624
670
|
---
|
|
625
671
|
|
|
@@ -314,6 +314,7 @@ def create(
|
|
|
314
314
|
database=DatabaseType.POSTGRESQL,
|
|
315
315
|
enable_logfire=True,
|
|
316
316
|
enable_redis=True,
|
|
317
|
+
enable_websockets=True,
|
|
317
318
|
ai_framework=AIFrameworkType(ai_framework),
|
|
318
319
|
llm_provider=LLMProviderType(llm_provider),
|
|
319
320
|
enable_langsmith=ai_framework in ("langchain", "langgraph", "deepagents"),
|
|
@@ -76,6 +76,7 @@ class AIFrameworkType(StrEnum):
|
|
|
76
76
|
LANGGRAPH = "langgraph"
|
|
77
77
|
CREWAI = "crewai"
|
|
78
78
|
DEEPAGENTS = "deepagents"
|
|
79
|
+
PYDANTIC_DEEP = "pydantic_deep"
|
|
79
80
|
|
|
80
81
|
|
|
81
82
|
class LLMProviderType(StrEnum):
|
|
@@ -214,7 +215,7 @@ class ProjectConfig(BaseModel):
|
|
|
214
215
|
|
|
215
216
|
# Authentication (always JWT + API Key)
|
|
216
217
|
oauth_provider: OAuthProvider = OAuthProvider.NONE
|
|
217
|
-
enable_session_management: bool =
|
|
218
|
+
enable_session_management: bool = False
|
|
218
219
|
|
|
219
220
|
# Observability
|
|
220
221
|
enable_logfire: bool = True
|
|
@@ -234,15 +235,17 @@ class ProjectConfig(BaseModel):
|
|
|
234
235
|
enable_sentry: bool = False
|
|
235
236
|
enable_prometheus: bool = False
|
|
236
237
|
enable_admin_panel: bool = False
|
|
237
|
-
enable_websockets: bool =
|
|
238
|
+
enable_websockets: bool = False
|
|
238
239
|
enable_file_storage: bool = False
|
|
239
240
|
ai_framework: AIFrameworkType = AIFrameworkType.PYDANTIC_AI
|
|
240
241
|
llm_provider: LLMProviderType = LLMProviderType.OPENAI
|
|
242
|
+
sandbox_backend: str = "state" # "state" or "daytona" (for DeepAgents/PydanticDeep)
|
|
241
243
|
enable_webhooks: bool = False
|
|
242
244
|
enable_langsmith: bool = False
|
|
243
245
|
enable_web_search: bool = False
|
|
246
|
+
use_telegram: bool = False
|
|
247
|
+
use_slack: bool = False
|
|
244
248
|
enable_cors: bool = True
|
|
245
|
-
enable_orjson: bool = True
|
|
246
249
|
|
|
247
250
|
# Dev tools
|
|
248
251
|
enable_pytest: bool = True
|
|
@@ -258,7 +261,7 @@ class ProjectConfig(BaseModel):
|
|
|
258
261
|
python_version: str = "3.12"
|
|
259
262
|
|
|
260
263
|
# Frontend
|
|
261
|
-
frontend: FrontendType = FrontendType.
|
|
264
|
+
frontend: FrontendType = FrontendType.NONE
|
|
262
265
|
frontend_port: int = 3000
|
|
263
266
|
brand_color: BrandColorType = BrandColorType.BLUE
|
|
264
267
|
|
|
@@ -308,9 +311,11 @@ class ProjectConfig(BaseModel):
|
|
|
308
311
|
raise ValueError("Caching requires Redis to be enabled")
|
|
309
312
|
if self.llm_provider == LLMProviderType.OPENROUTER and self.ai_framework not in (
|
|
310
313
|
AIFrameworkType.PYDANTIC_AI,
|
|
314
|
+
AIFrameworkType.PYDANTIC_DEEP,
|
|
311
315
|
):
|
|
312
316
|
raise ValueError(
|
|
313
|
-
f"OpenRouter is only supported with PydanticAI,
|
|
317
|
+
f"OpenRouter is only supported with PydanticAI or PydanticDeep, "
|
|
318
|
+
f"not {self.ai_framework.value}"
|
|
314
319
|
)
|
|
315
320
|
if (
|
|
316
321
|
self.enable_rate_limiting
|
|
@@ -333,7 +338,10 @@ class ProjectConfig(BaseModel):
|
|
|
333
338
|
AIFrameworkType.LANGGRAPH,
|
|
334
339
|
AIFrameworkType.DEEPAGENTS,
|
|
335
340
|
):
|
|
336
|
-
raise ValueError(
|
|
341
|
+
raise ValueError(
|
|
342
|
+
"LangSmith requires LangChain, LangGraph, or DeepAgents framework. "
|
|
343
|
+
"PydanticDeep uses Logfire for observability."
|
|
344
|
+
)
|
|
337
345
|
|
|
338
346
|
# Admin panel requires SQLAlchemy (SQLAdmin doesn't fully support SQLModel)
|
|
339
347
|
if self.enable_admin_panel and self.orm_type == OrmType.SQLMODEL:
|
|
@@ -458,6 +466,8 @@ class ProjectConfig(BaseModel):
|
|
|
458
466
|
"use_langgraph": self.ai_framework == AIFrameworkType.LANGGRAPH,
|
|
459
467
|
"use_crewai": self.ai_framework == AIFrameworkType.CREWAI,
|
|
460
468
|
"use_deepagents": self.ai_framework == AIFrameworkType.DEEPAGENTS,
|
|
469
|
+
"use_pydantic_deep": self.ai_framework == AIFrameworkType.PYDANTIC_DEEP,
|
|
470
|
+
"sandbox_backend": self.sandbox_backend,
|
|
461
471
|
"llm_provider": self.llm_provider.value,
|
|
462
472
|
"use_openai": self.llm_provider == LLMProviderType.OPENAI,
|
|
463
473
|
"use_anthropic": self.llm_provider == LLMProviderType.ANTHROPIC,
|
|
@@ -474,7 +484,6 @@ class ProjectConfig(BaseModel):
|
|
|
474
484
|
"websocket_auth_api_key": False,
|
|
475
485
|
"websocket_auth_none": False,
|
|
476
486
|
"enable_cors": self.enable_cors,
|
|
477
|
-
"enable_orjson": self.enable_orjson,
|
|
478
487
|
# Frontend features (always enabled)
|
|
479
488
|
"enable_i18n": True,
|
|
480
489
|
# Example CRUD (always disabled)
|
|
@@ -581,4 +590,7 @@ class ProjectConfig(BaseModel):
|
|
|
581
590
|
"enable_rag_image_description": self.rag_features.enable_image_description
|
|
582
591
|
if self.rag_features.enable_rag
|
|
583
592
|
else False,
|
|
593
|
+
# Messaging channels
|
|
594
|
+
"use_telegram": self.use_telegram,
|
|
595
|
+
"use_slack": self.use_slack,
|
|
584
596
|
}
|