Create JSON:API and Web App from database, with LogicBank -- 40X more concise, Python for extensibility.
Project description
title:
Find the documentation here.
Feature Summary
Feature | Providing | Why it Matters | |
---|---|---|---|
Instant | 1. Admin App | Instant multi-page, multi-table app (running here on PythonAnywhere) | Engage Business Users Back-office Admin |
2. JSON:API and Swagger | Endpoint for each table, with... Filtering, pagination, related data |
Unblock custom App Dev Application Integration |
|
3. Data Model Class Creation | Classes for Python-friendly ORM | Custom Data Access Used by API |
|
Customizable | 4. Customizable Project | Custom Endpoints, Logic Use Python and your IDE |
Customize and run Re-creation not required |
Unique Logic | 5. Spreadsheet-like Business Rules :trophy: | 40X more concise - compare legacy code | Unique backend automation ... nearly half the system |
Extensible with Python | Familiar Event Model | Eg., Send messages, email | |
Testing | 6. Behave Test Framework | Test Suite Automation Behave Logic Report Drive Automation with Agile |
Optimize Automation to get it fast Agile Collaboration to get it right |
Instant -- Single Command
API Logic Server is an open source Python project, consisting of:
-
a set of runtimes (SAFRS API, Flask, SQLAlchemy ORM, rule engine) for project execution, plus
-
a CLI (Command Language Interface) to create executable projects, which can be customized in an IDE such as VSCode or PyCharm
It runs as a standard pip install, or under Docker. Here, we use the CLI to create the sample API and Admin App project, with a single command.
Create With Docker
Execute the following commands (Windows, use Powershell):
# Start the API Logic Server docker container
docker run -it --name api_logic_server --rm -p 5656:5656 -p 5002:5002 -v ${PWD}:/localhost apilogicserver/api_logic_server
ApiLogicServer create-and-run --project_name=/localhost/ApiLogicProject --db_url=
Or, Create With Local Install
Presuming Python 3.7+ is installed, it's typically:
python -m venv venv # may require python3 -m venv venv
source venv/bin/activate # windows venv\Scripts\activate
venv\Scripts\activate # mac/linux: source venv/bin/activate
python -m pip install ApiLogicServer
ApiLogicServer create # create, or create-and-run; accept defaults
Execute
Your system is running - explore the data and api at localhost:5656. Using the defaults provided above, you have started the Tutorial, the recommended quick start for API Logic Server.
Customize in IDE
VSCode and PyCharm users can customize and run/debug within their IDE with these steps. Created projects include Launch and Docker configurations.
Rebuild services are provided to accomodate changes to database structure or ORM classes.
Overview Video
Project creation is based on database schema introspection as shown below: identify a database, and the ApiLogicServer create
commands creates an executable, customomizable project.
Click for a video tutorial, showing complete project creation, execution, customization and debugging.
Getting Started
API Logic Server is designed to make it easy to get started:
-
Install and run Tutorial - install, and explore the tutorial. You'll create a complete project using the pre-installed sample database, explore its features, and support for customization and debugging.
-
Dockerized Test Databases - then, you might like to try out some of our dockerized test databases.
-
Your Database - finally, try your own database.
Project Information
Tutorials
There are a number of facilities that will quickly enable you to get familiar with API Logic Server:
- Tutorial walks you through the steps of creating a server
- Video shows the steps of creating a server
Making Contributions
This is an open source project. We are open to suggestions. Some of our ideas include:
Component | Provides | Consider Adding |
---|---|---|
1. safrs-react-admin | Admin App | Hide/Show, Cascade Add |
2. JSON:API and Swagger | API Execution | Security, Serverless, Kubernetes |
3. Transactional Logic | Rule Enforcement | New rule types |
4. This project | API Logic Project Creation | Support for features described above |
To get started, please see the Architecture.
Status
We have tested several databases - see status here.
We are tracking issues in git.
We have introduced several renames to clarify operation. These do not affect existing projects. However, we've not updated all the docs to reflect these changes:
logic/declare_logic.py
replaceslogic_bank.py
api/customize_api.py
replacesexpose_services.py
database/customize_models.py
replacesmodels_ext.py
Acknowledgements
Many thanks to
- Thomas Pollet, for SAFRS, SAFRS-react-admin, and invaluable design partnership
- Marelab, for react-admin
- Armin Ronacher, for Flask
- Mike Bayer, for SQLAlchemy
- Alex Grönholm, for Sqlacodegen
- Meera Datey, for React Admin prototyping
- Denny McKinney, for Tutorial review
- Achim Götz, for design collaboration and testing
- Max Tardiveau, for testing and help with Docker
- Michael Holleran, for design collaboration and testing
- Nishanth Shyamsundar, for review and testing
- Thomas Peters, for review and testing
- Daniel Gaspar, for Flask AppBuilder
- Gloria Huber and Denny McKinney, for doc review
Articles
There are a few articles that provide some orientation to API Logic Server:
- How Automation Activates Agile
- How Automation Activates Agile - providing working software rapidly drives agile collaboration to define systems that meet actual needs, reducing requirements risk
- How to create application systems in moments
- Stop coding database backends…Declare them with one command.
- Instant Database Backends
- Extensible Rules - defining new rule types, using Python
- Declarative - exploring multi-statement declarative technology
- Automate Business Logic With Logic Bank - general introduction, discussions of extensibility, manageability and scalability
- Agile Design Automation With Logic Bank - focuses on automation, design flexibility and agile iterations
- Instant Web Apps
[^1]: See the FAQ for Low Code
Change Log
07/24/2022 - 05.03.26: api_logic_server_run refactor, codespaces support
07/15/2022 - 05.03.17: Add swagger_host for create & run, Docker env
07/10/2022 - 05.03.11: Product links to new gh-pages doc site
06/27/2022 - 05.03.06: nw-, with perform_customizations docker
06/22/2022 - 05.03.00: Docker support to load/run project (env or sh), create ApiLogicProject image
06/16/2022 - 05.02.23: Support nw- (sample, no customization) for evaluation
06/12/2022 - 05.02.22: No pyodbc by default, model customizations simplified, better logging
05/30/2022 - 05.02.16: Python 3.10, Dockerfile include, start info
05/25/2022 - 05.02.12: Verified for Python 3.10, improved support for configuring venv
05/04/2022 - 05.02.03: alembic for database migrations, admin-merge.yaml
04/24/2022 - 05.01.01: copy_children, with support for nesting (children and grandchildren, etc.)
03/27/2022 - 05.00.06: Introducing Behave test framework, LogicBank bugfix
02/18/2022 - 04.02.03: SqlServer fixes, rebuild creates '-created' versions for data model repair
01/18/2022 - 04.01.01: fix startup failure on created app (windows pip-install version only)
01/14/2022 - 04.01.00: add info_disp/show, attribute info, performance, date fix
12/26/2021 - 04.00.05: Introducing the Admin app, with Readme Tutorial
11/13/2021 - 03.50.00: rebuild-from-database/model, improved relationship support
11/04/2021 - 03.40.01: Per macOS Monterey, default ports to 5001, 5002
10/18/2021 - 03.20.11: Readme Tutorial for IDE users
10/16/2021 - 03.20.07: dev-network no longer required (see Releases)
10/03/2021 - 03.10.17: default db_url
10/02/2021 - 03.01.16: bugfix improper run arg for VSCode launch configuration
09/29/2021 - 03.01.15: run (now just runs without create), added create-and-run
09/25/2021 - 03.01.10: enable run command for Docker execution, pyodbc, fab create-by-copy
09/15/2021 - 03.00.09: auto-create .devcontainer for vscode, configure network, python & debug
09/10/2021 - 03.00.02: rename logic_bank to declare_logic, improved logging
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for ApiLogicServer-5.3.31-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b064cb08afac75628bd3e577edff5de55e9edc770d559c4862eb2603f67a7ce1 |
|
MD5 | 822aa85d170c25f19479529e96adac77 |
|
BLAKE2b-256 | eb44aaf866b5df4ca90d017efc884d77a5d0c99f188a57ce2ab6b3628ba6fba4 |