Git Product home page Git Product logo

kirra's Introduction



Kirra API

Build Status

The Kirra API is a minimalistic API specification to access functionality of a business application in a business and technology agnostic way.

This reference implementation happens to use the Java language, but the intent is that it could be easily translated to other programming languages (or computing domains, such as network-oriented APIs).

The goal is that by detaching view technologies from model technologies, we can mix and match generic clients and domain-specific applications, no matter what particular technology (within and across language silos) for domain-driven development they are built on.

The generic object model

Business entity instances in the application are accessed via the Instance class, which includes values for properties and optionally related/child instances.

Entity metadata is available via the Entity class. Further metadata can be obtained via related objects, such as Properties, Relationships, Operations etc.

The InstanceManagement API gives CRUD access to entity instances, including relationship traversal, and provides a mechanism for invoking operations (including actions and queries).

The SchemaManagement API gives access to the schema of the application.

The Repository merges both instance and schema-related features.

Implementations

Java Model

A Java-based specification of the Kirra metamodel. This specification has no dependencies and can be used in any Java-based application. Status: released.

Kotlin + Spring Boot

A Kotlin/Spring Boot based implementation of Kirra. Implement you domain model and related services, and you get a Kirra-compliant API automagically! Status: In progress.

JAX-RS-based REST API implementation

JAX-RS based implementation of Kirra as a REST API. Status: in progress.

Java-based REST API Client

Implements the SchemaManagement and InstanceManagement protocols as a proxy to any REST-based implementation of the Kirra API. Status: in progress

Cloudfier

Cloudfier implements the Kirra API to expose the funcionality of business applications running off of executable UML models. Cloudfier can generate fully functional clients based on the schema exposed by the Kirra API. Status: released.

HTML desktop-styled client

An Angular-based renderer for a Kirra-based REST API. Status: in progress (demo).

HTML5 mobile-styled client

A generic mobile-styled HTML5 client that allows accessing any business application that provides a Kirra compliant API. Status: retired (demo).

EBUI - Email-Based User Interface

An email-based front-end for your Kirra-compliant business application. Status: retired.

Ideas

MetaWidget

Implement a Metawidget inspector for the Kirra API, and get a free UI.

tcomb/form

Implement a client-side domain model generator for tcomb/form based on the domain model schema exposed via the Kirra API, and get a free UI.

EJB/JPA

Implement the Kirra API over the object model of a EJB/JPA application.

Apache ISIS

Apache ISIS seems to have a generic API for accessing the functionality of Isis applications but it is far from minimalistic. It is unclear if the current level of functionality ISIS provides could be a offered via a simpler API (if not as simple as Kirra, hopefully not nearly as complex as Isis').

Isis has several viewer implementations, it would be great of they could be detached from the Isis runtime implementation and rely on an implementation-agnostic API like Kirra.

Swagger

Automatic generation of a Swagger-compatible documentation based on any Kirra-compliant implementation.

EMF/ECore

Implement the Kirra API on top of EMF's ECore API.

OpenXava

OpenXava is similar to Apache Isis, but does not have a metamodel API.

Grails

Implement the Kirra API over the object model of a Grails application, including domain and service classes.

Restful Objects

Implement RO on top of the Kirra API, allowing any business application that is exposed via a Kirra-compatible API to have a fully functional REST API for free.

In a way, the Kirra API has similar goals to Restful Objects, but aims to achieve them within the application, without requiring a network hop.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.