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