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.
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.
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
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.
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.
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.
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".
Object | Function |
---|---|
Account | To 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. |
Admin | When 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. |
Role | The 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. |
Object | Control 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 Security | Sets 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 Form | The 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. |
View | When 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 Form | This 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 Form | The 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 Report | Object 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 Lingal | Multilingual 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 Ini | You 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 Values | If 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. |
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
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
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.
Ledger
Object Name | When 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 name | When 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 Name | When 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. |
The childcare record system runs on dFame + Low Code. The dFrme source code can be downloaded from GIT.
gitHub: nschool;dframe_nschool
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.
Ledger
Object Name | When 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 name | When 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. |
The source code for dFrme is You can download it from GIT.
gitHub: invt2;dframe_invt2
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