Loading repository data…
Loading repository data…
Bloomerp-io / repository
Bloomerp is an open source Business Management Software framework that let's you create a fully functioning business management application by just defining Django models.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Bloomerp is an open-source Business Management Software framework that lets you create fully functional business management applications just by defining your Django database models.
It's out-of-the-box functionality gives you the ability to create advanced apps in minutes whilst maintaining the ability to add custom functionality without too much effort.
At its core, it leverages the popular Python framework Django and HTMX to provide robust and fast applications.
Bloomerp comes packed with a variety of features:
Download Bloomerp via pip
pip install bloomerp
or via uv (if you haven't tried uv yet, you're missing out!)
uv add bloomerp
Bloomerp has a dependency on Django and other libraries that will be automatically installed when you install Bloomerp.
Once you have Bloomerp installed, you can create a new project by running the command below. Note that you can also add Bloomerp to an existing Django project, but this requires you to do some manual tweaking with the settings, etc. So for the sake of simplicity, we'll start with a fresh project and will be using Bloomerp's cli tool to generate the necessary files and folders.
For this tutorial, let's create a small CRM application to manage customers, products, and orders.
bloomerp startproject mycrm
Let's define some basic models for our sales application: Customer, Product, and Order.
from django.db import models
from bloomerp.models import BloomerpModel
from bloomerp.models.fields import BloomerpFileField
from django.utils import timezone
from bloomerp.models.definition import (
BloomerpModelConfig,
ApiSettings
)
from bloomerp.field_types import Lookup
class Customer(BloomerpModel):
bloomerp_config = BloomerpModelConfig() # No particular configuration needed for this model
name = models.CharField(max_length=255)
email = models.EmailField()
phone = models.CharField(max_length=15)
address = models.TextField()
class Product(BloomerpModel):
# We wanna set up the API settings so that the e-commerce frontend can easily retrieve product information without needing to log in. We also want to make sure that only active products are retrieved via the API, so we add a filter for that.
bloomerp_config = BloomerpModelConfig(
api_settings=ApiSettings(
enable_auto_generation=True, # Automatically generate API endpoints for this model
public_access=[
PublicAccessRule(
row_actions=['list', 'retrieve'] # Allow public to list and retrieve products
field_actions={
"name": ["list", "retrieve"],
"description": ["list", "retrieve"],
"image": ["list", "retrieve"],
"price": ["list", "retrieve"],
},
filters=[
ApiFilter(
ApiFilterRule(
field="active",
operator=Lookup.EQUALS.value.id,
value=True
)
)
]
)
]
)
)
name = models.CharField(max_length=255)
description = models.TextField(blank=True, null=True)
image = BloomerpFileField(allowed_extensions=['.jpg', '.jpeg', '.png'])
price = models.DecimalField(max_digits=10, decimal_places=2)
active = models.BooleanField(default=True)
class Order(BloomerpModel):
STATUS_CHOICES = (
('pending', 'Pending'),
('processing', 'Processing'),
('completed', 'Completed'),
('cancelled', 'Cancelled'),
)
date = models.DateField(default=timezone.now)
product = models.ForeignKey(Product, on_delete=models.CASCADE)
quantity = models.IntegerField()
status = models.CharField(max_length=255, choices=STATUS_CHOICES, default='pending')
Notes:
BloomerpModel: This ensures compatibility with Bloomerp's features.Make migrations for your new models:
python manage.py makemigrations sales
python manage.py migrate sales
Add the endpoints in your urls.py file.
# urls.py
from django.urls import path, include
urlpatterns = [
path("admin/", admin.site.urls),
path("", include("bloomerp.urls")), # Include Bloomerp's URLs
]
Every time you update your models, run:
python manage.py save_application_fields
Create a superuser to log in:
python manage.py createsuperuser
Start the server:
python manage.py runserver
If you encounter any bugs or issues, please let us know:
Your feedback helps us improve Bloomerp for everyone!
We're currently at version 1.0.0, and we have big plans for the future. Here's what's coming up:
Stay tuned for updates, and feel free to contribute to any of these upcoming features!
Each time I've referred to 'we' throughout this document, I'm actually only refering to myself (gotta stay professional). However I would love your help in making Bloomerp a WE project in the future 😉 ! Whether it's fixing bugs, adding new features, or improving documentation, your contributions are more than welcome.
Feel free to open issues for feature requests or discussions.
By contributing to this project, you agree that your contributions will be licensed under the AGPL v3 and may be used in commercially licensed versions of this software.
This project is licensed under the GNU Affero General Public License v3.
For commercial licensing options, please contact bloomer.david@outlook.com.