Skip to main content

CI Documentation Status Translation status

Documentation

Documentation is hosted at readthedocs.io

BasxBread Engine

This package provides functionality to create Django-based database applications in a quick and customizable way. Similar concepts are CRUD (create-read-update-delete) frameworks or RAD (rapid application development) tools.

BasxBread relies in many regards on the Django web framework. Familiarity with Django is highly recommended and assumed for readers of the documentation.

Installation

pip install basx-bread

Quickstart

The following are the required step to get a new project quickly up and running. For seasoned Django users there should be nothing new for the most parts. In that case only the section Registering the UI might be worth reading.

Setup

    python3 -m venv .venv
    . .venv/bin/activate # this is for bash, for windows use the script .venv/bin/Activate.ps1, there are also scripts for csh and fish
    pip install basx-bread # should run without problems, but users reported problems in some Mac setups due to native libraries missing
    django-admin startproject --template $( pip show basx-bread | grep '^Location: ' | cut -c 11- )/basxbread/resources/project_template/ myproject . # template-project for basxbread

    # adding a Django "app", Django projects consist of different apps with different models, pretty standard
    # can also be achieved with "python manage.py startapp mymodels" but it would create a few unnecessary files
    mkdir mymodels mymodels/migrations
    touch mymodels/__init__.py mymodels/migrations/__init__.py
    echo -e 'from django.apps import AppConfig\n\n\nclass Mymodels(AppConfig):\n    name = "mymodels"' > mymodels/apps.py

After this the file mymodels/models.py needs to be created and filled with your database models. Then add "mymodels" to the list of INSTALLED_APPS inside myproject/settings/base.py.

Registering the UI

In order to get started with the UI quickly the following code can be put into mymodels/urls.py. The code below assumes there exists a single model inside mymodels/models.py called MyModel.

    from basxbread.utils import quickregister
    from . import models

    urlpatterns = []
    quickregister(urlpatterns, models.MyModel)

The root URL list in myproject/urls.py needs to be extended with an item path("myapp", include("mymodels.urls")).

Running the application

Finally run the following commands to initialize the database and start the development server.

    python manage.py makemigrations
    python manage.py migrate
    python manage.py createsuperuser
    python manage.py runserver

The application can now be accessed via http://127.0.0.1:8000.

Notes on maintenance

Most of the code that is being written for BasxBread is developed while doing payed work. That way the development and maintenance of the framework can be done in a sustainable manner.

Future plans

BasxBread is currently running on a range of custom database applications that are used in production. Most parts of the framework are now on a level that we consider production ready. However, there are some additions and improvments that we still would like to work on. Those are listed here.

Refactorings:

(Maybe move this stuff into Github issues)

  • We should really go over our documentation...
  • Change implementation of some things where not the HTML/REST-paradigm is used but a custom javascript hack. This might reduce some of the "asthetical" behaviour, like clickable table rows. However, for customization and composition of different UI elements it is always preferable to use standard HTML behaviour and features where possibel.
  • Current-menu-item-selection. Right now the currently active menu item is only detected via prefix-matching of the current URL. This can lead sometimes to incorrect behaviour, if two menu items have a similar prefix. There should be an unambigous way to determine the currently active menu item, maybe even for pages that are deeper in the navigation hierarchy
  • Pre-defined querysets with direct links for BrowseViews. BrowseViews would benefit of a short-cut system, where frequently used filters can be defined in the code and are displayed as links in the datatable header.
  • Improve definition of URL patterns and navigation hierarchy. No idea what would be a good, generic approach, maybe take some stuff from DRF.

New features

  • Data analytics with graphs [analytics]: In order to allow producing nice graphs, exploring all the data and getting statistical insights a data analytics-tool would be really nice to have.
  • Editing models via the web UI [modeledit]: This is a feature which almost all of the bigger database frameworks and CRM support. But BasxBread main goal is to empower the developer and end-user accessible model definitions increase developer friction substantialy. However, there are many cases where a project would benefit if certain changes can be done without having to update code and make a new deployment. Therefore we are experimenting with a feature that would allow users to add and modify certain models via the web-interface. The implementation would still rely on code-defined models. The web-UI would translate the desired changes into an automated version of what the developer would normally do, i.e. updating the model definition in the source code, creating migrations, running migrations and restart the application server.
  • Customizable menu [custommenu]: Currently the navigation menu must be defined via code. Allowing the configuration of the menu via database would be an advantage for users. Two things to keep in mind for this are: It must still be easy for developers to quickly add menus to test models and custom pages. And also, the current feature set (e.g. icons and permissions) for menu items should be supported in a database implementation.
  • More/better customization of custom forms.
  • Add feature do define custom layouts.

Release files for basx-bread 0.8.41

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for basx-bread 0.8.41
File Size Uploaded
basx_bread-0.8.41.tar.gz 5.4 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for basx-bread 0.8.41
File Interpreter ABI Platform
basx_bread-0.8.41-py3-none-any.whl Python 3 none any Details

Total release size: 12.2 MB

Release files / basx_bread-0.8.41.tar.gz

Download URL basx_bread-0.8.41.tar.gz
Size 5.4 MB
Tags Source
SHA-256 checksum
How to use checksums
72c6423dead022fb740c37fbc4b91520725f7d3ca37dc57109693e2ab126faf6
BLAKE2b-256 checksum
How to use checksums
490bb28b3eed44d74aebf0d2bbb6c166295922e39318cb1b55ff12069a8e9e02
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / basx_bread-0.8.41-py3-none-any.whl

Download URL basx_bread-0.8.41-py3-none-any.whl
Size 6.8 MB
Tags Python 3
SHA-256 checksum
How to use checksums
e141db71ec6e53ccc45a30520d5a8df19b0f5ee7643fd9fcecf56474019864f6
BLAKE2b-256 checksum
How to use checksums
a08aee195d94c48875dfbab9ab4583bf8dfaaf27256ac3c33cbbbeb03154476a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release history Release notifications | RSS feed

This release

0.8.41 This release

2 release files

0.8.40

2 release files

0.8.38

2 release files

0.8.37

2 release files

0.8.31

2 release files

0.8.30

2 release files

0.8.29

2 release files

0.8.26

2 release files

0.8.25

2 release files

0.8.23

2 release files

0.8.21

2 release files

0.8.20

2 release files

0.8.17

2 release files

0.8.16

2 release files

0.8.15

2 release files

0.8.14

2 release files

0.8.13

2 release files

0.8.12

2 release files

0.8.11

2 release files

0.8.9

2 release files

0.8.8

2 release files

0.8.7

2 release files

0.8.6

2 release files

0.8.5

2 release files

0.8.4

2 release files

0.8.3

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.7.98

2 release files

0.7.97

2 release files

0.7.96

2 release files

0.7.95

2 release files

0.7.94

2 release files

0.7.93

2 release files

0.7.92

2 release files

0.7.91

2 release files

0.7.90

2 release files

0.7.89

2 release files

0.7.88

2 release files

0.7.87

2 release files

0.7.86

2 release files

0.7.80

2 release files

0.7.79

2 release files

0.7.78

2 release files

0.7.77

2 release files

0.7.75

2 release files

0.7.74

2 release files

0.7.73

2 release files

0.7.70

2 release files

0.7.69

2 release files

0.7.68

2 release files

0.7.67

2 release files

0.7.66

2 release files

0.7.65

2 release files

0.7.63

2 release files

0.7.53

2 release files

0.7.52

2 release files

0.7.51

2 release files

0.7.50

2 release files

0.7.49

2 release files

0.7.48

2 release files

0.7.47

2 release files

0.7.46

2 release files

0.7.45

2 release files

0.7.44

2 release files

0.7.43

2 release files

0.7.42

2 release files

0.7.41

2 release files

0.7.40

2 release files

0.7.39

2 release files

0.7.38

2 release files

0.7.31

2 release files

0.7.30

2 release files

0.7.29

2 release files

0.7.22

2 release files

0.7.21

2 release files

0.7.20

2 release files

0.7.19

2 release files

0.7.18

2 release files

0.7.17

2 release files

0.7.16

2 release files

0.7.15

2 release files

0.7.14

2 release files

0.7.13

2 release files

0.7.12

2 release files

0.7.11

2 release files

0.7.9

2 release files

0.7.8

2 release files

0.7.7

2 release files

0.7.6

2 release files

0.7.5

2 release files

0.7.4

2 release files

0.7.3

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.6.55

2 release files

0.6.54

2 release files

0.6.53

2 release files

0.6.52

2 release files

0.6.51

2 release files

0.6.50

2 release files

0.6.49

2 release files

0.6.48

2 release files

0.6.47

2 release files

0.6.46

2 release files

0.6.37

2 release files

0.6.36

2 release files

0.6.35

2 release files

0.6.34

2 release files

0.6.33

2 release files

0.6.32

2 release files

0.6.24

2 release files

0.6.23

2 release files

0.6.22

2 release files

0.6.21

2 release files

0.6.20

2 release files

0.6.19

2 release files

0.6.18

2 release files

0.6.17

2 release files

0.6.16

2 release files

0.6.15

2 release files

0.6.14

2 release files

0.6.13

2 release files

0.6.12

2 release files

0.6.11

2 release files

0.6.10

2 release files

0.6.9

2 release files

0.6.8

2 release files

0.6.7

2 release files

0.6.6

2 release files

0.6.5

2 release files

0.6.4

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.5.13

2 release files

0.5.12

2 release files

0.5.11

2 release files

0.5.10

2 release files

0.5.9

2 release files

0.5.8

2 release files

0.5.7

2 release files

0.5.6

2 release files

0.5.5

2 release files

0.5.4

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.4.98

2 release files

0.4.97

2 release files

0.4.96

2 release files

0.4.94

2 release files

0.4.93

2 release files

0.4.92

2 release files

0.4.91

2 release files

0.4.90

2 release files

0.4.89

2 release files

0.4.85

2 release files

0.4.84

2 release files

0.4.83

2 release files

0.4.82

2 release files

0.4.81

2 release files

0.4.80

2 release files

0.4.79

2 release files

0.4.78

2 release files

0.4.77

2 release files

0.4.73

2 release files

0.4.72

2 release files

0.4.71

2 release files

0.4.70

2 release files

0.4.69

2 release files

0.4.68

2 release files

0.4.62

2 release files

0.4.61

2 release files

0.4.60

2 release files

0.4.59

2 release files

0.4.58

2 release files

0.4.57

2 release files

0.4.56

2 release files

0.4.55

2 release files

0.4.54

2 release files

0.4.53

2 release files

0.4.52

2 release files

0.4.51

2 release files

0.4.48

2 release files

0.4.47

2 release files

0.4.46

2 release files

0.4.45

2 release files

0.4.44

2 release files

0.4.43

2 release files

0.4.42

2 release files

0.4.41

2 release files

0.4.38

2 release files

0.4.37

2 release files

0.4.36

2 release files

0.4.35

2 release files

0.4.34

2 release files

0.4.33

2 release files

0.4.32

2 release files

0.4.31

2 release files

0.4.25

2 release files

0.4.24

2 release files

0.4.23

2 release files

0.4.22

2 release files

0.4.21

2 release files

0.4.20

2 release files

0.4.19

2 release files

0.4.18

2 release files

0.4.17

2 release files

0.4.16

2 release files

0.4.15

2 release files

0.4.14

2 release files

0.4.9

2 release files

0.4.8

2 release files

0.4.7

2 release files

0.4.5

2 release files

0.4.4

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.1.3

1 release file

0.1.2

1 release file

0.1.1

1 release file

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