PaaS Solution dFrame as FRONT END of AI Generator

日本語 English

What is dFrame?

No Code
Low Code
Multiple apps coexist
MVC/Source code released
Multilingual support
AI support
dFrame configuration diagram

Try No Code!

Watch on Youtube
List of features
Try it out
View source code

Construction examples:

1. Childcare record system
Overview
List of features
Try it out
View source code
2. Task management system
Overview
List of features
Try it out
View source code

 Author

What is dFrame?

dFrame is an open source PaaS (Platform as a Service) solution.
You can download and use it as open source from GitHub.

In dFrame, application data structures are fully normalized and managed in a MySQL database. This means that even complex business rules for business applications can be "automatically generated," that is, applications can be automatically generated by AI. Currently, database generation AI such as Chat2DB is available. Using these generation AI tools, you can create "information" for business applications in a database without using SQL language. dFame can deploy applications on the web as the front end of this database. -->dFrame configration diagram

No Code - Applications can be created without the need for programming, by simply registering the necessary information on the design screen. Please note that you generate your database for your businness application then you will enjoy getting screen forms on your PaaS server through dFrame connecting to your database.

Low Code - Needs such as adding application-specific functionality or converting documents in a specific format into PDF files can be quickly achieved by adding a small amount of program code to MySQL Procedure/View/Function/Trigger.

Structured - Encapsulation, maintainability.

Each application generated with dFrame is stored in its own database schema. In addition, the code (Low Code) created for each application is stored as an individual Procedure, Function, or Trigger. In this way, it is encapsulated by function, resulting in high maintainability.

【No Code】

In the "Settings" mode, simply set "Object" and "Object Field" to complete automatic creation of the database schema.

Also, if an existing database schema (table) exists, it can be imported as a dFrame "object" (no field setting required).

Then, by exiting the "Settings" mode and switching to the "App" mode, data entry, editing, search, and other processes become possible.
For example, you can create and run apps without writing any program code, such as displaying a list of data (table display) ⇒ searching (data view display) ⇒ editing by displaying individual data sheets, or entering new data.
List display can be displayed over multiple pages. The number of rows displayed per page can be set as desired.

Output to PDF or CSV files is possible by simply registering the name of the "object" to be output in the "Report" table. Furthermore, if you want to set data extraction conditions or output data combined with other "objects", you can achieve this by simply creating "Low Code" such as MySQL Procedure/View.

【Low Code】

If you want to input multiple rows at once instead of inputting data one by one using the single-sheet display, or if you want to output a PDF form or send an email, you need to "extract" or "shape" the output data before displaying the data.
This "extraction" and "shaping" are performed using MySQL Procedure/View.

Furthermore, if you want to perform calculations such as referencing other data item values on data values before displaying the screen or when "saving" data after editing, you can do so with MySQL's trigger function.

In this way, the "specific functions" of the processing you want to achieve are created in MySQL Procedure, View, or Trigger, not in procedural program code, and are created in isolation for each individual function.

Therefore, you can achieve source code management that is completely independent, extremely powerful, has a small amount of code, and is easy to understand.
Please note again that procedural program code is not required when creating applications with dFrame. There is no need to create program code that controls the flow of processing. Simply register the type of "object" that will be executed when the conditions are met in the "object" of a given dFrame.
The paradigm shift from procedural programming to SQL programming that describes static relationships, i.e., deriving data from object relationships, i.e., eliminating procedural programming from business application development, has made low code possible.
(Note) The possibility of automatic creation of MySQL Procedure, View, or Trigger by AI is coming into view⇒ AI Support

【Multiple Apps Coexist】

The created applications can run independently of each other and can also share data. "Each application is "encapsulated" in a MySQL database and can be attached or detached.

【MVCModel】

MVC (Model-View-Controller) is an architecture pattern that supports efficient development and maintenance by clearly distinguishing and organizing the logical structure of an application (Model), the layout of screens and forms (View), and the functions that control their interaction.

Model-dFrame defines the Model in a MySQL schema (Table, View, Trigger, Procedure).
The "design" body of dFrame is also stored in a MySQL schema named "dframe" as the logical structure of an application (Model).
In other words, the Model of dFrame, which is the "execution" part of dFrame, is a recursive structure that processes itself as the Target Model.

View-dFrame dynamically generates html screens at run time using Python flask/wtf. Screen styles include "list", "single form", "multiple row batch editing", and "email sending and receiving".

"The PDF file is created by defining the page structure of the PDF on the "Design" screen of dFrame, and the PDF screen is dynamically generated at runtime.

This dynamic generation is made possible by [dFrame normalized data].
 ⇒ dFrame configuration diagram

Controll--Under the control of Python flask,
 Screen display--Edits the Model information into [dFrame normalized data] and supplies it to the View.
 Input data processing--Reflects the data passed from the View to the database using the schema information as a clue.

【Multilingual support】

dFrame has a vocabulary conversion table, and if the display vocabulary is registered in the conversion table before the screen is displayed, it is converted into the system's "setting language" and displayed. The system's "setting language" can be selected from the "Settings" screen.

The objects (tables)/object fields (data items) displayed on the screen on the dFrame setting mode are preregistered in English and Japanese in the conversion table.

For application screens, the language to be converted and its translation must be registered in the conversion table.

【AI support】

Low code may be required for application development, and it is natural to consider using AI to automatically create this low code.

When creating MySQL procedures, views, or triggers, their functional specifications can be "materialized" in excellent details in databases, so we believe that AI-based database generator,such as Chat2DB is far more advantageous than procedural languages. We recommend that 1.define data schema of your business; 2. create sample data; 3. create test cases; 4.adding your business rules as your database procedure, trigger or functions; finally; 5.connect to dFame to run as application package.

[dFrame Configuration Diagram]

The MVC model framework of dFrame is implemented in Python. The "M (Model)] of MVC is divided into an "Application Running" and a "Setting". When the "Application Running" is executed, the "M (Model)] of the dFrame body analyzes the model of the "Application Running". The "Setting" part that generates the "Application" is also implemented as an MVC "M (Model)]. In other words, the "Setting" of dFrame itself is also implemented (recursively) as one "Application Running".

No Code/Low Codeトライ!

【Youtubeで視る】

YouTube dframe:Create an app with nocode(5min)
YouTube dFrame:Run No Code an Application(3min)
YouTube dFrame:Setting Funtions:account/security、multi language(5min)
YouTube dFrame:Low Code app sampleーNursery School Doc Support(5minutes)

【Functions on dFrame Setting 】

ObjectFunction
AccountTo log in to the system, you need an account. An account has attributes such as account name, password, and email address. An account always has one and only one Role, which is described below.
AdminWhen the system is initially started, one Admin account and password are given to the operator. An Admin account is an account with a Role value of 1, which is described below. An Admin account can add any number of other Admin accounts.
RoleThe type of access rights to the system is called a Role. The Role: value must be an integer value of 1 or greater. Role:1 is the authority to access everything in the system. Only the Admin has the authority to edit Role.
ObjectControl information for system and application functions, operation records, and data for the application itself are stored as MySQL tables, and these are called objects. .
Object SecuritySets the security level for every object-role combination. Security levels include "editable", "read only" and "no access".
Object Field
(object data item)
An object can have one ID item and multiple data items. The following items are automatically defined as data items when creating an object, and are set as MySQL Fields: ID, Seq (display order), ModifiedBy (last updated by), ModifedAt (last updated date and time), CreatedAt (registered date and time) ID items and data items are saved as Fields in the MySQL table.
Object Field Security
(Object Data Item Confidentiality Designation)
Sets the security level for all object data item (Field)-role combinations. Security levels include "Editable", "Read only", and "No access".
Object Relationships (Object Relationship Definition)You can define relationships between objects. This allows you to reference the field values of other objects and display them on screens and reports. You can also transition to the screen to the entity (data row) of the referenced object.
List FormThe entities (data rows) that make up an object are displayed on the list screen. The displayed data cannot be edited. For data items with a browser "link" set in the data row of each entity on the list screen, the browser display can be transitioned to the linked object or the object's entity. For example, clicking the "link" in the ID field transitions to a screen that displays only that entity (single sheet). The number of data rows that can be displayed on the screen can be specified in "System Settings" (described later). You can transition to any data display screen by paging (pagination). The display order can be specified in the [seq] (display order) field of the object field.
ViewWhen displaying a list, you can specify "narrowing down data" (setting extraction conditions) and "setting display data items". Each view setting has a "view name", and by calling it, you can improve the visibility of the list display.
Single FormThis is the screen for registering new entities (data rows) that make up an object, editing data, and deleting them. The screen controls whether the operator can display or edit the data depending on the security level of the operator's role. Only one entity to be operated (edited or deleted) is displayed on the screen. Data items are arranged in one or two columns on the screen in the order specified by [seq] (display order). T he number of columns can be specified in "System Settings" (described later). When registering new data, a screen consisting of blank data items is displayed.
Bulk FormThe entities (data rows) that make up an object are displayed in a list screen, and data can be further edited. However, entities cannot be deleted or added. The object that realizes this function must be a MySQL "View". In other words, it provides the function of editing data for a View object that consists of one or more existing objects.
PDF ReportObject entities and values derived from them can be output as PDF data. PDF data is defined as a collection of MySQL Views. In other words, the data blocks that make up the report are derived using a MySQL View, and the View name is registered in the system. Report output is performed from the "Report Center" or the single form screen of the object to which the report is related.
Multi LingalMultilingual support is provided for the following screen displays. 1. dFrame's Screen Frame (basic screen frame) 2. Design mode screen 3. "Screen Caption" when the application is executed 4. Messages from the system Language switching can be specified in "System Settings" (described later). The default language used in design mode is English. If you want to support a language, register the vocabulary that corresponds to the English vocabulary (Caption) in the "Caption Dictionary". Similarly, register the "Sentence" of the entire message for messages from the system.
System IniYou can specify the following settings for the system. 1. Number of display columns for data items in Single Form (1 column, 2 columns) 2. Number of display rows for List Form 3. Screen display language
Base ValuesIf the data items of an object have a fixed value range, you can set the name and value range in advance and use them as combo selection items when entering data items. Only accounts with the Admin role can register and edit baselines in the baseline table.

【Try to run dFrame】

If you would like to try it, we will issue you a URL, account, and password. We look forward to receiving your email.  mail to: dframe@u01.itscom.net

【Study the source code of dframe】

dFrame has a large backlog. Security-related issues, source code configuration management (GitHub), Code Refactering, Pytest maintenance (especially data integrity checks), end-user app development support, etc.
We would like to ask volunteers from Japan and overseas to participate within the limits of their time and resources.
The dFrame source code is structured as follows:
Model: MySQL Schema name: dframe GIT registration file: mysqldump
Control Python/flask GIT registration file: Python wtf file
Visual Python/flask Templates (included above)
gitHub: dframe.dump;dframe_socket

Example for Low Code applications:

【1. Nursery School Doc system】

【Overview】

The system records and keeps records of childcare at the nursery school, progress, and daily contact with parents.
In particular, by maintaining data consistency for attendance records-->individual records of children --->class records, the administrative burden on childcare workers can be reduced.

【Function List】

Ledger

Object NameWhen to use? Operation Overview Notes
Basic Nursery School Ledger When you are starting to use the system for the first time Enter basic information such as name, address, phone number, email address, and website URL. This information will be displayed on screens and reports as necessary.
Staff (ledger) When you start using the system for the first time, or when staff start or leave the company, or when there are changes in job type, qualifications, etc. Register staff personal information. It is not linked to the system's "account." Only authorized staff can view and edit.
Class When you start using the system for the first time Set the name and school age of each class for 0-5 year olds. Also set standard activities for morning and afternoon (such as walks). When you set an activity, the content will be copied to the "Activity" column of the class diary.
Parents Set the parent's information when a child enters or leaves the school. Set contact information (phone number, email address, etc.). Register two parents, one for the "principal" and one for the "secondary". Also, if there are siblings, register one parent for each "principal" and "secondary". The parent's email address is automatically set by sending an email to the system from a smartphone, mobile phone, etc.
Children When you start using the system for the first time, or when a child enters or leaves the school. Set the child's school ID number, gender, date of birth, date of entry, date of withdrawal (when withdrawing), allergy information, etc. Also set up linking with the parent's data. The school registration number is set in advance. It is not automatically assigned. The class to which the child belongs is automatically set based on the child's date of birth.
Medicine When a parent or guardian requests medication, the name of the medication is registered. Register medication when there is one that has not been registered in the system. The duration, timing, and number of times medication is administered are set on the medication request screen.

Daily Record

Object nameWhen to use?Operation overview Notes
Attendance record When a child arrives or leaves the nursery. Or when a guardian informs you that a child will be absent, late, or leave early. Enter information such as the time of arrival or departure, or the scheduled time, and the attendance report on the screen that displays the list of children in the class. If the system is connected to a time recorder, the time of arrival and departure will be automatically recorded in the system.
Infant diary After an infant arrives at the nursery and enters the room, record the temperature and physical findings. Also record meals, sleep, bowel movements, etc. as appropriate. Record each morning and afternoon separately. Only children who attend the nursery will be displayed on the screen.
Nursery School Diary Record the growth of each child during the day at the nursery school for each "developmental characteristic". The "developmental characteristics" items are automatically displayed according to the school age. Only children who attend the nursery school will be displayed on the screen.
Class Diary Record the contents of the class care for the day. For the infant class, the vital signs of each child who attends the nursery school will be automatically recorded in the "Infant Diary". The items to be recorded differ for infants, nursery school children, and Saturday care.
School Journal Records school-wide events, training, construction and inspections. "Weather", staff vacations, shifts, business trips, duty, and courses are also automatically displayed. "Weather" is automatically recorded in the "Weather" column of each class's "Class Journal". Staff shift schedules are loaded monthly from Excel and stored in the system.

Health Records

Object NameWhen to use? Overview of operation Notes
Medication request When a guardian requests that medication be administered at the nursery Record the name of the medicine, the duration of administration, the number of times per day, and the amount.
Medication Enter the date and time of administration each time medication is administered, and change (delete) the data from Medication (planned) to Medication (administered). By displaying only the data for Medication (planned) on the screen in a "view" on the "today", you can prevent forgetting to administer medication.
Health Memo Record communication with parents regarding the health of the child.
Physical Measurement Record Enter height, weight, chest circumference, and head circumference measurements for each month. The previous measurements are displayed at the bottom. You can compare the current measurements to these to evaluate them.
Health Check Record Record the results of regular medical checkups by a doctor. The previous findings are displayed on the right. You can compare the current findings to these to evaluate them.

【Try to run Nursery School Doc System】

If you would like, we will issue you a URL, account, and password. We look forward to receiving your email.  mail to: dframe@u01.itscom.net

【View the source code】

The childcare record system runs on dFame + Low Code. The dFrme source code can be downloaded from GIT.
gitHub: nschool;dframe_nschool

【2. Inventory Management System]

【Overview】

Based on the data on incoming and outgoing goods, management data such as current stock, required order quantity, and dead stock product list are created.

【Function List】

Ledger

Object NameWhen to use? Overview of Operation Notes
Ledger When you start using the system for the first time, or when there are additional changes to the product manufacturer or product Register the manufacturer and product.
Manufacturer (ledger) When you start using the system for the first time, or when you handle products from a new manufacturer. Register the employee's personal information. It is not linked to the system's "account." Only authorized employees can view and edit.
Products When handling new products Record product characteristics such as product name, purchase price, lead time (days), and number of items.

Inventory management tasks

Object nameWhen to use?Operation overview Notes
Receiving When ordering products from the manufacturer and receiving products When ordering: Enter the product name, quantity, unit price, and delivery date
When receiving products: Add the receiving date
Shipping When shipping products. Enter the product name, quantity, and shipping date.
Inventory table Displays current stock quantity, stock value, backorder, backorder, free stock quantity, stock-out date (estimated), and lead time. You can move to the history screen (inventory details screen) for "stocking" and "shipping" of each product ("Details" link)/td>
Inventory details Displays stocking data and shipping data for the specified product in chronological order. Click the product link from the inventory table. Displays delivery schedule as well.

【View source code】

The source code for dFrme is You can download it from GIT.
gitHub: invt2;dframe_invt2

Author

Worked on developing basic software at Nihon Unisys, Ltd. After that, became independent and started doing system consulting and related system development.
Has mainly been involved in the integrated contracting of DFD (Data Flow Diagram) analysis -->DB skim design--> implementation (programming) for sales management and accounting operations of small and medium-sized enterprises.
Worked as a part-time lecturer at Musashi Institute of Technology (now Tokyo City University) (1989-1995) with object-oriented/data-centric design as his life's work.
Emphasis: IT education for business application development is not about learning programming languages or algorithms as "procedures",
 ① The ability to understand the "structure" of society/business/the universe (culture)
 ② The ability to express it as a data structure ("normalization algorithm" of "relationships") that is the "association" of "objects"
 ③ Furthermore, the ability to implement it as a system
 It is difficult to beat AI in terms of the ability to create algorithms, but I think that understanding "data structures" and designing them appropriately (for now) can beat AI.
Hoping that the open source of dFrame will help in that, however small.
 Engineer (Information Processing) 1984  Small Business Management Consultant 1988
mail to: dframe@u01.itscom.net