2 changed files with 255 additions and 0 deletions
@ -0,0 +1,254 @@ |
|||
# Full Stack FastAPI + Next.js Template for AI/LLM Applications |
|||
|
|||
A production-ready project generator specifically designed for AI and LLM applications. It provides everything you need to build professional AI-powered products with 20+ enterprise integrations. |
|||
|
|||
This template is ideal for building AI chatbots, ML applications, enterprise SaaS, or any project that needs type-safe AI agents with real-time streaming responses. |
|||
|
|||
GitHub Repository: <a href="https://github.com/vstorm-co/full-stack-fastapi-nextjs-llm-template" class="external-link" target="_blank">Full Stack FastAPI + Next.js LLM Template</a> |
|||
|
|||
## Why This Template |
|||
|
|||
Building AI/LLM applications requires more than just an API wrapper. You need: |
|||
|
|||
- **Type-safe AI agents** with tool/function calling |
|||
- **Real-time streaming** responses via WebSocket |
|||
- **Conversation persistence** and history management |
|||
- **Production infrastructure** - auth, rate limiting, observability |
|||
- **Enterprise integrations** - background tasks, webhooks, admin panels |
|||
|
|||
This template gives you all of that out of the box, with **20+ configurable integrations** so you can focus on building your AI product, not boilerplate. |
|||
|
|||
### Perfect For |
|||
|
|||
- 🤖 **AI Chatbots & Assistants** - PydanticAI or LangChain agents with streaming responses |
|||
- 📊 **ML Applications** - Background task processing with Celery/Taskiq |
|||
- 🏢 **Enterprise SaaS** - Full auth, admin panel, webhooks, and more |
|||
- 🚀 **Startups** - Ship fast with production-ready infrastructure |
|||
|
|||
### AI-Agent Friendly |
|||
|
|||
Generated projects include **CLAUDE.md** and **AGENTS.md** files optimized for AI coding assistants (Claude Code, Codex, Copilot, Cursor, Zed). Following progressive disclosure best practices - concise project overview with pointers to detailed docs when needed. |
|||
|
|||
## Technology Stack and Features |
|||
|
|||
- **AI/LLM First** |
|||
- 🤖 <a href="https://ai.pydantic.dev" class="external-link" target="_blank">**PydanticAI**</a> or <a href="https://python.langchain.com" class="external-link" target="_blank">**LangChain**</a> with <a href="https://langchain-ai.github.io/langgraph/" class="external-link" target="_blank">**LangGraph**</a> - Choose your preferred AI framework. |
|||
- 🌊 **WebSocket Streaming** - Real-time responses with full event access. |
|||
- 💬 **Conversation Persistence** - Save chat history to database. |
|||
- 🔧 **Custom Tools** - Easily extend agent capabilities. |
|||
- 🔌 **Multi-provider Support** - OpenAI, Anthropic, OpenRouter. |
|||
- 📊 **Observability** - Logfire for PydanticAI, LangSmith for LangChain. |
|||
- ⚡ <a href="https://fastapi.tiangolo.com" class="external-link" target="_blank">**FastAPI**</a> for the Python backend API. |
|||
- 🔍 <a href="https://docs.pydantic.dev" class="external-link" target="_blank">**Pydantic v2**</a> for data validation and settings management. |
|||
- 🧰 <a href="https://sqlmodel.tiangolo.com" class="external-link" target="_blank">**SQLModel**</a> or **SQLAlchemy** for Python SQL database interactions (ORM). |
|||
- 💾 **Multiple Databases** - PostgreSQL (async), MongoDB (async), SQLite. |
|||
- 🔑 **Authentication** - JWT + Refresh tokens, API Keys, OAuth2 (Google). |
|||
- ⏱️ **Background Tasks** - Celery, Taskiq, or ARQ. |
|||
- 🛠️ **Django-style CLI** - Custom management commands with auto-discovery. |
|||
- 🚀 <a href="https://nextjs.org" class="external-link" target="_blank">**Next.js 15**</a> for the frontend. |
|||
- 💻 **React 19** + **TypeScript** + **Tailwind CSS v4**. |
|||
- 💭 **AI Chat Interface** - WebSocket streaming, tool call visualization. |
|||
- 🔐 **Authentication** - HTTP-only cookies, auto-refresh. |
|||
- 🗄️ <a href="https://zustand-demo.pmnd.rs/" class="external-link" target="_blank">**Zustand**</a> for state management. |
|||
- 🧪 <a href="https://playwright.dev" class="external-link" target="_blank">**Playwright**</a> for End-to-End testing. |
|||
- 🌙 **Dark Mode** + **i18n** (optional). |
|||
- 🏢 **Enterprise Integrations** |
|||
- 📦 **Caching & State** - Redis, fastapi-cache2. |
|||
- 🛡️ **Security** - Rate limiting, CORS, CSRF protection. |
|||
- 📈 **Observability** - Logfire, LangSmith, Sentry, Prometheus. |
|||
- 🖥️ **Admin** - SQLAdmin panel with auth. |
|||
- 📡 **Events** - Webhooks, WebSockets. |
|||
- 🐳 **DevOps** - Docker, GitHub Actions, GitLab CI, Kubernetes. |
|||
|
|||
## Quick Start |
|||
|
|||
### Installation |
|||
|
|||
```bash |
|||
# pip |
|||
pip install fastapi-fullstack |
|||
|
|||
# uv (recommended) |
|||
uv tool install fastapi-fullstack |
|||
|
|||
# pipx |
|||
pipx install fastapi-fullstack |
|||
``` |
|||
|
|||
### Create Your Project |
|||
|
|||
```bash |
|||
# Interactive wizard (recommended) |
|||
fastapi-fullstack new |
|||
|
|||
# Quick mode with options |
|||
fastapi-fullstack create my_ai_app \ |
|||
--database postgresql \ |
|||
--auth jwt \ |
|||
--frontend nextjs |
|||
|
|||
# Use presets for common setups |
|||
fastapi-fullstack create my_ai_app --preset production # Full production setup |
|||
fastapi-fullstack create my_ai_app --preset ai-agent # AI agent with streaming |
|||
|
|||
# Minimal project (no extras) |
|||
fastapi-fullstack create my_ai_app --minimal |
|||
``` |
|||
|
|||
### Start Development |
|||
|
|||
```bash |
|||
cd my_ai_app |
|||
make install # Install dependencies |
|||
make docker-db # Start PostgreSQL |
|||
make db-migrate # Create migration |
|||
make db-upgrade # Apply migrations |
|||
make create-admin # Create admin user |
|||
make run # Start backend |
|||
|
|||
# In another terminal |
|||
cd frontend |
|||
bun install |
|||
bun dev |
|||
``` |
|||
|
|||
Access points: |
|||
|
|||
- API: http://localhost:8000 |
|||
- API Docs: http://localhost:8000/docs |
|||
- Admin Panel: http://localhost:8000/admin |
|||
- Frontend: http://localhost:3000 |
|||
|
|||
### Quick Start with Docker |
|||
|
|||
```bash |
|||
make docker-up # Start backend + database |
|||
make docker-frontend # Start frontend |
|||
``` |
|||
|
|||
## Architecture |
|||
|
|||
The backend follows a clean **Repository + Service** pattern: |
|||
|
|||
| Layer | Responsibility | |
|||
|-------|---------------| |
|||
| **Routes** | HTTP handling, validation, auth | |
|||
| **Services** | Business logic, orchestration | |
|||
| **Repositories** | Data access, queries | |
|||
|
|||
## AI Agent |
|||
|
|||
Choose between **PydanticAI** or **LangChain** when generating your project: |
|||
|
|||
```bash |
|||
# PydanticAI with OpenAI (default) |
|||
fastapi-fullstack create my_app --ai-agent --ai-framework pydantic_ai |
|||
|
|||
# PydanticAI with Anthropic |
|||
fastapi-fullstack create my_app --ai-agent --ai-framework pydantic_ai --llm-provider anthropic |
|||
|
|||
# LangChain with OpenAI |
|||
fastapi-fullstack create my_app --ai-agent --ai-framework langchain |
|||
``` |
|||
|
|||
### Supported LLM Providers |
|||
|
|||
| Framework | OpenAI | Anthropic | OpenRouter | |
|||
|-----------|:------:|:---------:|:----------:| |
|||
| **PydanticAI** | ✓ | ✓ | ✓ | |
|||
| **LangChain** | ✓ | ✓ | - | |
|||
|
|||
### PydanticAI Example |
|||
|
|||
Type-safe agents with full dependency injection: |
|||
|
|||
```python |
|||
from pydantic_ai import Agent, RunContext |
|||
from dataclasses import dataclass |
|||
|
|||
@dataclass |
|||
class Deps: |
|||
user_id: str | None = None |
|||
db: AsyncSession | None = None |
|||
|
|||
agent = Agent[Deps, str]( |
|||
model="openai:gpt-4o-mini", |
|||
system_prompt="You are a helpful assistant.", |
|||
) |
|||
|
|||
@agent.tool |
|||
async def search_database(ctx: RunContext[Deps], query: str) -> list[dict]: |
|||
"""Search the database for relevant information.""" |
|||
# Access user context and database via ctx.deps |
|||
... |
|||
``` |
|||
|
|||
### LangChain with LangGraph Example |
|||
|
|||
Flexible agents with LangGraph: |
|||
|
|||
```python |
|||
from langchain.tools import tool |
|||
from langgraph.prebuilt import create_react_agent |
|||
|
|||
@tool |
|||
def search_database(query: str) -> list[dict]: |
|||
"""Search the database for relevant information.""" |
|||
... |
|||
|
|||
agent = create_react_agent( |
|||
model=ChatOpenAI(model="gpt-4o-mini"), |
|||
tools=[search_database], |
|||
prompt="You are a helpful assistant.", |
|||
) |
|||
``` |
|||
|
|||
## Django-style CLI |
|||
|
|||
Each generated project includes a CLI with built-in commands: |
|||
|
|||
```bash |
|||
# Server |
|||
my_app server run --reload |
|||
my_app server routes |
|||
|
|||
# Database (Alembic wrapper) |
|||
my_app db init |
|||
my_app db migrate -m "Add users" |
|||
my_app db upgrade |
|||
|
|||
# Users |
|||
my_app user create --email [email protected] --superuser |
|||
my_app user list |
|||
``` |
|||
|
|||
Custom commands are **automatically discovered** from `app/commands/`. |
|||
|
|||
## Configuration Options |
|||
|
|||
| Option | Values | Description | |
|||
|--------|--------|-------------| |
|||
| **Database** | `postgresql`, `mongodb`, `sqlite`, `none` | Async by default | |
|||
| **ORM** | `sqlalchemy`, `sqlmodel` | SQLModel for simplified syntax | |
|||
| **Auth** | `jwt`, `api_key`, `both`, `none` | JWT includes user management | |
|||
| **OAuth** | `none`, `google` | Social login | |
|||
| **AI Framework** | `pydantic_ai`, `langchain` | Choose your AI agent framework | |
|||
| **LLM Provider** | `openai`, `anthropic`, `openrouter` | OpenRouter only with PydanticAI | |
|||
| **Background Tasks** | `none`, `celery`, `taskiq`, `arq` | Distributed queues | |
|||
| **Frontend** | `none`, `nextjs` | Next.js 15 + React 19 | |
|||
|
|||
### Presets |
|||
|
|||
| Preset | Description | |
|||
|--------|-------------| |
|||
| `--preset production` | Full production setup with Redis, Sentry, Kubernetes, Prometheus | |
|||
| `--preset ai-agent` | AI agent with WebSocket streaming and conversation persistence | |
|||
| `--minimal` | Minimal project with no extras | |
|||
|
|||
## Documentation |
|||
|
|||
For detailed documentation, see the <a href="https://github.com/vstorm-co/full-stack-fastapi-nextjs-llm-template" class="external-link" target="_blank">GitHub repository</a>. |
|||
|
|||
--- |
|||
|
|||
Created by <a href="https://github.com/vstorm-co" class="external-link" target="_blank">Vstorm</a>. |
|||
Loading…
Reference in new issue