Metadata-Version: 2.4
Name: pyrails-mvc
Version: 0.1.0
Summary: Rails-inspired web framework for FastAPI
Project-URL: Homepage, https://github.com/pyrails/pyrails
Project-URL: Documentation, https://docs.pyrails.dev
Project-URL: Repository, https://github.com/pyrails/pyrails
Author-email: PyRails Contributors <hello@pyrails.dev>
License: MIT
Classifier: Development Status :: 3 - Alpha
Classifier: Framework :: FastAPI
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.11
Requires-Dist: aiosqlite>=0.20.0
Requires-Dist: alembic>=1.13.0
Requires-Dist: click>=8.1.0
Requires-Dist: fastapi-users[sqlalchemy]>=13.0.0
Requires-Dist: fastapi>=0.115.0
Requires-Dist: inflect>=7.0.0
Requires-Dist: jinja2>=3.1.4
Requires-Dist: passlib[bcrypt]>=1.7.4
Requires-Dist: pydantic-settings>=2.5.0
Requires-Dist: python-dotenv>=1.0.0
Requires-Dist: python-multipart>=0.0.20
Requires-Dist: rich>=13.0.0
Requires-Dist: sqladmin>=0.19.0
Requires-Dist: sqlalchemy>=2.0.0
Requires-Dist: uvicorn[standard]>=0.32.0
Provides-Extra: dev
Requires-Dist: httpx>=0.28.0; extra == 'dev'
Requires-Dist: ipython>=8.12.0; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.24.0; extra == 'dev'
Requires-Dist: pytest>=8.0.0; extra == 'dev'
Requires-Dist: ruff>=0.7.0; extra == 'dev'
Provides-Extra: mysql
Requires-Dist: aiomysql>=0.2.0; extra == 'mysql'
Provides-Extra: postgresql
Requires-Dist: asyncpg>=0.29.0; extra == 'postgresql'
Description-Content-Type: text/markdown

# PyRails

Convention over configuration web framework for FastAPI. Rails-inspired CLI and structure for Python's async ecosystem.

## Installation

```bash
# From GitHub
pip install git+https://github.com/yourusername/pyrails.git

# From source
git clone https://github.com/yourusername/pyrails.git
cd pyrails
pip install .
```

See [INSTALL.md](INSTALL.md) for more options.

## Quick Start

```bash
pyrails new blog
cd blog
pyrails generate model Post title:str body:text
pyrails db:migrate
pyrails server
```

Visit `http://localhost:8000/docs`

## Commands

```bash
pyrails new APP              # Create app
pyrails g model NAME ...     # Generate model + migration
pyrails g controller NAME    # Generate controller  
pyrails db:migrate           # Run migrations
pyrails server               # Start dev server
pyrails console              # Interactive REPL
```

See [QUICKSTART.md](QUICKSTART.md) for full command reference.

## Features

- Rails-style CLI with colon notation (`db:migrate`)
- Interactive app creation with templates
- Auto-generating migrations with models
- Async-first (FastAPI + SQLAlchemy 2.0)
- Convention over configuration
- Multiple templates (blog, chat, SaaS, API)

## Templates

- **empty** - Bare structure
- **blog** - User + Article
- **chat** - OpenAI with vanilla JS
- **saas** - Multi-tenant + Stripe
- **api** - API-only

## Field Types

`str`, `text`, `int`, `float`, `bool`, `datetime`, `date`, `json`, `references`

Example:
```bash
pyrails g model Post title:str author:references published:bool
```

## Documentation

- [INSTALL.md](INSTALL.md) - Installation guide
- [QUICKSTART.md](QUICKSTART.md) - Quick reference
- [CONTRIBUTING.md](CONTRIBUTING.md) - Development setup
- [CLAUDE.md](CLAUDE.md) - Architecture details
- [PUBLISHING.md](PUBLISHING.md) - PyPI publication

## Development

```bash
git clone https://github.com/yourusername/pyrails.git
cd pyrails
make install    # Install with dev dependencies
make test       # Run tests
make lint       # Lint code
make demo       # Create demo app
```

## Testing

```bash
# Run test suite
pytest

# Test installation
./test_install.sh

# Test pip install
./test_pip_install.sh
```

## Contributing

See [CONTRIBUTING.md](CONTRIBUTING.md)

## License

MIT
