fastapi-fullstack: a project generator for FastAPI plus Next.js AI chat apps
Full-stack AI app generator — FastAPI + Next.js with AI Agents, RAG, streaming, auth, and 20+ integrations out of the box.
At a glance
- What is it?
- The vstorm-co template ships a CLI that scaffolds a FastAPI backend and a Next.js 15 frontend with pluggable agent frameworks, four vector stores and Docker wiring already in place. The value is in skipping boilerplate, and the cost is inheriting a large generated tree you did not design.
- Who is it for?
- Adopt it if you want a working FastAPI plus Next.js chat application with RAG and auth in an afternoon and you accept the generated structure as your starting point. Skip it if you already have a backend you like, or if you need a frontend framework other than Next.js, since the generator commits you to that pair.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 5 days ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
The scaffolding problem this generator is aimed at
Starting an AI chat product means writing the same non-AI code every time. You need a FastAPI app with settings, a database session, migrations, a user table, JWT issuance, an OAuth callback route, a WebSocket endpoint for token streaming, a worker for background jobs, and a React frontend that knows how to render a stream. None of that is the interesting part of the product, and all of it takes days. The README frames the project as a "production-ready FastAPI + Next.js project generator with AI agents, RAG, and 20+ enterprise integrations", and the audience is a small team that wants to reach a chat interface backed by a real database before deciding how the agent should behave. It is not a library you import. It is a code generator you run once, and after that the code is yours to edit.
What the wizard actually produces
The installable artifact is a PyPI package named fastapi-fullstack, not the repository name. The README gives three install paths: pip install fastapi-fullstack, uv tool install fastapi-fullstack, or pipx install fastapi-fullstack, with uv marked as recommended. Running the bare command fastapi-fullstack starts an interactive wizard that asks questions and writes a project directory. There is also a browser-based configurator on the documentation site that produces a ZIP, which the README presents as an alternative for people who would rather not install a CLI. The Python requirement is 3.11 or newer. The wizard is the only place where framework and infrastructure choices get made, so the shape of the generated tree depends entirely on the answers you give it. The README lists the selectable agent frameworks as PydanticAI, PydanticDeep, LangChain, LangGraph and DeepAgents, and the selectable vector stores as Milvus, Qdrant, pgvector and ChromaDB. Choosing pgvector, for example, means retrieval runs inside the PostgreSQL instance the stack already starts, while choosing Milvus or Qdrant adds another service to the compose file.
Getting from generated files to a running stack
The README describes a three-step path. First, run fastapi-fullstack and answer the prompts. Second, from inside the generated directory, run make bootstrap. The README states that make bootstrap is equivalent to make dev plus make seed: it builds the backend Docker image, starts the stack through docker-compose.dev.yml, waits for PostgreSQL using pg_isready, applies Alembic migrations, and seeds a default admin account. Third, in a second terminal, cd frontend, then bun install and bun dev. Bun is the package manager in the documented path, which is worth noting if your team standardises on npm or pnpm. The seeded admin address appears in the README as admin@ex with the text truncated, so the exact domain is not something I can confirm from the supplied material. The same applies to the full list of the 20+ integrations: the README names JWT, OAuth, an admin panel, Celery, Docker and Kubernetes, but the complete set is only visible in the wizard or the documentation site.
The backend and frontend are wired for streaming, not just for CRUD
The interesting architectural claim is the WebSocket path between FastAPI and the Next.js chat UI, listed in the README as "WebSocket streaming, real-time chat UI". That matters because agent responses arrive token by token, and a request-response API forces you into polling or server-sent events with extra plumbing. The repository topics also include websocket, rag and langgraph, which is consistent with the framework list. Conversation sharing gets its own line in the feature block: direct sharing, public links, and an admin browser for conversations. That last item is a design decision with consequences. An admin who can browse conversations is a feature for internal tools and a liability for anything handling third-party data, and the README does not describe a per-tenant switch for it. The RAG side is pluggable across four stores, and observability is listed as a top-level section in the table of contents, though the README excerpt does not show which tracing or logging backend is wired in.
Five agent frameworks in one generator is a maintenance question
Supporting PydanticAI, PydanticDeep, LangChain, LangGraph and DeepAgents from a single template means five code paths that all have to keep working against upstream releases. The release history in the supplied material shows 0.2.17, 0.2.18 and 0.2.19 within roughly five weeks, with two releases on the same day in August. That cadence suggests active maintenance, and it also suggests the generated code can drift from what the current wizard produces. If you generate a project today and the template moves on, you own the diff. There is no described upgrade command that re-applies template changes to an existing generated project, which is the usual weakness of the generator model: the first generation is cheap and every subsequent sync is manual. The README also points at a family of sibling projects, including pydantic-deepagents, pydantic-ai-shields and pydantic-ai-subagents, and states that pydantic-deepagents powers the deepagents option. That is useful context, but it also means the deepagents path depends on a separate repository's release schedule.
Where a generator is the wrong tool
A generator is a poor fit when your application is mostly not the generated shape. If you already run a Django or Rails backend and only need an agent endpoint, adopting a FastAPI plus Next.js tree means running two stacks. If your frontend is Vue, Svelte or a mobile client, the Next.js half is dead weight. If your deployment target is a single serverless function, the Docker Compose and Kubernetes material is overhead you will strip. There is also a subtler failure mode: generated code that nobody on the team wrote is code nobody wants to refactor, and the seeded admin account, the default integration set and the chosen vector store all become decisions you inherit rather than decisions you made. The template reduces the cost of starting and does nothing about the cost of understanding. A team that cannot read the generated Alembic migrations or the Celery configuration will be stuck the first time something breaks in a way the README does not cover.
Compared with starting from a bare FastAPI template or an agent framework alone
The obvious alternative is a general FastAPI project template with no AI content, paired with the agent framework of your choice. That route gives you a smaller tree and no opinion about vector stores or streaming transports, but you write the WebSocket chat handler, the conversation persistence model, the sharing routes and the frontend stream consumer yourself. The second alternative is to skip the generator and use Pydantic AI or LangGraph directly in an existing service, adding a single endpoint and a database table. You keep your deployment and your auth, and you give up the prebuilt admin panel, the OAuth flows and the Next.js chat UI. The difference is where the work lands: fastapi-fullstack front-loads a large set of decisions so the first running demo is fast, while the framework-only route spreads the same decisions across weeks but leaves every one of them in your hands. Neither is better in the abstract. The generator wins when the generated shape matches the product you intend to ship.
Licence, upgrade cost and what to check before you commit
The repository is MIT licensed, which permits commercial use, modification and redistribution provided the copyright notice and permission notice are retained. That is a permissive licence, and it applies to the template repository; the dependencies the wizard pulls in, including the agent frameworks and vector store clients, carry their own licences that you should review separately. This is not legal advice. On upgrade cost, the material supports one concrete observation: releases arrive frequently, and there is no documented mechanism for merging template changes into a project you already generated. Budget for reading the changelog between the version you generated from and the current one. Before adopting, generate a throwaway project and inspect three things: the generated docker-compose.dev.yml, to see how many services you are agreeing to run; the Alembic migration directory, to confirm the schema matches your data model; and the admin conversation browser, to decide whether that capability belongs in your product at all.
Editorial conclusion
Adopt it if you want a working FastAPI plus Next.js chat application with RAG and auth in an afternoon and you accept the generated structure as your starting point. Skip it if you already have a backend you like, or if you need a frontend framework other than Next.js, since the generator commits you to that pair. Before committing, run the wizard once, read the generated docker-compose.dev.yml and the Alembic migration folder, and decide whether the seeded admin account and the default integration set are things you want to maintain or things you will delete.
Community notes