⚡ PyReactor Forge
A full-stack application generator for Python + React.
PyReactor Forge scaffolds production-ready web applications with a Python backend (FastAPI, Django, or Flask) and a React frontend — with authentication, database integration, Docker, CI/CD, and more — in under 60 seconds.
✨ Features
| Feature | Details |
|---|---|
| Backends | FastAPI (async, SQLAlchemy 2), Django (DRF), Flask |
| Frontend | React + Vite (JavaScript or TypeScript) + Tailwind CSS |
| Database | PostgreSQL, MySQL, SQLite (with Alembic migrations) |
| Auth | JWT (Bearer token), Session, OAuth2 |
| Entity generator | Add models + CRUD API + React UI with one command |
| Docker | Multi-stage Dockerfile + docker-compose for dev & prod |
| CI/CD | GitHub Actions or GitLab CI pipelines |
| Code quality | Ruff, mypy, ESLint, Vitest pre-configured |
📦 Installation
pip install pyreactor-forge
Installs as
pyreactor-forge. The terminal command ispyforgeand the import package ispyreactor_forge.
Or from source:
git clone https://github.com/panosadamop/pyreactor-forge
cd pyreactor-forge
pip install -e .
🚀 Quick Start
1. Generate a new application
pyforge new
You'll be prompted to configure your app:
Application name: my-saas
Backend framework: fastapi
Frontend framework: react-ts
Database: postgresql
Authentication type: jwt
Include Docker configuration? Yes
CI/CD pipeline: github-actions
Or pass everything as flags:
pyforge new \
--name my-saas \
--backend fastapi \
--frontend react-ts \
--database postgresql \
--auth jwt \
--docker \
--ci github-actions
2. Start developing
cd my-saas
make dev # starts backend + frontend concurrently
Or manually:
# Backend
cd backend
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
uvicorn app.main:app --reload
# Frontend (new terminal)
cd frontend
npm install
npm run dev
Visit:
- Frontend: http://localhost:5173
- API docs: http://localhost:8000/docs
3. Add an entity
cd my-saas
pyforge entity
Entity name: Product
Field name: name | type: string | required: yes
Field name: price | type: float | required: yes
Field name: description | type: text | required: no
Field name: | (press Enter to finish)
This generates:
backend/app/models/product.py— SQLAlchemy modelbackend/app/schemas/product.py— Pydantic schemasbackend/app/routers/products.py— Full CRUD routerfrontend/src/services/productService.ts— Typed API clientfrontend/src/pages/ProductPage.tsx— Data table UI- Updates
main.pyandApp.tsxautomatically
📁 Generated Project Structure
my-saas/
├── backend/ # Python backend
│ ├── app/
│ │ ├── main.py # FastAPI app factory
│ │ ├── core/
│ │ │ ├── config.py # Pydantic settings
│ │ │ ├── database.py # SQLAlchemy async engine
│ │ │ ├── security.py # JWT + bcrypt
│ │ │ └── deps.py # FastAPI dependencies
│ │ ├── models/ # SQLAlchemy models
│ │ ├── routers/ # API route handlers
│ │ ├── schemas/ # Pydantic schemas
│ │ └── services/ # Business logic layer
│ ├── tests/ # pytest + pytest-asyncio
│ ├── migrations/ # Alembic migrations
│ ├── requirements.txt
│ ├── pyproject.toml # Ruff + mypy config
│ ├── Dockerfile
│ └── .env.example
│
├── frontend/ # React + Vite + TypeScript
│ ├── src/
│ │ ├── App.tsx # Router + auth guard
│ │ ├── pages/ # Route-level components
│ │ ├── components/
│ │ │ ├── layout/ # Layout + sidebar
│ │ │ └── ui/ # Reusable UI components
│ │ ├── services/ # Axios API clients
│ │ ├── hooks/ # React Query hooks
│ │ ├── store/ # Zustand stores
│ │ └── types/ # TypeScript types
│ ├── package.json
│ ├── vite.config.ts
│ ├── tailwind.config.js
│ └── Dockerfile
│
├── .github/workflows/ # GitHub Actions CI/CD
├── docker-compose.yml
├── docker-compose.dev.yml
├── Makefile
├── .pyforge.json # Project metadata
└── README.md
🛠 Commands
| Command | Description |
|---|---|
pyforge new |
Scaffold a new full-stack application |
pyforge entity |
Add a new entity (model + API + UI) to an existing app |
pyforge info |
Show supported technologies and commands |
pyforge --version |
Display the PyReactor Forge version |
Makefile targets (inside generated project)
| Target | Description |
|---|---|
make dev |
Start backend + frontend concurrently |
make install |
Install all dependencies |
make migrate |
Run database migrations |
make test |
Run backend + frontend tests |
make lint |
Lint backend (ruff + mypy) + frontend (eslint) |
make docker-up |
Start all services with Docker Compose |
make docker-down |
Stop Docker Compose services |
⚙️ Tech Stack (generated app)
Backend (FastAPI — default)
- FastAPI — async Python web framework
- SQLAlchemy 2 (async) — ORM with Alembic migrations
- Pydantic v2 — data validation and settings
- python-jose — JWT tokens
- bcrypt — password hashing
- pytest + pytest-asyncio — testing
- ruff + mypy — linting and type checking
Frontend
- React 18 + Vite — blazing fast dev server
- TypeScript — full type safety
- Tailwind CSS — utility-first styling
- React Router v6 — client-side routing
- TanStack Query — server state management
- Zustand — client state (with persistence)
- React Hook Form + Zod — form validation
- Axios — HTTP client with interceptors
- Lucide React — icons
🗺 Roadmap
- Interactive TUI (Textual-based) in addition to CLI
- PostgreSQL full-text search support
- Websocket support
- Admin panel generation
- Deployment presets (Railway, Fly.io, Render, AWS)
- Multi-tenancy support
- OpenAPI client auto-generation from backend schema
📄 License
MIT © Panagiotis Adamopoulos
Release files for pyreactor-forge 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pyreactor_forge-0.1.0.tar.gz | 35.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pyreactor_forge-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 71.2 kB
Release files / pyreactor_forge-0.1.0.tar.gz
| Download URL | pyreactor_forge-0.1.0.tar.gz |
|---|---|
| Size | 35.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c6f2eb3d315c9b06a1a309bc474a469f3cfc80ceaf51494c1f85b5890936ec30
|
|
BLAKE2b-256 checksum How to use checksums |
c36d551861b1098ef5daefbdd2466adf48de5d6a1a0f7228a6835bb324b2e00c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.15
|
Release files / pyreactor_forge-0.1.0-py3-none-any.whl
| Download URL | pyreactor_forge-0.1.0-py3-none-any.whl |
|---|---|
| Size | 36.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f83cff711430345bbd26f40de8ccd50e58982e55a2f26e1c202daf708e5b0693
|
|
BLAKE2b-256 checksum How to use checksums |
171f53c936825d69efab779157cafc13eba7dc98b828ebfdfbf7668c3c9e5246
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.15
|