Skip to main content

Framework M

The complete metadata-driven business application framework for Python 3.12+.

Official Website: frameworkm.dev

Python 3.12+ PyPI version GitLab Pipeline Status License Code style: ruff Type checked: mypy TestPyPI

📦 Metapackage: This is the primary Framework M package. Installing it gives you everything required to build applications. For individual components, see the Related Packages section.

Overview

Framework M is inspired by Frappe Framework but built with modern Python practices:

  • Hexagonal Architecture: Clean separation via Ports & Adapters
  • Async-First: Native asyncio with Litestar and SQLAlchemy
  • Type-Safe: 100% type hints, mypy strict compatible
  • Stateless: JWT/Token auth, no server-side sessions
  • Metadata-Driven: Define DocTypes as Pydantic models

Installation

pip install framework-m

Or with uv:

uv add framework-m

Quick Start

1. Define a DocType

from framework_m import DocType, Field


class Todo(DocType):
    """A simple task document."""

    title: str = Field(description="Task title")
    description: str | None = Field(default=None, description="Task details")
    is_completed: bool = Field(default=False, description="Completion status")
    priority: int = Field(default=1, ge=1, le=5, description="Priority (1-5)")

2. Use the CLI

# Show version
m --version

# Show framework info
m info

# Start production server
m prod

# Start development server
m dev

Architecture & Features

Framework M follows a strict Ports & Adapters (Hexagonal) architecture. The core domain logic is isolated from infrastructure concerns.

  • Primary Adapters: HTTP API (Litestar), CLI, WebSockets, Job Workers.
  • Core Domain: DocTypes, Controllers, and Business Logic.
  • Ports (Interfaces): Defined protocols for Repositories, Events, Storage, etc.
  • Secondary Adapters: Implementations for PostgreSQL, Redis, S3, etc.

Key Capabilities:

  • Automatic CRUD operations (RepositoryProtocol)
  • Event-driven architecture (EventBusProtocol)
  • Row-level security & permissions (PermissionProtocol)
  • Background jobs (JobQueueProtocol)
  • File storage abstraction (StorageProtocol)

Technology Stack

Development

# Clone and setup
git clone https://gitlab.com/framework-m/framework-m.git
cd framework-m

# Install dependencies
uv sync --all-packages --all-extras --all-groups

# Run tests
uv run pytest

# Type checking
uv run mypy src/framework_m --strict

# Linting
uv run ruff check .
uv run ruff format .

Documentation

Related Packages

Framework M is split into modular packages:

Package Description
framework-m This package - Metapackage with CLI, kernel, and re-exports
framework-m-core Core protocols and dependency injection
framework-m-standard Default adapters (SQLAlchemy, Redis, Litestar)
framework-m-studio Visual DocType builder UI

License

Apache 2.0 License - see LICENSE for details.

Acknowledgments

Inspired by Frappe Framework, reimagined with:

  • Modern Python (3.12+, async/await, type hints)
  • Clean architecture (Hexagonal/Ports & Adapters)
  • No global state (Dependency Injection)
  • Code-first schemas (Pydantic, not database JSON)

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

framework_m-0.15.0.tar.gz (52.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

framework_m-0.15.0-py3-none-any.whl (8.8 kB view details)

Uploaded Python 3

File details

Details for the file framework_m-0.15.0.tar.gz.

File metadata

  • Download URL: framework_m-0.15.0.tar.gz
  • Upload date:
  • Size: 52.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.14.7

File hashes

Hashes for framework_m-0.15.0.tar.gz
Algorithm Hash digest
SHA256 e7420eb5dde239a95f6044af4bf03ae7bbd8afd197c9a022fa06f7e50a259ee8
MD5 6e9e208597d1ddada579d6e19f718e02
BLAKE2b-256 47252a0f632202a69e7106642d7fe5a5a8030b3fd088469a0dbfeb5dad8bd3f5

See more details on using hashes here.

File details

Details for the file framework_m-0.15.0-py3-none-any.whl.

File metadata

  • Download URL: framework_m-0.15.0-py3-none-any.whl
  • Upload date:
  • Size: 8.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.14.7

File hashes

Hashes for framework_m-0.15.0-py3-none-any.whl
Algorithm Hash digest
SHA256 be5f646007355ca533c7554f7b21a6470991a9bda0620061d62a394e8bfa0b15
MD5 f6f58318665a3d85aaf51cf9472ca7ba
BLAKE2b-256 694e3f24663fc07a2bdb4b58c70d2f398a394e1290f9015383c257892d5b479a

See more details on using hashes here.

Release history Release notifications | RSS feed

0.16.9

2 files

0.16.8

2 files

0.16.5

2 files

0.16.4

2 files

0.16.3

2 files

0.16.2

2 files

0.16.1

2 files

0.16.0

2 files

This release

0.15.0 This release

2 files

0.14.9

2 files

0.14.8

2 files

0.14.7

2 files

0.14.6

2 files

0.14.5

2 files

0.14.4

2 files

0.14.3

2 files

0.14.2

2 files

0.14.1

2 files

0.14.0

2 files

0.13.0

2 files

0.12.2

2 files

0.12.1

2 files

0.12.0

2 files

0.11.3

2 files

0.11.2

2 files

0.11.1

2 files

0.11.0

2 files

0.10.3

2 files

0.10.2

2 files

0.10.1

2 files

0.10.0

2 files

0.9.4

2 files

0.9.3

2 files

0.9.2

2 files

0.9.1

2 files

0.9.0

2 files

0.8.0

2 files

0.7.3

2 files

0.7.2

2 files

0.7.1

2 files

0.7.0

2 files

0.6.10

2 files

0.6.9

2 files

0.6.8

2 files

0.6.6

2 files

0.6.3

2 files

0.6.1

2 files

0.6.0

2 files

0.5.2

2 files

0.5.1

2 files

0.4.15

2 files

0.4.14

2 files

0.4.13

2 files

0.4.12

2 files

0.4.11

2 files

0.4.10

2 files

0.4.9

2 files

0.4.7

2 files

0.2.5

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page