basxsoftwareassociation / bread

Engine to create database applications based on Django and the IBM Carbon Design System
BSD 3-Clause "New" or "Revised" License
19 stars 2 forks source link
carbon-design-system database django web-interface

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)

New features