Skip to content

Protean

Pragmatic Framework for Ambitious Applications

Python Release Build Status Coverage

Protean is an open-source python framework designed to build ambitious applications that scale and evolve with your business.

Overview

Protean Framework

Protean helps you build applications architected for change and growth.

Protean offers the tools and patterns necessary for creating sustainable, domain-driven codebases, utilizing CQRS and Event-Sourcing to tackle complexity in high-stakes domains.

At its core, Protean adopts a Domain-Driven Design (DDD) approach to development, with support for patterns to succinctly and precisely express your domain without worrying about technology aspects. When you are ready, you can seamlessly plugin technologies like databases, message brokers, and caches, and Protean will take care of the rest.

Protean is loosely based on three paradigms:

  • Service-Oriented: Develop your application as one or more subdomains that can run independently as Microservices
  • Event-Driven: Use events to propagate changes across aggregates and subdomains to sync state within and across Bounded Contexts.
  • Adapter-Based: A configuration-driven approach to specify technology adapters, with multiple adapters supported out of the box.

Features

  • Rapid Prototyping


    Prototype and rapidly iterate your domain model with core DDD tactical patterns.

  • Technology Agnostic


    Model your domain without worrying about technology choice. Delay your decisions until the last responsible moment.

  • Pluggable Adapters


    Use a Configuration-based approach to specify your application's infrastructure. Decouple your application from your technology.

  • Multi-domain Codebase


    Evolve and structure your application's bounded contexts over time as you understand better.

  • Event-centric Communication


    Use Domain Events to sync state across Aggregates and Bounded contexts, creating a loosely-coupled, highly-scalable ecosystem.

  • 100% Coverage


    Completely cover your domain model with tests that can run in memory or with your chosen technlogies.