fastapi-fullstack 0.1.1__tar.gz → 0.1.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/PKG-INFO +52 -26
  2. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/README.md +48 -22
  3. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/pyproject.toml +5 -5
  4. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/hooks/post_gen_project.py +8 -0
  5. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/Makefile +6 -1
  6. fastapi_fullstack-0.1.3/template/{{cookiecutter.project_slug}}/backend/app/admin.py +356 -0
  7. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/agent.py +77 -61
  8. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_exceptions.py +3 -3
  9. fastapi_fullstack-0.1.1/template/{{cookiecutter.project_slug}}/backend/app/admin.py +0 -115
  10. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/.gitignore +0 -0
  11. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/LICENSE +0 -0
  12. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/fastapi_gen/__init__.py +0 -0
  13. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/fastapi_gen/cli.py +0 -0
  14. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/fastapi_gen/config.py +0 -0
  15. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/fastapi_gen/generator.py +0 -0
  16. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/fastapi_gen/prompts.py +0 -0
  17. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/cookiecutter.json +0 -0
  18. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/.env.example +0 -0
  19. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/.github/workflows/ci.yml +0 -0
  20. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/.gitignore +0 -0
  21. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/CLAUDE.md +0 -0
  22. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/README.md +0 -0
  23. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/.dockerignore +0 -0
  24. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/.pre-commit-config.yaml +0 -0
  25. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/Dockerfile +0 -0
  26. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/alembic/env.py +0 -0
  27. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/alembic/script.py.mako +0 -0
  28. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/.gitkeep +0 -0
  29. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/alembic.ini +0 -0
  30. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/__init__.py +0 -0
  31. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/agents/__init__.py +0 -0
  32. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/agents/assistant.py +0 -0
  33. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/__init__.py +0 -0
  34. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/datetime_tool.py +0 -0
  35. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/api/__init__.py +0 -0
  36. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/api/deps.py +0 -0
  37. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/api/exception_handlers.py +0 -0
  38. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/api/router.py +0 -0
  39. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/__init__.py +0 -0
  40. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/__init__.py +0 -0
  41. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/auth.py +0 -0
  42. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/conversations.py +0 -0
  43. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/health.py +0 -0
  44. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/items.py +0 -0
  45. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/oauth.py +0 -0
  46. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/sessions.py +0 -0
  47. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/users.py +0 -0
  48. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/webhooks.py +0 -0
  49. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/ws.py +0 -0
  50. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/api/versioning.py +0 -0
  51. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/clients/__init__.py +0 -0
  52. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/clients/redis.py +0 -0
  53. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/commands/__init__.py +0 -0
  54. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/commands/cleanup.py +0 -0
  55. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/commands/example.py +0 -0
  56. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/commands/seed.py +0 -0
  57. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/core/__init__.py +0 -0
  58. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/core/cache.py +0 -0
  59. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/core/config.py +0 -0
  60. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/core/csrf.py +0 -0
  61. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/core/exceptions.py +0 -0
  62. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/core/logfire_setup.py +0 -0
  63. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/core/middleware.py +0 -0
  64. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/core/oauth.py +0 -0
  65. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/core/rate_limit.py +0 -0
  66. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/core/sanitize.py +0 -0
  67. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/core/security.py +0 -0
  68. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/db/__init__.py +0 -0
  69. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/db/base.py +0 -0
  70. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/db/models/__init__.py +0 -0
  71. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/db/models/conversation.py +0 -0
  72. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/db/models/item.py +0 -0
  73. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/db/models/session.py +0 -0
  74. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/db/models/user.py +0 -0
  75. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/db/models/webhook.py +0 -0
  76. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/db/session.py +0 -0
  77. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/main.py +0 -0
  78. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/pipelines/__init__.py +0 -0
  79. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/pipelines/base.py +0 -0
  80. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/repositories/__init__.py +0 -0
  81. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/repositories/base.py +0 -0
  82. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/repositories/conversation.py +0 -0
  83. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/repositories/item.py +0 -0
  84. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/repositories/session.py +0 -0
  85. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/repositories/user.py +0 -0
  86. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/repositories/webhook.py +0 -0
  87. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/schemas/__init__.py +0 -0
  88. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/schemas/base.py +0 -0
  89. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/schemas/conversation.py +0 -0
  90. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/schemas/item.py +0 -0
  91. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/schemas/session.py +0 -0
  92. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/schemas/token.py +0 -0
  93. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/schemas/user.py +0 -0
  94. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/schemas/webhook.py +0 -0
  95. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/services/__init__.py +0 -0
  96. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/services/conversation.py +0 -0
  97. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/services/item.py +0 -0
  98. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/services/session.py +0 -0
  99. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/services/user.py +0 -0
  100. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/services/webhook.py +0 -0
  101. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/worker/__init__.py +0 -0
  102. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/worker/celery_app.py +0 -0
  103. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/worker/taskiq_app.py +0 -0
  104. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/__init__.py +0 -0
  105. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/examples.py +0 -0
  106. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/schedules.py +0 -0
  107. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/taskiq_examples.py +0 -0
  108. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/cli/__init__.py +0 -0
  109. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/cli/commands.py +0 -0
  110. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/pyproject.toml +0 -0
  111. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/scripts/.gitkeep +0 -0
  112. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/tests/__init__.py +0 -0
  113. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/tests/api/__init__.py +0 -0
  114. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_auth.py +0 -0
  115. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_health.py +0 -0
  116. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_items.py +0 -0
  117. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_users.py +0 -0
  118. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/tests/conftest.py +0 -0
  119. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/tests/test_agents.py +0 -0
  120. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/tests/test_clients.py +0 -0
  121. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/tests/test_commands.py +0 -0
  122. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/tests/test_core.py +0 -0
  123. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/tests/test_pipelines.py +0 -0
  124. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/tests/test_repositories.py +0 -0
  125. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/tests/test_security.py +0 -0
  126. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/tests/test_services.py +0 -0
  127. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/backend/tests/test_worker.py +0 -0
  128. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/docker-compose.dev.yml +0 -0
  129. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/docker-compose.frontend.yml +0 -0
  130. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/docker-compose.prod.yml +0 -0
  131. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/docker-compose.yml +0 -0
  132. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/.env.example +0 -0
  133. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/.gitignore +0 -0
  134. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/.prettierignore +0 -0
  135. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/.prettierrc +0 -0
  136. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/Dockerfile +0 -0
  137. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/README.md +0 -0
  138. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/e2e/auth.setup.ts +0 -0
  139. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/e2e/auth.spec.ts +0 -0
  140. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/e2e/chat.spec.ts +0 -0
  141. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/e2e/home.spec.ts +0 -0
  142. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/instrumentation.ts +0 -0
  143. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/messages/en.json +0 -0
  144. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/messages/pl.json +0 -0
  145. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/next.config.ts +0 -0
  146. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/package.json +0 -0
  147. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/playwright.config.ts +0 -0
  148. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/postcss.config.mjs +0 -0
  149. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/app/(auth)/layout.tsx +0 -0
  150. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/app/(auth)/login/page.tsx +0 -0
  151. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/app/(auth)/register/page.tsx +0 -0
  152. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/app/(dashboard)/chat/page.tsx +0 -0
  153. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/app/(dashboard)/dashboard/page.tsx +0 -0
  154. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/app/(dashboard)/layout.tsx +0 -0
  155. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/app/(dashboard)/profile/page.tsx +0 -0
  156. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/login/route.ts +0 -0
  157. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/logout/route.ts +0 -0
  158. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/me/route.ts +0 -0
  159. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/oauth-callback/route.ts +0 -0
  160. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/refresh/route.ts +0 -0
  161. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/register/route.ts +0 -0
  162. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/[id]/messages/route.ts +0 -0
  163. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/[id]/route.ts +0 -0
  164. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/route.ts +0 -0
  165. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/health/route.ts +0 -0
  166. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/app/auth/callback/page.tsx +0 -0
  167. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/app/globals.css +0 -0
  168. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/app/layout.tsx +0 -0
  169. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/app/page.tsx +0 -0
  170. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/app/providers.tsx +0 -0
  171. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/components/auth/index.ts +0 -0
  172. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/components/auth/login-form.tsx +0 -0
  173. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/components/auth/register-form.tsx +0 -0
  174. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chat-container.tsx +0 -0
  175. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chat-input.tsx +0 -0
  176. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/conversation-sidebar.tsx +0 -0
  177. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/index.ts +0 -0
  178. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/message-item.tsx +0 -0
  179. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/message-list.tsx +0 -0
  180. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-call-card.tsx +0 -0
  181. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/components/icons/google-icon.tsx +0 -0
  182. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/components/icons/index.ts +0 -0
  183. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/components/language-switcher.tsx +0 -0
  184. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/header.tsx +0 -0
  185. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/index.ts +0 -0
  186. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/sidebar.tsx +0 -0
  187. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/components/theme/index.ts +0 -0
  188. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/components/theme/theme-provider.tsx +0 -0
  189. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/components/theme/theme-toggle.tsx +0 -0
  190. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/badge.tsx +0 -0
  191. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/button.test.tsx +0 -0
  192. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/button.tsx +0 -0
  193. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/card.tsx +0 -0
  194. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/index.ts +0 -0
  195. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/input.tsx +0 -0
  196. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/label.tsx +0 -0
  197. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/index.ts +0 -0
  198. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-auth.ts +0 -0
  199. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-chat.ts +0 -0
  200. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-conversations.ts +0 -0
  201. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-websocket.ts +0 -0
  202. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/i18n.ts +0 -0
  203. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/lib/api-client.ts +0 -0
  204. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/lib/constants.ts +0 -0
  205. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/lib/server-api.ts +0 -0
  206. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/lib/utils.test.ts +0 -0
  207. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/lib/utils.ts +0 -0
  208. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/middleware.ts +0 -0
  209. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/stores/auth-store.test.ts +0 -0
  210. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/stores/auth-store.ts +0 -0
  211. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/stores/chat-store.ts +0 -0
  212. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/stores/conversation-store.ts +0 -0
  213. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/stores/index.ts +0 -0
  214. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/stores/theme-store.ts +0 -0
  215. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/types/api.ts +0 -0
  216. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/types/auth.ts +0 -0
  217. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/types/chat.ts +0 -0
  218. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/types/conversation.ts +0 -0
  219. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/src/types/index.ts +0 -0
  220. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/tsconfig.json +0 -0
  221. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/vitest.config.ts +0 -0
  222. {fastapi_fullstack-0.1.1 → fastapi_fullstack-0.1.3}/template/{{cookiecutter.project_slug}}/frontend/vitest.setup.ts +0 -0
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastapi-fullstack
3
- Version: 0.1.1
3
+ Version: 0.1.3
4
4
  Summary: Interactive FastAPI project generator with Logfire observability
5
- Project-URL: Homepage, https://github.com/yourusername/fastapi-gen
6
- Project-URL: Documentation, https://github.com/yourusername/fastapi-gen#readme
7
- Project-URL: Repository, https://github.com/yourusername/fastapi-gen
5
+ Project-URL: Homepage, https://github.com/vstorm-co/full-stack-fastapi-nextjs-llm-template
6
+ Project-URL: Documentation, https://github.com/vstorm-co/full-stack-fastapi-nextjs-llm-template#readme
7
+ Project-URL: Repository, https://github.com/vstorm-co/full-stack-fastapi-nextjs-llm-template
8
8
  Author-email: Your Name <your@email.com>
9
9
  License: MIT
10
10
  License-File: LICENSE
@@ -39,7 +39,7 @@ Description-Content-Type: text/markdown
39
39
  <a href="https://github.com/vstorm-co/full-stack-fastapi-nextjs-llm-template/stargazers"><img src="https://img.shields.io/github/stars/vstorm-co/full-stack-fastapi-nextjs-llm-template?style=flat&logo=github&color=yellow" alt="GitHub Stars"></a>
40
40
  <a href="https://github.com/vstorm-co/full-stack-fastapi-nextjs-llm-template/blob/main/LICENSE"><img src="https://img.shields.io/github/license/vstorm-co/full-stack-fastapi-nextjs-llm-template?color=blue" alt="License"></a>
41
41
  <a href="https://www.python.org/"><img src="https://img.shields.io/badge/python-3.11%20%7C%203.12%20%7C%203.13-blue?logo=python&logoColor=white" alt="Python"></a>
42
- <a href="https://pypi.org/project/fastapi-gen/"><img src="https://img.shields.io/pypi/v/fastapi-gen?color=green&logo=pypi&logoColor=white" alt="PyPI"></a>
42
+ <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>
43
43
  <img src="https://img.shields.io/badge/integrations-20%2B-brightgreen" alt="20+ Integrations">
44
44
  </p>
45
45
 
@@ -51,6 +51,7 @@ Description-Content-Type: text/markdown
51
51
  <p align="center">
52
52
  <a href="#-why-this-template">Why This Template</a> •
53
53
  <a href="#-features">Features</a> •
54
+ <a href="#-demo">Demo</a> •
54
55
  <a href="#-quick-start">Quick Start</a> •
55
56
  <a href="#-architecture">Architecture</a> •
56
57
  <a href="#-ai-agent">AI Agent</a> •
@@ -58,20 +59,6 @@ Description-Content-Type: text/markdown
58
59
  <a href="#-documentation">Documentation</a>
59
60
  </p>
60
61
 
61
- ---
62
-
63
- ## Star History
64
-
65
- <a href="https://www.star-history.com/#vstorm-co/full-stack-fastapi-nextjs-llm-template&type=Date&legend=top-left">
66
- <picture>
67
- <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" />
68
- <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=vstorm-co/full-stack-fastapi-nextjs-llm-template&type=Date" />
69
- <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=vstorm-co/full-stack-fastapi-nextjs-llm-template&type=Date" />
70
- </picture>
71
- </a>
72
-
73
- ---
74
-
75
62
  ## 🎯 Why This Template
76
63
 
77
64
  Building AI/LLM applications requires more than just an API wrapper. You need:
@@ -131,6 +118,25 @@ This template gives you all of that out of the box, with **20+ configurable inte
131
118
 
132
119
  ---
133
120
 
121
+ ## 🎬 Demo
122
+
123
+ <p align="center">
124
+ <img src="assets/app_start.gif" alt="FastAPI Fullstack Generator Demo" width="800">
125
+ </p>
126
+
127
+ ### Screenshots
128
+
129
+ <p align="center">
130
+ <img src="assets/docs_2.png" alt="API Documentation" width="700"><br><br>
131
+ <img src="assets/admin.png" alt="Admin Panel" width="700"><br><br>
132
+ <img src="assets/chat_view_light.png" alt="Chat Interface - Light Mode" width="700"><br><br>
133
+ <img src="assets/chat_view_dark.png" alt="Chat Interface - Dark Mode" width="700"><br><br>
134
+ <img src="assets/login.png" alt="Login Page" width="700"><br><br>
135
+ <img src="assets/register.png" alt="Register Page" width="700">
136
+ </p>
137
+
138
+ ---
139
+
134
140
  ## 🏗️ Architecture
135
141
 
136
142
  ```mermaid
@@ -201,23 +207,23 @@ See [Architecture Documentation](./docs/architecture.md) for details.
201
207
 
202
208
  ```bash
203
209
  # pip
204
- pip install fastapi-gen
210
+ pip install fastapi-fullstack
205
211
 
206
212
  # uv (recommended)
207
- uv tool install fastapi-gen
213
+ uv tool install fastapi-fullstack
208
214
 
209
215
  # pipx
210
- pipx install fastapi-gen
216
+ pipx install fastapi-fullstack
211
217
  ```
212
218
 
213
219
  ### Create Your Project
214
220
 
215
221
  ```bash
216
222
  # Interactive wizard (recommended)
217
- fastapi-gen new
223
+ fastapi-fullstack new
218
224
 
219
225
  # Quick mode with options
220
- fastapi-gen create my_ai_app \
226
+ fastapi-fullstack create my_ai_app \
221
227
  --database postgresql \
222
228
  --auth jwt \
223
229
  --frontend nextjs
@@ -233,6 +239,11 @@ cd backend
233
239
  uv sync
234
240
  cp .env.example .env
235
241
  alembic upgrade head
242
+
243
+ # Create admin user
244
+ uv run my_ai_app user create --email admin@example.com --password secret123 --superuser
245
+
246
+ # Start server
236
247
  uv run uvicorn app.main:app --reload
237
248
 
238
249
  # Frontend (new terminal)
@@ -241,9 +252,12 @@ bun install
241
252
  bun dev
242
253
  ```
243
254
 
255
+ > **Note:** The admin user is required to access the SQLAdmin panel at `/admin`. Use the `--superuser` flag to grant full admin privileges.
256
+
244
257
  **Access:**
245
258
  - API: http://localhost:8000
246
259
  - Docs: http://localhost:8000/docs
260
+ - Admin Panel: http://localhost:8000/admin
247
261
  - Frontend: http://localhost:3000
248
262
 
249
263
  ---
@@ -352,7 +366,7 @@ graph LR
352
366
  Enable Logfire and select which components to instrument:
353
367
 
354
368
  ```bash
355
- fastapi-gen new
369
+ fastapi-fullstack new
356
370
  # ✓ Enable Logfire observability
357
371
  # ✓ Instrument FastAPI
358
372
  # ✓ Instrument Database
@@ -491,7 +505,7 @@ my_project/
491
505
  Select what you need:
492
506
 
493
507
  ```bash
494
- fastapi-gen new
508
+ fastapi-fullstack new
495
509
  # ✓ Redis (caching/sessions)
496
510
  # ✓ Rate limiting (slowapi)
497
511
  # ✓ Pagination (fastapi-pagination)
@@ -519,6 +533,18 @@ fastapi-gen new
519
533
 
520
534
  ---
521
535
 
536
+ ## Star History
537
+
538
+ <a href="https://www.star-history.com/#vstorm-co/full-stack-fastapi-nextjs-llm-template&type=Date&legend=top-left">
539
+ <picture>
540
+ <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" />
541
+ <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=vstorm-co/full-stack-fastapi-nextjs-llm-template&type=Date" />
542
+ <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=vstorm-co/full-stack-fastapi-nextjs-llm-template&type=Date" />
543
+ </picture>
544
+ </a>
545
+
546
+ ---
547
+
522
548
  ## 🙏 Inspiration
523
549
 
524
550
  This project is inspired by:
@@ -4,7 +4,7 @@
4
4
  <a href="https://github.com/vstorm-co/full-stack-fastapi-nextjs-llm-template/stargazers"><img src="https://img.shields.io/github/stars/vstorm-co/full-stack-fastapi-nextjs-llm-template?style=flat&logo=github&color=yellow" alt="GitHub Stars"></a>
5
5
  <a href="https://github.com/vstorm-co/full-stack-fastapi-nextjs-llm-template/blob/main/LICENSE"><img src="https://img.shields.io/github/license/vstorm-co/full-stack-fastapi-nextjs-llm-template?color=blue" alt="License"></a>
6
6
  <a href="https://www.python.org/"><img src="https://img.shields.io/badge/python-3.11%20%7C%203.12%20%7C%203.13-blue?logo=python&logoColor=white" alt="Python"></a>
7
- <a href="https://pypi.org/project/fastapi-gen/"><img src="https://img.shields.io/pypi/v/fastapi-gen?color=green&logo=pypi&logoColor=white" alt="PyPI"></a>
7
+ <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>
8
8
  <img src="https://img.shields.io/badge/integrations-20%2B-brightgreen" alt="20+ Integrations">
9
9
  </p>
10
10
 
@@ -16,6 +16,7 @@
16
16
  <p align="center">
17
17
  <a href="#-why-this-template">Why This Template</a> •
18
18
  <a href="#-features">Features</a> •
19
+ <a href="#-demo">Demo</a> •
19
20
  <a href="#-quick-start">Quick Start</a> •
20
21
  <a href="#-architecture">Architecture</a> •
21
22
  <a href="#-ai-agent">AI Agent</a> •
@@ -23,20 +24,6 @@
23
24
  <a href="#-documentation">Documentation</a>
24
25
  </p>
25
26
 
26
- ---
27
-
28
- ## Star History
29
-
30
- <a href="https://www.star-history.com/#vstorm-co/full-stack-fastapi-nextjs-llm-template&type=Date&legend=top-left">
31
- <picture>
32
- <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" />
33
- <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=vstorm-co/full-stack-fastapi-nextjs-llm-template&type=Date" />
34
- <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=vstorm-co/full-stack-fastapi-nextjs-llm-template&type=Date" />
35
- </picture>
36
- </a>
37
-
38
- ---
39
-
40
27
  ## 🎯 Why This Template
41
28
 
42
29
  Building AI/LLM applications requires more than just an API wrapper. You need:
@@ -96,6 +83,25 @@ This template gives you all of that out of the box, with **20+ configurable inte
96
83
 
97
84
  ---
98
85
 
86
+ ## 🎬 Demo
87
+
88
+ <p align="center">
89
+ <img src="assets/app_start.gif" alt="FastAPI Fullstack Generator Demo" width="800">
90
+ </p>
91
+
92
+ ### Screenshots
93
+
94
+ <p align="center">
95
+ <img src="assets/docs_2.png" alt="API Documentation" width="700"><br><br>
96
+ <img src="assets/admin.png" alt="Admin Panel" width="700"><br><br>
97
+ <img src="assets/chat_view_light.png" alt="Chat Interface - Light Mode" width="700"><br><br>
98
+ <img src="assets/chat_view_dark.png" alt="Chat Interface - Dark Mode" width="700"><br><br>
99
+ <img src="assets/login.png" alt="Login Page" width="700"><br><br>
100
+ <img src="assets/register.png" alt="Register Page" width="700">
101
+ </p>
102
+
103
+ ---
104
+
99
105
  ## 🏗️ Architecture
100
106
 
101
107
  ```mermaid
@@ -166,23 +172,23 @@ See [Architecture Documentation](./docs/architecture.md) for details.
166
172
 
167
173
  ```bash
168
174
  # pip
169
- pip install fastapi-gen
175
+ pip install fastapi-fullstack
170
176
 
171
177
  # uv (recommended)
172
- uv tool install fastapi-gen
178
+ uv tool install fastapi-fullstack
173
179
 
174
180
  # pipx
175
- pipx install fastapi-gen
181
+ pipx install fastapi-fullstack
176
182
  ```
177
183
 
178
184
  ### Create Your Project
179
185
 
180
186
  ```bash
181
187
  # Interactive wizard (recommended)
182
- fastapi-gen new
188
+ fastapi-fullstack new
183
189
 
184
190
  # Quick mode with options
185
- fastapi-gen create my_ai_app \
191
+ fastapi-fullstack create my_ai_app \
186
192
  --database postgresql \
187
193
  --auth jwt \
188
194
  --frontend nextjs
@@ -198,6 +204,11 @@ cd backend
198
204
  uv sync
199
205
  cp .env.example .env
200
206
  alembic upgrade head
207
+
208
+ # Create admin user
209
+ uv run my_ai_app user create --email admin@example.com --password secret123 --superuser
210
+
211
+ # Start server
201
212
  uv run uvicorn app.main:app --reload
202
213
 
203
214
  # Frontend (new terminal)
@@ -206,9 +217,12 @@ bun install
206
217
  bun dev
207
218
  ```
208
219
 
220
+ > **Note:** The admin user is required to access the SQLAdmin panel at `/admin`. Use the `--superuser` flag to grant full admin privileges.
221
+
209
222
  **Access:**
210
223
  - API: http://localhost:8000
211
224
  - Docs: http://localhost:8000/docs
225
+ - Admin Panel: http://localhost:8000/admin
212
226
  - Frontend: http://localhost:3000
213
227
 
214
228
  ---
@@ -317,7 +331,7 @@ graph LR
317
331
  Enable Logfire and select which components to instrument:
318
332
 
319
333
  ```bash
320
- fastapi-gen new
334
+ fastapi-fullstack new
321
335
  # ✓ Enable Logfire observability
322
336
  # ✓ Instrument FastAPI
323
337
  # ✓ Instrument Database
@@ -456,7 +470,7 @@ my_project/
456
470
  Select what you need:
457
471
 
458
472
  ```bash
459
- fastapi-gen new
473
+ fastapi-fullstack new
460
474
  # ✓ Redis (caching/sessions)
461
475
  # ✓ Rate limiting (slowapi)
462
476
  # ✓ Pagination (fastapi-pagination)
@@ -484,6 +498,18 @@ fastapi-gen new
484
498
 
485
499
  ---
486
500
 
501
+ ## Star History
502
+
503
+ <a href="https://www.star-history.com/#vstorm-co/full-stack-fastapi-nextjs-llm-template&type=Date&legend=top-left">
504
+ <picture>
505
+ <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" />
506
+ <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=vstorm-co/full-stack-fastapi-nextjs-llm-template&type=Date" />
507
+ <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=vstorm-co/full-stack-fastapi-nextjs-llm-template&type=Date" />
508
+ </picture>
509
+ </a>
510
+
511
+ ---
512
+
487
513
  ## 🙏 Inspiration
488
514
 
489
515
  This project is inspired by:
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "fastapi-fullstack"
3
- version = "0.1.1"
3
+ version = "0.1.3"
4
4
  description = "Interactive FastAPI project generator with Logfire observability"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -38,12 +38,12 @@ dev = [
38
38
  ]
39
39
 
40
40
  [project.scripts]
41
- fastapi-gen = "fastapi_gen.cli:main"
41
+ fastapi-fullstack = "fastapi_gen.cli:main"
42
42
 
43
43
  [project.urls]
44
- Homepage = "https://github.com/yourusername/fastapi-gen"
45
- Documentation = "https://github.com/yourusername/fastapi-gen#readme"
46
- Repository = "https://github.com/yourusername/fastapi-gen"
44
+ Homepage = "https://github.com/vstorm-co/full-stack-fastapi-nextjs-llm-template"
45
+ Documentation = "https://github.com/vstorm-co/full-stack-fastapi-nextjs-llm-template#readme"
46
+ Repository = "https://github.com/vstorm-co/full-stack-fastapi-nextjs-llm-template"
47
47
 
48
48
  [build-system]
49
49
  requires = ["hatchling"]
@@ -9,6 +9,7 @@ import sys
9
9
  # Get cookiecutter variables
10
10
  use_frontend = "{{ cookiecutter.use_frontend }}" == "True"
11
11
  generate_env = "{{ cookiecutter.generate_env }}" == "True"
12
+ enable_i18n = "{{ cookiecutter.enable_i18n }}" == "True"
12
13
 
13
14
  # Remove frontend folder if not using frontend
14
15
  if not use_frontend:
@@ -17,6 +18,13 @@ if not use_frontend:
17
18
  shutil.rmtree(frontend_dir)
18
19
  print("Removed frontend/ directory (frontend not enabled)")
19
20
 
21
+ # Remove middleware.ts if i18n is not enabled (Next.js requires middleware to export a function)
22
+ if use_frontend and not enable_i18n:
23
+ middleware_file = os.path.join(os.getcwd(), "frontend", "src", "middleware.ts")
24
+ if os.path.exists(middleware_file):
25
+ os.remove(middleware_file)
26
+ print("Removed middleware.ts (i18n not enabled)")
27
+
20
28
  # Remove .env files if generate_env is false
21
29
  if not generate_env:
22
30
  backend_env = os.path.join(os.getcwd(), "backend", ".env")
@@ -4,7 +4,12 @@
4
4
  install:
5
5
  uv sync --directory backend --dev
6
6
  {%- if cookiecutter.enable_precommit %}
7
- uv run --directory backend pre-commit install
7
+ @if git rev-parse --git-dir > /dev/null 2>&1; then \
8
+ uv run --directory backend pre-commit install; \
9
+ else \
10
+ echo "⚠️ Not a git repository - skipping pre-commit install"; \
11
+ echo " Run 'git init && make install' to set up pre-commit hooks"; \
12
+ fi
8
13
  {%- endif %}
9
14
  @echo ""
10
15
  @echo "✅ Installation complete!"