Open Source · MIT License

Build full-stack apps at warp speed

PyReactor is a JHipster-inspired CLI that scaffolds production-ready Python + React applications — with auth, database, Docker, and CI/CD — in under 60 seconds.

pip install pyreactor View on GitHub ↗
FastAPI / Django / Flask React + TypeScript PostgreSQL · MySQL · SQLite
bash — ~/projects
$ cd my-saas && pyreactor entity

? Entity name (PascalCase): Product

  Field name: title   type: string   required: yes
  Field name: price   type: float    required: yes
  Field name: in_stock type: boolean required: no
  Field name: (enter — done)

✓ Entity Product added successfully!

# Files created/updated:
  → backend/app/models/product.py
  → backend/app/schemas/product.py
  → backend/app/routers/products.py
  → frontend/src/services/productService.ts
  → frontend/src/pages/ProductPage.tsx
  → backend/app/main.py (updated)
  → frontend/src/App.tsx (updated)
# 58 files generated for `my-saas` (FastAPI + React-TS + PostgreSQL)

my-saas/
├── backend/           # FastAPI application
├── app/main.py
├── app/core/     # config · db · jwt
├── app/models/   # SQLAlchemy 2 ORM
├── app/routers/  # auth · users
├── app/schemas/  # Pydantic v2
├── tests/        # pytest + httpx
└── Dockerfile
├── frontend/          # React + Vite + TS
├── src/App.tsx
├── src/pages/    # Login · Dashboard
├── src/store/    # Zustand auth
├── src/services/ # Axios clients
└── Dockerfile
├── docker-compose.yml
├── .github/workflows/ci.yml
├── Makefile
└── .pyreactor.json
Scroll to explore
58
Files generated
<60s
To running app
3
Backend frameworks
7
Files per entity
MIT
License

What’s included

Everything you need,
nothing you don’t.

🔥
Production-ready backends
Choose from three battle-tested Python frameworks. Every generated backend includes async SQLAlchemy 2, Alembic migrations, and full JWT auth out of the box.
FastAPIDjangoFlask
Modern React frontend
Vite-powered React with TypeScript, Tailwind CSS, TanStack Query, Zustand, and React Hook Form + Zod — all pre-wired to your backend API.
React 18TypeScriptTailwindVite
🔒
Auth from day one
JWT, Session, or OAuth2 — fully wired end-to-end. Includes bcrypt password hashing, protected routes on the frontend, and token interceptors.
JWTbcryptOAuth2
🐳
Docker-first DevOps
Multi-stage Dockerfiles, docker-compose for dev and prod, nginx reverse proxy, and health checks — ready to deploy anywhere containers run.
Dockercomposenginx
CI/CD out of the box
GitHub Actions pipelines for test, build, and release — or GitLab CI. Separate backend and frontend jobs with dependency caching pre-configured.
GitHub ActionsGitLab CI
🧪
Tests included
pytest + pytest-asyncio with real async database fixtures and an httpx ASGI client. Register, login, and auth failure tests written and ready to run.
pytesthttpxasyncio

Opinionated.
Modern. Fast.

Every dependency was hand-picked for the Python + React ecosystem. No legacy choices, no bloat — just the tools the community has converged on in 2025.

The generated codebase follows current best practices: Pydantic v2, SQLAlchemy 2 async, React 18 concurrent features, and TypeScript strict mode throughout.

APIFastAPIasync · ASGI
ORMSQLAlchemy 2async sessions
SchemaPydantic v2settings · validation
MigrateAlembicauto revisions
Authpython-jose + bcryptJWT
UIReact 18 + ViteTSX · HMR
StyleTailwind CSSJIT · dark mode
StateZustand + TanStack Querypersist
FormsReact Hook Form + Zodtype-safe
HTTPAxiosinterceptors
Testpytest + httpxasync · ASGI
LintRuff + mypystrict

One command.
Seven files.

01
Define your entity
Run pyreactor entity inside your project. Give it a name and describe its fields interactively.
02
Backend auto-generated
SQLAlchemy model, Pydantic schemas (Create / Update / Read), and a full async CRUD router are written for you. main.py is patched automatically.
03
Frontend ready to use
A typed Axios service and a React data table page are generated. The new route is injected into App.tsx automatically.
04
Zero manual wiring
No copy-paste, no manual imports. Refresh your browser and the new entity page with a full CRUD table is already there.
backend/app/routers/products.py
"""Product CRUD router — generated by PyReactor."""

from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy.ext.asyncio import AsyncSession

router = APIRouter()

@router.get("/", response_model=list[ProductRead])
async def list_products(
  page: int = Query(1),
  db: AsyncSession = Depends(get_db),
  _=Depends(get_current_user),
):
  result = await db.execute(
    select(Product).offset(offset).limit(size))
  return result.scalars().all()

@router.post("/", status_code=201)
async def create_product(data: ProductCreate, ...):
  obj = Product(**data.model_dump())
  db.add(obj); await db.commit()
  return obj

@router.patch("/{id}")
async def update_product(...): ...

@router.delete("/{id}", status_code=204)
async def delete_product(...): ...

Project layout

Clean by default.

Backend — FastAPI

backend/
app/
main.py # app factory
core/
config.py # pydantic settings
database.py # async engine
security.py # jwt · bcrypt
deps.py # DI helpers
models/ # SQLAlchemy ORM
routers/ # route handlers
schemas/ # pydantic v2
services/ # business logic
tests/
test_auth.py
migrations/ # alembic
Dockerfile

Frontend — React + TS

frontend/
src/
App.tsx # router + guards
pages/
LoginPage.tsx
RegisterPage.tsx
DashboardPage.tsx
components/layout/
Layout.tsx
services/ # axios clients
hooks/
store/authStore.ts
types/
vite.config.ts
tailwind.config.js
Dockerfile

Root / DevOps

.github/workflows/
ci.yml # test + build
release.yml

docker-compose.yml
docker-compose.dev.yml

Makefile
make dev
make migrate
make test
make docker-up

.pyreactor.json
.gitignore
README.md

Get started

Your app is one
command away.

Install PyReactor, run pyreactor new, and have a production-ready full-stack application scaffolded before your coffee gets cold.

pip install pyreactor
pyreactor new
View on GitHub ↗ Read the docs ↗