fastapi-fullstack 0.2.3__tar.gz → 0.2.5__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.3 → fastapi_fullstack-0.2.5}/PKG-INFO +66 -21
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/README.md +65 -20
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/fastapi_gen/cli.py +1 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/fastapi_gen/config.py +19 -7
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/fastapi_gen/prompts.py +90 -11
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/pyproject.toml +1 -1
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/VARIABLES.md +21 -3
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/cookiecutter.json +5 -2
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/hooks/post_gen_project.py +5 -2
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/.env.prod.example +14 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/.env.example +26 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/.pre-commit-config.yaml +1 -1
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/agents/__init__.py +11 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/agents/assistant.py +7 -2
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/agents/deepagents_assistant.py +81 -34
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/agents/langchain_assistant.py +1 -1
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/backend/app/agents/pydantic_deep_assistant.py +359 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/api/deps.py +53 -2
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/__init__.py +46 -1
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/admin_conversations.py +400 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/agent.py +976 -32
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/channels.py +431 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/conversations.py +207 -4
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/projects.py +200 -0
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/slack_webhook.py +128 -0
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/telegram_webhook.py +181 -0
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/backend/app/channels/__init__.py +31 -0
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/backend/app/channels/base.py +99 -0
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/backend/app/channels/router.py +633 -0
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/backend/app/channels/slack.py +254 -0
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/backend/app/channels/telegram.py +259 -0
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/backend/app/commands/channel.py +309 -0
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/backend/app/core/channel_crypto.py +47 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/core/config.py +36 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/core/sanitize.py +151 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/db/models/__init__.py +14 -0
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/backend/app/db/models/channel_bot.py +243 -0
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/backend/app/db/models/channel_identity.py +219 -0
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/backend/app/db/models/channel_session.py +303 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/db/models/conversation.py +44 -1
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/backend/app/db/models/conversation_share.py +277 -0
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/backend/app/db/models/project.py +425 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/main.py +79 -11
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/rag/vectorstore.py +1 -1
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/repositories/__init__.py +21 -1
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/backend/app/repositories/channel_bot.py +387 -0
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/backend/app/repositories/channel_identity.py +280 -0
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/backend/app/repositories/channel_session.py +378 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/repositories/conversation.py +26 -0
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/backend/app/repositories/conversation_share.py +373 -0
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/backend/app/repositories/project.py +611 -0
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/backend/app/schemas/channel_bot.py +165 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/schemas/conversation.py +13 -1
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/backend/app/schemas/conversation_share.py +112 -0
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/backend/app/schemas/project.py +103 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/services/__init__.py +16 -1
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/backend/app/services/agent_invocation.py +496 -0
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/backend/app/services/channel_bot.py +331 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/services/conversation.py +36 -5
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/backend/app/services/conversation_share.py +495 -0
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/backend/app/services/project.py +678 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/services/webhook.py +69 -3
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/pyproject.toml +22 -8
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/tests/test_admin.py +0 -14
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/tests/test_agents.py +3 -3
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/tests/test_services_conversation.py +15 -7
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/backend/tests/test_ssrf.py +195 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/docs/configuration.md +20 -0
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/admin/conversations/page.tsx +273 -0
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/shared/[token]/page.tsx +98 -0
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/[id]/shares/[shareId]/route.ts +29 -0
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/[id]/shares/route.ts +55 -0
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/shared-with-me/route.ts +27 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/conversation-sidebar.tsx +43 -0
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/share-dialog.tsx +199 -0
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/frontend/src/hooks/index.ts +11 -0
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-admin-conversations.ts +130 -0
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-conversation-shares.ts +126 -0
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-projects.ts +207 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/stores/index.ts +3 -0
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/frontend/src/stores/project-store.ts +73 -0
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/frontend/src/types/conversation.ts +107 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/types/index.ts +3 -0
- fastapi_fullstack-0.2.5/template/{{cookiecutter.project_slug}}/frontend/src/types/project.ts +59 -0
- fastapi_fullstack-0.2.3/template/{{cookiecutter.project_slug}}/frontend/src/hooks/index.ts +0 -4
- fastapi_fullstack-0.2.3/template/{{cookiecutter.project_slug}}/frontend/src/types/conversation.ts +0 -47
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/.gitignore +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/LICENSE +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/fastapi_gen/__init__.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/fastapi_gen/generator.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/.claude/commands/add-endpoint.md +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/.claude/commands/fix-issue.md +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/.claude/commands/review.md +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/.claude/rules/api-conventions.md +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/.claude/rules/architecture.md +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/.claude/rules/code-style.md +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/.claude/rules/exceptions-security.md +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/.claude/rules/frontend.md +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/.claude/rules/schemas-models.md +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/.claude/rules/testing.md +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/.claude/settings.json +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/.github/workflows/ci.yml +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/.gitignore +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/.gitlab-ci.yml +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/AGENTS.md +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/CLAUDE.md +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/Makefile +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/README.md +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/.dockerignore +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/Dockerfile +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/alembic/env.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/alembic/script.py.mako +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/.gitkeep +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/alembic.ini +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/__init__.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/admin.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/agents/crewai_assistant.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/agents/langgraph_assistant.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/agents/prompts.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/__init__.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/datetime_tool.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/rag_tool.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/web_search.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/api/__init__.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/api/exception_handlers.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/api/router.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/__init__.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/auth.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/files.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/health.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/oauth.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/rag.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/sessions.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/users.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/webhooks.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/api/versioning.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/clients/__init__.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/clients/redis.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/commands/__init__.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/commands/cleanup.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/commands/example.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/commands/rag.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/commands/seed.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/core/__init__.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/core/cache.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/core/csrf.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/core/exceptions.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/core/logfire_setup.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/core/logging.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/core/middleware.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/core/oauth.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/core/rate_limit.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/core/security.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/db/__init__.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/db/base.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/db/models/chat_file.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/db/models/rag_document.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/db/models/session.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/db/models/sync_log.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/db/models/sync_source.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/db/models/user.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/db/models/webhook.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/db/session.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/rag/__init__.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/rag/config.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/rag/connectors/__init__.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/rag/connectors/google_drive.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/rag/connectors/s3.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/rag/documents.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/rag/embeddings.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/rag/image_describer.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/rag/ingestion.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/rag/models.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/rag/reranker.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/rag/retrieval.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/rag/sources/__init__.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/rag/sources/base.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/rag/sources/google_drive.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/rag/sources/s3.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/repositories/chat_file.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/repositories/rag_document.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/repositories/session.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/repositories/sync_log.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/repositories/sync_source.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/repositories/user.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/repositories/webhook.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/schemas/__init__.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/schemas/base.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/schemas/file.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/schemas/rag.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/schemas/session.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/schemas/sync_source.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/schemas/token.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/schemas/user.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/schemas/webhook.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/services/file_storage.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/services/file_upload.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/services/rag_document.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/services/rag_sync.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/services/session.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/services/sync_source.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/services/user.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/worker/__init__.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/worker/arq_app.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/worker/celery_app.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/worker/taskiq_app.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/__init__.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/examples.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/rag_tasks.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/schedules.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/taskiq_examples.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/cli/__init__.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/cli/commands.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/scripts/.gitkeep +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/tests/__init__.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/tests/api/__init__.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_auth.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_exceptions.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_health.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_metrics.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_openapi.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_users.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/tests/conftest.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/tests/test_clients.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/tests/test_commands.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/tests/test_core.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/tests/test_migrations.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/tests/test_repositories.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/tests/test_security.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/tests/test_services.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/backend/tests/test_worker.py +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/docker-compose.dev.yml +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/docker-compose.frontend.yml +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/docker-compose.prod.yml +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/docker-compose.yml +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/docs/adding_features.md +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/docs/architecture.md +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/docs/commands.md +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/docs/file-processing.md +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/docs/howto/add-agent-tool.md +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/docs/howto/add-api-endpoint.md +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/docs/howto/add-background-task.md +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/docs/howto/add-rag-source.md +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/docs/howto/add-sync-connector.md +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/docs/howto/configure-sync-sources.md +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/docs/howto/customize-agent-prompt.md +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/docs/patterns.md +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/docs/permissions.md +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/docs/testing.md +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/.dockerignore +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/.env.example +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/.gitignore +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/.prettierignore +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/.prettierrc +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/Dockerfile +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/README.md +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/e2e/auth.setup.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/e2e/auth.spec.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/e2e/chat.spec.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/e2e/home.spec.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/eslint.config.mjs +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/instrumentation.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/messages/en.json +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/messages/pl.json +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/next.config.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/package.json +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/playwright.config.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/postcss.config.mjs +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(auth)/layout.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(auth)/login/page.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(auth)/register/page.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/chat/page.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/dashboard/page.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/layout.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/profile/page.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/rag/page.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/page.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/auth/callback/page.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/error.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/layout.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/page.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/login/route.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/logout/route.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/me/route.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/oauth-callback/route.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/refresh/route.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/register/route.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/[id]/messages/route.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/[id]/route.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/export/route.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/route.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/files/[id]/route.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/files/upload/route.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/health/route.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/users/avatar/[userId]/route.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/users/me/avatar/route.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/agent/models/route.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/collections/[name]/documents/[documentId]/route.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/collections/[name]/documents/route.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/collections/[name]/info/route.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/collections/[name]/ingest/route.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/collections/[name]/route.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/collections/route.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/documents/[docId]/download/route.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/documents/[docId]/route.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/documents/route.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/search/route.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/supported-formats/route.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/sync/[syncId]/route.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/sync/connectors/route.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/sync/local/route.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/sync/sources/[sourceId]/route.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/sync/sources/[sourceId]/trigger/route.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/sync/sources/route.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/global-error.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/globals.css +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/layout.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/not-found.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/app/providers.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/auth/index.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/auth/login-form.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/auth/register-form.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chat-container.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chat-input.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/copy-button.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/index.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/markdown-content.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/message-item.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/message-list.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-approval-dialog.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-call-card.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/icons/google-icon.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/icons/index.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/language-switcher.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/auth-guard.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/breadcrumb.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/header.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/index.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/landing-nav.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/page-transition.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/sidebar.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/theme/index.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/theme/theme-provider.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/theme/theme-toggle.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/accordion.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/alert-dialog.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/avatar.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/badge.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/button.test.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/button.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/card.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/checkbox.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/dialog.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/dropdown-menu.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/index.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/input.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/label.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/popover.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/progress.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/radio-group.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/scroll-area.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/select.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/separator.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/sheet.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/skeleton.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/spinner.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/switch.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/table.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/tabs.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/textarea.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/tooltip.tsx +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-auth.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-chat.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-conversations.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-websocket.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/i18n.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/lib/api-client.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/lib/constants.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/lib/file-api.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/lib/rag-api.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/lib/server-api.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/lib/utils.test.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/lib/utils.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/middleware.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/stores/auth-store.test.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/stores/auth-store.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/stores/chat-sidebar-store.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/stores/chat-store.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/stores/conversation-store.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/stores/sidebar-store.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/stores/theme-store.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/types/api.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/types/auth.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/types/chat.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/src/types/speech.d.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/tsconfig.json +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/vercel.json +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/vitest.config.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/frontend/vitest.setup.ts +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/kubernetes/configmap.yaml +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/kubernetes/deployment.yaml +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/kubernetes/ingress.yaml +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/kubernetes/kustomization.yaml +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/kubernetes/namespace.yaml +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/kubernetes/secret.yaml +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/kubernetes/service.yaml +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/template/{{cookiecutter.project_slug}}/nginx/nginx.conf +0 -0
- {fastapi_fullstack-0.2.3 → fastapi_fullstack-0.2.5}/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.5
|
|
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,10 +390,12 @@ 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
|
|
358
400
|
- **Image Description** - Extract images from documents, describe via LLM vision
|
|
359
401
|
- **Multimodal Embeddings** - Google Gemini embedding model (text + images)
|
|
@@ -380,7 +422,7 @@ Generated projects include **CLAUDE.md** and **AGENTS.md** files optimized for A
|
|
|
380
422
|
|
|
381
423
|
| Category | Integrations |
|
|
382
424
|
|----------|-------------|
|
|
383
|
-
| **AI Frameworks** | PydanticAI, LangChain, LangGraph, CrewAI, DeepAgents |
|
|
425
|
+
| **AI Frameworks** | PydanticAI, PydanticDeep, LangChain, LangGraph, CrewAI, DeepAgents |
|
|
384
426
|
| **LLM Providers** | OpenAI, Anthropic, Google Gemini, OpenRouter |
|
|
385
427
|
| **RAG / Vector Stores** | Milvus, Qdrant, ChromaDB, pgvector |
|
|
386
428
|
| **RAG Sources** | Local files, API upload, Google Drive, S3/MinIO, Sync Sources (configurable, scheduled) |
|
|
@@ -389,6 +431,8 @@ Generated projects include **CLAUDE.md** and **AGENTS.md** files optimized for A
|
|
|
389
431
|
| **Security** | Rate limiting, CORS, CSRF protection |
|
|
390
432
|
| **Observability** | Logfire, LangSmith, Sentry, Prometheus |
|
|
391
433
|
| **Admin** | SQLAdmin panel with auth |
|
|
434
|
+
| **Collaboration** | Conversation sharing (direct + link), admin conversation browser |
|
|
435
|
+
| **Messaging** | Telegram multi-bot (polling + webhook), Slack multi-bot (Events API + Socket Mode) |
|
|
392
436
|
| **Events** | Webhooks, WebSockets |
|
|
393
437
|
| **DevOps** | Docker, GitHub Actions, GitLab CI, Kubernetes |
|
|
394
438
|
|
|
@@ -512,7 +556,7 @@ See [Architecture Documentation](https://github.com/vstorm-co/full-stack-ai-agen
|
|
|
512
556
|
|
|
513
557
|
## 🤖 AI Agent
|
|
514
558
|
|
|
515
|
-
Choose from **
|
|
559
|
+
Choose from **6 AI frameworks** and **4 LLM providers** when generating your project:
|
|
516
560
|
|
|
517
561
|
```bash
|
|
518
562
|
# PydanticAI with OpenAI (default)
|
|
@@ -536,6 +580,7 @@ fastapi-fullstack create my_app --rag --database postgresql --task-queue celery
|
|
|
536
580
|
| Framework | OpenAI | Anthropic | Gemini | OpenRouter |
|
|
537
581
|
|-----------|:------:|:---------:|:------:|:----------:|
|
|
538
582
|
| **PydanticAI** | ✓ | ✓ | ✓ | ✓ |
|
|
583
|
+
| **PydanticDeep** | ✓ | ✓ | ✓ | - |
|
|
539
584
|
| **LangChain** | ✓ | ✓ | ✓ | - |
|
|
540
585
|
| **LangGraph** | ✓ | ✓ | ✓ | - |
|
|
541
586
|
| **CrewAI** | ✓ | ✓ | ✓ | - |
|
|
@@ -659,7 +704,7 @@ uv run my_app rag-sync-s3 --collection docs --prefix reports/ --bucket my-bucket
|
|
|
659
704
|
- **Image description** - Extract images from documents, describe via LLM vision API (opt-in)
|
|
660
705
|
- **Chunking** - RecursiveCharacterTextSplitter with configurable size/overlap
|
|
661
706
|
- **Reranking** - Cohere API or local CrossEncoder for improved search quality
|
|
662
|
-
- **Agent integration** - All
|
|
707
|
+
- **Agent integration** - All 6 AI frameworks get a `search_knowledge_base` tool automatically
|
|
663
708
|
|
|
664
709
|
---
|
|
665
710
|
|
|
@@ -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,10 +350,12 @@ 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
|
|
318
360
|
- **Image Description** - Extract images from documents, describe via LLM vision
|
|
319
361
|
- **Multimodal Embeddings** - Google Gemini embedding model (text + images)
|
|
@@ -340,7 +382,7 @@ Generated projects include **CLAUDE.md** and **AGENTS.md** files optimized for A
|
|
|
340
382
|
|
|
341
383
|
| Category | Integrations |
|
|
342
384
|
|----------|-------------|
|
|
343
|
-
| **AI Frameworks** | PydanticAI, LangChain, LangGraph, CrewAI, DeepAgents |
|
|
385
|
+
| **AI Frameworks** | PydanticAI, PydanticDeep, LangChain, LangGraph, CrewAI, DeepAgents |
|
|
344
386
|
| **LLM Providers** | OpenAI, Anthropic, Google Gemini, OpenRouter |
|
|
345
387
|
| **RAG / Vector Stores** | Milvus, Qdrant, ChromaDB, pgvector |
|
|
346
388
|
| **RAG Sources** | Local files, API upload, Google Drive, S3/MinIO, Sync Sources (configurable, scheduled) |
|
|
@@ -349,6 +391,8 @@ Generated projects include **CLAUDE.md** and **AGENTS.md** files optimized for A
|
|
|
349
391
|
| **Security** | Rate limiting, CORS, CSRF protection |
|
|
350
392
|
| **Observability** | Logfire, LangSmith, Sentry, Prometheus |
|
|
351
393
|
| **Admin** | SQLAdmin panel with auth |
|
|
394
|
+
| **Collaboration** | Conversation sharing (direct + link), admin conversation browser |
|
|
395
|
+
| **Messaging** | Telegram multi-bot (polling + webhook), Slack multi-bot (Events API + Socket Mode) |
|
|
352
396
|
| **Events** | Webhooks, WebSockets |
|
|
353
397
|
| **DevOps** | Docker, GitHub Actions, GitLab CI, Kubernetes |
|
|
354
398
|
|
|
@@ -472,7 +516,7 @@ See [Architecture Documentation](https://github.com/vstorm-co/full-stack-ai-agen
|
|
|
472
516
|
|
|
473
517
|
## 🤖 AI Agent
|
|
474
518
|
|
|
475
|
-
Choose from **
|
|
519
|
+
Choose from **6 AI frameworks** and **4 LLM providers** when generating your project:
|
|
476
520
|
|
|
477
521
|
```bash
|
|
478
522
|
# PydanticAI with OpenAI (default)
|
|
@@ -496,6 +540,7 @@ fastapi-fullstack create my_app --rag --database postgresql --task-queue celery
|
|
|
496
540
|
| Framework | OpenAI | Anthropic | Gemini | OpenRouter |
|
|
497
541
|
|-----------|:------:|:---------:|:------:|:----------:|
|
|
498
542
|
| **PydanticAI** | ✓ | ✓ | ✓ | ✓ |
|
|
543
|
+
| **PydanticDeep** | ✓ | ✓ | ✓ | - |
|
|
499
544
|
| **LangChain** | ✓ | ✓ | ✓ | - |
|
|
500
545
|
| **LangGraph** | ✓ | ✓ | ✓ | - |
|
|
501
546
|
| **CrewAI** | ✓ | ✓ | ✓ | - |
|
|
@@ -619,7 +664,7 @@ uv run my_app rag-sync-s3 --collection docs --prefix reports/ --bucket my-bucket
|
|
|
619
664
|
- **Image description** - Extract images from documents, describe via LLM vision API (opt-in)
|
|
620
665
|
- **Chunking** - RecursiveCharacterTextSplitter with configurable size/overlap
|
|
621
666
|
- **Reranking** - Cohere API or local CrossEncoder for improved search quality
|
|
622
|
-
- **Agent integration** - All
|
|
667
|
+
- **Agent integration** - All 6 AI frameworks get a `search_knowledge_base` tool automatically
|
|
623
668
|
|
|
624
669
|
---
|
|
625
670
|
|
|
@@ -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
|
}
|
|
@@ -367,11 +367,6 @@ def prompt_integrations(
|
|
|
367
367
|
value="cors",
|
|
368
368
|
checked=True,
|
|
369
369
|
),
|
|
370
|
-
questionary.Choice(
|
|
371
|
-
"orjson — faster JSON serialization",
|
|
372
|
-
value="orjson",
|
|
373
|
-
checked=True,
|
|
374
|
-
),
|
|
375
370
|
]
|
|
376
371
|
)
|
|
377
372
|
|
|
@@ -398,7 +393,6 @@ def prompt_integrations(
|
|
|
398
393
|
"enable_file_storage": "file_storage" in features,
|
|
399
394
|
"enable_webhooks": "webhooks" in features,
|
|
400
395
|
"enable_cors": "cors" in features,
|
|
401
|
-
"enable_orjson": "orjson" in features,
|
|
402
396
|
}
|
|
403
397
|
|
|
404
398
|
|
|
@@ -586,7 +580,13 @@ def prompt_ai_framework() -> AIFrameworkType:
|
|
|
586
580
|
questionary.Choice("LangChain", value=AIFrameworkType.LANGCHAIN),
|
|
587
581
|
questionary.Choice("LangGraph (ReAct agent)", value=AIFrameworkType.LANGGRAPH),
|
|
588
582
|
questionary.Choice("CrewAI (multi-agent crews)", value=AIFrameworkType.CREWAI),
|
|
589
|
-
questionary.Choice(
|
|
583
|
+
questionary.Choice(
|
|
584
|
+
"DeepAgents (agentic coding, LangChain)", value=AIFrameworkType.DEEPAGENTS
|
|
585
|
+
),
|
|
586
|
+
questionary.Choice(
|
|
587
|
+
"PydanticDeep (deep agentic coding, Docker sandbox)",
|
|
588
|
+
value=AIFrameworkType.PYDANTIC_DEEP,
|
|
589
|
+
),
|
|
590
590
|
]
|
|
591
591
|
|
|
592
592
|
return cast(
|
|
@@ -601,12 +601,43 @@ def prompt_ai_framework() -> AIFrameworkType:
|
|
|
601
601
|
)
|
|
602
602
|
|
|
603
603
|
|
|
604
|
+
def prompt_sandbox_backend(ai_framework: AIFrameworkType) -> str:
|
|
605
|
+
"""Prompt for sandbox/environment backend type.
|
|
606
|
+
|
|
607
|
+
Shown only when the selected AI framework supports sandbox backends
|
|
608
|
+
(DeepAgents, PydanticDeep).
|
|
609
|
+
"""
|
|
610
|
+
console.print()
|
|
611
|
+
console.print("[bold cyan]Agent Sandbox Environment[/]")
|
|
612
|
+
console.print()
|
|
613
|
+
|
|
614
|
+
choices = [
|
|
615
|
+
questionary.Choice("State (in-memory, ephemeral — default)", value="state"),
|
|
616
|
+
]
|
|
617
|
+
|
|
618
|
+
if ai_framework == AIFrameworkType.PYDANTIC_DEEP:
|
|
619
|
+
choices.append(
|
|
620
|
+
questionary.Choice("Daytona workspace (cloud dev environment)", value="daytona"),
|
|
621
|
+
)
|
|
622
|
+
|
|
623
|
+
return cast(
|
|
624
|
+
str,
|
|
625
|
+
_check_cancelled(
|
|
626
|
+
questionary.select(
|
|
627
|
+
"Select agent sandbox environment:",
|
|
628
|
+
choices=choices,
|
|
629
|
+
default=choices[0],
|
|
630
|
+
).ask()
|
|
631
|
+
),
|
|
632
|
+
)
|
|
633
|
+
|
|
634
|
+
|
|
604
635
|
def prompt_llm_provider(ai_framework: AIFrameworkType) -> LLMProviderType:
|
|
605
636
|
"""Prompt for LLM provider selection.
|
|
606
637
|
|
|
607
638
|
Args:
|
|
608
639
|
ai_framework: The selected AI framework. OpenRouter is only
|
|
609
|
-
available for PydanticAI (
|
|
640
|
+
available for PydanticAI and PydanticDeep (both use pydantic-ai under the hood).
|
|
610
641
|
"""
|
|
611
642
|
console.print()
|
|
612
643
|
console.print("[bold cyan]LLM Provider[/]")
|
|
@@ -618,8 +649,8 @@ def prompt_llm_provider(ai_framework: AIFrameworkType) -> LLMProviderType:
|
|
|
618
649
|
questionary.Choice("Google Gemini (gemini-2.0-flash)", value=LLMProviderType.GOOGLE),
|
|
619
650
|
]
|
|
620
651
|
|
|
621
|
-
# OpenRouter
|
|
622
|
-
if ai_framework
|
|
652
|
+
# OpenRouter available for PydanticAI and PydanticDeep (both use pydantic-ai)
|
|
653
|
+
if ai_framework in (AIFrameworkType.PYDANTIC_AI, AIFrameworkType.PYDANTIC_DEEP):
|
|
623
654
|
choices.append(
|
|
624
655
|
questionary.Choice("OpenRouter (multi-provider)", value=LLMProviderType.OPENROUTER)
|
|
625
656
|
)
|
|
@@ -767,6 +798,35 @@ def prompt_rag_config() -> RAGFeatures:
|
|
|
767
798
|
)
|
|
768
799
|
|
|
769
800
|
|
|
801
|
+
def prompt_channels() -> tuple[bool, bool]:
|
|
802
|
+
"""Prompt for messaging channel integrations (Telegram, Slack)."""
|
|
803
|
+
console.print()
|
|
804
|
+
console.print("[bold cyan]Messaging Channels[/]")
|
|
805
|
+
console.print()
|
|
806
|
+
|
|
807
|
+
use_telegram = cast(
|
|
808
|
+
bool,
|
|
809
|
+
_check_cancelled(
|
|
810
|
+
questionary.confirm(
|
|
811
|
+
"Enable Telegram bot integration? (multi-bot, polling + webhook, role-based access)",
|
|
812
|
+
default=False,
|
|
813
|
+
).ask()
|
|
814
|
+
),
|
|
815
|
+
)
|
|
816
|
+
|
|
817
|
+
use_slack = cast(
|
|
818
|
+
bool,
|
|
819
|
+
_check_cancelled(
|
|
820
|
+
questionary.confirm(
|
|
821
|
+
"Enable Slack bot integration? (Events API, threads, @mention support)",
|
|
822
|
+
default=False,
|
|
823
|
+
).ask()
|
|
824
|
+
),
|
|
825
|
+
)
|
|
826
|
+
|
|
827
|
+
return use_telegram, use_slack
|
|
828
|
+
|
|
829
|
+
|
|
770
830
|
def prompt_python_version() -> str:
|
|
771
831
|
"""Prompt for Python version selection."""
|
|
772
832
|
console.print()
|
|
@@ -894,12 +954,19 @@ def run_interactive_prompts() -> ProjectConfig:
|
|
|
894
954
|
rag_features = RAGFeatures()
|
|
895
955
|
|
|
896
956
|
ai_framework = prompt_ai_framework()
|
|
957
|
+
|
|
958
|
+
# Sandbox backend selection for agentic coding frameworks
|
|
959
|
+
sandbox_backend = "state"
|
|
960
|
+
if ai_framework in (AIFrameworkType.DEEPAGENTS, AIFrameworkType.PYDANTIC_DEEP):
|
|
961
|
+
sandbox_backend = prompt_sandbox_backend(ai_framework)
|
|
962
|
+
|
|
897
963
|
llm_provider = prompt_llm_provider(ai_framework)
|
|
898
964
|
|
|
899
965
|
# RAG Logic
|
|
900
966
|
rag_features = prompt_rag_config()
|
|
901
967
|
|
|
902
|
-
# LangSmith for LangChain-ecosystem frameworks
|
|
968
|
+
# LangSmith for LangChain-ecosystem frameworks only
|
|
969
|
+
# (PydanticDeep uses Logfire for observability, not LangSmith)
|
|
903
970
|
if ai_framework in (
|
|
904
971
|
AIFrameworkType.LANGCHAIN,
|
|
905
972
|
AIFrameworkType.LANGGRAPH,
|
|
@@ -907,6 +974,9 @@ def run_interactive_prompts() -> ProjectConfig:
|
|
|
907
974
|
):
|
|
908
975
|
enable_langsmith = prompt_langsmith()
|
|
909
976
|
|
|
977
|
+
# Messaging channel integrations
|
|
978
|
+
use_telegram, use_slack = prompt_channels()
|
|
979
|
+
|
|
910
980
|
# Rate limit configuration (when rate limiting is enabled)
|
|
911
981
|
rate_limit_requests = 100
|
|
912
982
|
rate_limit_period = 60
|
|
@@ -939,9 +1009,12 @@ def run_interactive_prompts() -> ProjectConfig:
|
|
|
939
1009
|
logfire_features=logfire_features,
|
|
940
1010
|
background_tasks=background_tasks,
|
|
941
1011
|
ai_framework=ai_framework,
|
|
1012
|
+
sandbox_backend=sandbox_backend,
|
|
942
1013
|
llm_provider=llm_provider,
|
|
943
1014
|
rag_features=rag_features,
|
|
944
1015
|
enable_langsmith=enable_langsmith,
|
|
1016
|
+
use_telegram=use_telegram,
|
|
1017
|
+
use_slack=use_slack,
|
|
945
1018
|
rate_limit_requests=rate_limit_requests,
|
|
946
1019
|
rate_limit_period=rate_limit_period,
|
|
947
1020
|
rate_limit_storage=rate_limit_storage,
|
|
@@ -990,11 +1063,17 @@ def show_summary(config: ProjectConfig) -> None:
|
|
|
990
1063
|
if config.enable_admin_panel:
|
|
991
1064
|
enabled_features.append("SQL Admin Panel")
|
|
992
1065
|
ai_info = f"AI Agent ({config.ai_framework.value}, {config.llm_provider.value})"
|
|
1066
|
+
if config.ai_framework in (AIFrameworkType.DEEPAGENTS, AIFrameworkType.PYDANTIC_DEEP):
|
|
1067
|
+
ai_info += f", sandbox: {config.sandbox_backend}"
|
|
993
1068
|
if config.rag_features.enable_rag:
|
|
994
1069
|
ai_info += f" + RAG ({config.rag_features.vector_store.value})"
|
|
995
1070
|
enabled_features.append(ai_info)
|
|
996
1071
|
if config.enable_webhooks:
|
|
997
1072
|
enabled_features.append("Webhooks")
|
|
1073
|
+
if config.use_telegram:
|
|
1074
|
+
enabled_features.append("Telegram")
|
|
1075
|
+
if config.use_slack:
|
|
1076
|
+
enabled_features.append("Slack")
|
|
998
1077
|
if config.enable_docker:
|
|
999
1078
|
enabled_features.append("Docker")
|
|
1000
1079
|
|