Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 

README.md

Gitter

Contents


Intro

Panax is a framework for generation of business applications based on solid relational data models.

A detailed configuration-driven approach allows a high customization level and complex business-rules.

Every change is reflected immediately in the resulting app, allowing agile prototyping.

Panax' aim is to be agnostic of database vendor, backend and user interface, exploiting state-of-the-art technologies, like Node.js and AngularJS, and allowing high extensibility.

Panax SOA use-cases

See: Wiki:Panax' Service-oriented Architecture

See: Wiki:Panax' Dataflow

Documentation

Full API documentation available in: http://panax.readme.io/

PanaxDB

PanaxDB is the core technology of Panax, which is an enhancement layer (add-on) for your relational database.

It provides an API to interact with the database adding several super powers:

  • Advanced scaffolding
  • Metadata heuristics
  • Automation capabilities
  • Configuration over coding
  • .. among others

More info: Wiki:PanaxDB

Panax Entity

A Panax Entity consist of 3 parts:

  1. Fields: Contain all the columns' related metadata.
  2. Layout: UI representation: order, grouping, displaying, etc.
  3. Data: Data model itself.

Example call:

getXmlData @TableName='Employee', @ControlType=formView, @Mode=readonly,
           @Filters='Id=377', @output='json', @getStructure=1, @getData=1

Example XML output:

<Employee ...>
  <px:fields>
    <Id fieldName="Id" Column_Name="Id" isPrimaryKey="1" isIdentity="1" dataType="int" length="10" isNullable="0" supportsInsert="1" supportsUpdate="1" headerText="Id" controlType="default" />
    <Name fieldName="Name" Column_Name="Name" isPrimaryKey="0" isIdentity="0" dataType="nvarchar" length="30" isNullable="0" supportsInsert="1" supportsUpdate="1" headerText="Name" controlType="default" />
    <Joined fieldName="Joined" Column_Name="Joined" isPrimaryKey="0" isIdentity="0" dataType="date" isNullable="0" supportsInsert="1" supportsUpdate="1" headerText="Join Date" controlType="date" />
  </px:fields>
  
  <px:layout>
    <px:tabPanel>
      <px:tab name="General">
        <px:field fieldName="Name" />
      </px:tab>
      <px:tab name="Details">
        <px:field fieldName="Joined" />
      </px:tab>
    </px:tabPanel>
  </px:layout>
  
  <px:data>
    <px:dataRow>
      <Id value="377" text="377" />
      <Name value="John Doe" text="John Doe" />
      <Joined value="2014-06-08 00:00:00" text="08/06/2014" />
    </px:dataRow>
    <px:dataRow>
      <Id value="455" text="455" />
      <Name value="Sarah Connor" text="Sarah Connor" />
      <Joined value="2034-01-01 00:00:00" text="01/01/2034" />
    </px:dataRow>
    <px:dataRow>
      ...
    </px:dataRow>
  </px:data>
</Employee>

Example UI output with ExtJS:

[coming soon]

Example UI output with AngularJS:

[coming soon]

Implicit business rules

Data model has implicit business rules that can be defined with a combination of the following features:

  • Relationships (1-1, 1-N, N-M)
  • Data Types (str, int, custom made, etc)
  • Properties (nullable, primary keys, unique keys, descriptions, extended, etc)

Panax' heuristics detect this metadata and adapts the entity model accordingly.

Examples

[coming soon]

Explicit business rules

Explicit business rules can be defined via:

  1. Panax Configurations applied to entities
  2. Programmability at database level (constraints, triggers, etc)

Panax Configurations (config procedure)

XPath-like configurations to change XML output

Examples:

> panax db config...........

PanaxJS

JavaScript abstraction module used primarly by PanaxUI to communicate with PanaxDB

PanaxUI

User interface modules for Panax

More info: Wiki:PanaxUI

Backend (Node.js API)

[wip]

Frontend (AngularJS GUI)

[wip]

PanaxCLI

Command-line interface

[wip]

See: Wiki: PanaxCLI Usage

Glossary

Panax Jargon

Old New proposal Description
Field Database Column
Table Database Table
Schema Database Schema
Instance Database Instance
Catalog Entity A consumable database unit. Expressed as: [InstanceName.][SchemaName.]TableName
Metadata Implicit and explicit information about an Entity
Fields Metadata form Entity' fields
Layout An ordered representation (ex. form, grid) from Entity' fields
Structure Combination of Entity' Fields + Layout
Data DataModel? Actual data from Entity' fields
Mode A way to interact with a Catalog Entity
ControlType A representation (ex. graphical) of an Catalog Entity or a Field

About

Main Panax Documentation

Resources

Releases

No releases published

Packages

No packages published
You can’t perform that action at this time.