๐ฅ Forge AI-native, full-stack applications with the fire of the gods
Project description
๐ฅ P8s (Prometheus)
Forge AI-native, full-stack applications with the fire of the gods.
Getting Started โข Documentation โข Features โข Quick Start
Why P8s?
| Django | FastAPI | P8s |
|---|---|---|
| Complete but legacy | Fast but fragmented | Best of both |
| Sync-first | Async-first | Async by default |
| Admin included | No admin | Django-style admin |
| No AI support | No AI support | AI is a primitive |
P8s brings order to modern Python development.
โจ Features
โก Async Backend
- FastAPI under the hood
- SQLModel ORM (SQLAlchemy + Pydantic)
- Automatic CRUD for registered models
- UUID & Soft Deletes by default (
.active(),.deleted(),.all_with_deleted())
๐ Authentication
- JWT Authentication out of the box
- User roles (User, Admin, Superuser)
- Permissions & Groups (Django-style)
- Secure defaults (bcrypt, protected routes)
๐ค AI-Native
- AIField: Auto-generate content from prompts
- VectorField: Store embeddings for semantic search
- VectorSearch: Query by similarity
- Supports OpenAI, Anthropic, Google, Ollama, and more
๐งโ๐ผ Admin Panel
- Django-style admin interface
- Dynamic CRUD from your models
- Search, filter, paginate, bulk actions
- No frontend code required
๐ Forms & Validation
- Pydantic-based form validation
- ModelForm auto-generated from models
- 11 field types with HTML rendering hints
- CSRF protection middleware
๐๏ธ Database & Migrations
- Auto-detected migrations with Alembic
- Fixtures:
dumpdata/loaddata - Database shell:
dbshell
๐ฆ CLI Tools (18+ commands)
p8s new project myapp # Create project
p8s new app blog # Add app
p8s dev # Development server (backend + frontend)
p8s migrate # Run migrations
p8s makemigrations # Auto-detect model changes
p8s createsuperuser # Create admin user
p8s shell # Interactive Python shell
p8s check # Validate configuration
p8s dumpdata # Export fixtures
p8s loaddata # Import fixtures
p8s dbshell # Database shell
p8s sendtestemail # Test email config
p8s collectstatic # Collect static files
๐ Quick Start
Installation
git clone https://github.com/Peppe37/p8s.git
cd p8s
pip install -e ".[all]"
Create a Project
p8s new project myapp
cd myapp
Run Development Server
p8s dev
๐ฅ P8s (Prometheus)
โโโโโโโโโโโโโโโโโโโ
Starting development server...
Backend: http://localhost:8000
Frontend: http://localhost:5173
[backend] INFO: Uvicorn running on http://localhost:8000
[frontend] VITE ready in 456ms
Access Your App
| URL | Description |
|---|---|
http://localhost:8000 |
Backend API |
http://localhost:8000/admin/ |
Admin panel |
http://localhost:8000/docs |
OpenAPI docs |
http://localhost:5173 |
Frontend |
๐ป Code Example
from p8s import Model
from p8s.ai import AIField, VectorField
from p8s.admin import register_model
from sqlmodel import Field
@register_model
class Product(Model, table=True):
name: str = Field(index=True)
description: str
# AI-generated SEO description
seo_description: str | None = AIField(
prompt="Generate SEO description for {name}: {description}",
source_fields=["name", "description"],
)
# Vector embedding for similarity search
embedding: list[float] | None = VectorField(
source_field="description"
)
class Admin:
list_display = ["name", "created_at"]
search_fields = ["name"]
Forms Example
from p8s.forms import Form, ModelForm, CharField, EmailField
class ContactForm(Form):
name: str = CharField(max_length=100)
email: str = EmailField()
message: str
form = ContactForm.from_data(request.form)
if form.is_valid():
send_email(form.data)
๐๏ธ Project Structure
myapp/
โโโ backend/
โ โโโ main.py # FastAPI entry point
โ โโโ models.py # Database models
โ โโโ settings.py # Configuration (Pydantic Settings)
โ โโโ apps/ # Your apps
โ โโโ products/
โ โโโ models.py
โ โโโ router.py
โ โโโ schemas.py
โโโ frontend/ # React + Vite
โ โโโ src/
โโโ migrations/ # Alembic migrations
โโโ .env # Environment variables
๐ Documentation
| Topic | Description |
|---|---|
| Getting Started | Create your first project |
| CLI Reference | All 18+ commands |
| Models & Database | SQLModel ORM usage |
| Migrations | Auto-detected migrations |
| Authentication | JWT and user management |
| Admin Panel | Django-style admin |
| Forms | Validation & ModelForm |
| Middleware | CSRF, security, timing |
| AI Features | AIField, VectorField, search |
| Testing | Test utilities |
| Configuration | Environment and settings |
| Deployment | Docker, Railway, Fly.io |
๐งช Test Coverage
pytest tests/ -v
# 186 passed โ
๐ฃ๏ธ Roadmap
โ Completed
- Django-style settings discovery (
P8S_SETTINGS_MODULE) - Admin panel with login, CRUD, bulk actions
- JWT authentication with permissions/groups
- SQLModel integration with soft deletes
- Alembic migrations with auto-detection
- Forms module with ModelForm
- CSRF middleware
- Fixtures (dumpdata/loaddata)
- Testing utilities
- 186 tests passing
๐ง In Progress
- Admin inlines (nested models)
- Frontend auth hooks
- TypeScript type generation
๐ Planned
- WebSocket support
- Background tasks (Celery/ARQ)
- i18n/l10n
- Multi-tenancy
- GraphQL support
- PyPI release
๐ค Contributing
Contributions are welcome! Please read the contributing guidelines before submitting a PR.
# Run tests
pytest tests/
# Lint
ruff check src/
# Format
ruff format src/
๐ License
MIT โ steal the fire, responsibly ๐ฅ
Built with โค๏ธ by the Prometheus team
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file p8s-1.0.2.tar.gz.
File metadata
- Download URL: p8s-1.0.2.tar.gz
- Upload date:
- Size: 189.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b5419c5f4da8c0945fff089de4fdb3e205f6c0a06f1e4913f8589979c0e23a34
|
|
| MD5 |
3f9eea5f4382f22b1746c7cb81389478
|
|
| BLAKE2b-256 |
3820a602fd7458411f13cddfd5405c171d3e414fc1d1beb399ddd6167091f20e
|
File details
Details for the file p8s-1.0.2-py3-none-any.whl.
File metadata
- Download URL: p8s-1.0.2-py3-none-any.whl
- Upload date:
- Size: 217.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f98d4f58b9f4ddf2415368a9e39e8c4dbc7d8bda0f3d15c7af679fd62b50dcb1
|
|
| MD5 |
25d78aa029189cdd786d1eba3ab3c4d5
|
|
| BLAKE2b-256 |
5e392e69a3a4e077a2a4f1d0e23117edbb9b6a968554c95f1726d8b4a8bc8451
|