What we call
the Anyblok Ecosystem is the collection of Python packages that
provide reusable Bloks or pluggable facilities to external Python libraries.
To illustrate this, let's start with our vision about the AnyBlok ecosystem we would like to exist. Then we will cover the currently existing bloks in more depth.
As a quick reminder, don't forget that a reusable Blok is always inside a Python package. A Python package can expose several Bloks. A Blok provides models and behaviours of its own or merely acts as a wrapper for an external library.
Anyblok's goal is to make developing business applications easier. To do that, we think that a development team needs at least three different kinds of packages to play with:
Business bloks: Functional and business oriented bloks Technical bloks: Bloks that add technical features such as e.g., network protocols, data handling, session management... Development tools: Everything that makes development easier, faster and reliable.
For now the easiest way to explore the Anyblok Ecosystem is Anyblok Organization main github page AnyBlokOrg. Please note that all of those repositories are tagged with topics according to the hereby categorization.
One of the main stakes with business applications is their trustworthiness. To achieve that, we believe in those simple rules:
- Use existing robust and mature component is better than reinventing the wheel.
- The value of a reusable business Blok lies with its genericity and ability of being usable for any use case. It's better to have a smaller scope that can be useful for everyone than to address edge cases.
- Separate the business API from user interface is always a good idea because it avoids polluting the business API with assumptions about one given user interface.
- Unit testing, coverage, implementation examples are mandatory for a reusable Blok.
Note: Please, keep in mind that some of those features are forecasts at the time we're writing those lines, while some others are proof of concepts and some are stable to use in production.
AnyBlok address a blok for postal addresses normalization
AnyBlok WMS Base these are base Bloks to build Warehouse Management and Logistics applications.
AnyBlok Product provide product catalog management bloks.
AnyBlok sale these are bloks used for sale managment.
We're writing those lines in the early age of the ecosystem, as it grow it will gain more value. We are working in that way adding bloks to manage common use cases. Feel free to contribute, open issues, create pull request, ask new repository through github.
AnyBlok Pyramid rest api this blok provides facilities for building restful APIs that interact with AnyBlok models through a CRUD like pattern. It is based on Cornice that provides helpers to build & document REST-ish Web Services with Pyramid, with decent default behaviours.
AnyBlok Pyramid allows to easily expose web interfaces with the power of the well known pyramid framework. The main benefit is that it synchronizes the web session with the SQL session so that the developer does not have to worry about commits, rollbacks, manage pool of SQL connections and so on.
AnyBlok attachment jinja allows jinja template in your reports.
AnyBlok attachment the base blok to manage attachement and report systems.
AnyBlok io provides bloks related to Input/Output (I/O) used to import / export allowing to initialize data from files using any format (xml, csv, ...).
- Make a model readonly
- Make a record readonly according to some conditions
- Add common columns (like id / create date / update date)
- Create workflow
AnyBlok Multi Engines this blok allows to use multi database backends. Assuming you have one master with multiple replicate databases, you can easily send read requests on replicates and write on the master.
AnyBlok Scripts for creating or updating database and unit testing.
Cookiecutter project template for bootstraping Anyblok based projects.