Daptin - GraphQL/JSON-API Headless CMS
Clone or download
Latest commit faaadba Dec 19, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
assets - Update jquery version to 3.0.0 Jan 27, 2018
crossbuild - Update jquery version to 3.0.0 Jan 27, 2018
daptinweb upgrade cryptiles js depenedency Nov 15, 2018
docs update api documentation Apr 13, 2018
docs_markdown - update documentation for CRUD apis Apr 13, 2018
images update glide lock dependency Apr 10, 2018
integration_tests - change travis build command Sep 5, 2018
kubernetes Update docs, add web build for heroku, update build scripts Nov 12, 2017
scripts - pass table info as a value instead of as a pointer Jun 12, 2018
server - add "enable" column to sub site Dec 14, 2018
.gitignore subsites can be hosted using local dist Feb 10, 2018
.travis.yml - update build command for travis Sep 5, 2018
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md Jun 15, 2017
CONTRIBUTING.md Create CONTRIBUTING.md Nov 5, 2017
Dockerfile - add logs before truncate table May 23, 2018
ISSUE_TEMPLATE.md Update ISSUE_TEMPLATE.md Mar 25, 2018
LICENSE builds for heroku, docker, add license file, update readme Jun 15, 2017
Makefile - Handle images/assets as entity fields Jul 15, 2018
Procfile - proc file update for passing port with colon for heroku Jun 9, 2018
README.md Update README.md Dec 19, 2018
app.json - update rclone dependency Feb 25, 2018
codecov.yml codecov token Mar 12, 2018
glide.lock - add "enable" column to sub site Dec 14, 2018
glide.yaml - add "enable" column to sub site Dec 14, 2018
goreleaser.yml cross build using xgo only, gorelease for building release Feb 19, 2018
main.go - Handle images/assets as entity fields Jul 15, 2018

README.md


Daptin
Daptin

Headless CMS

Release Software License Travis Codecov branch Go Report Card Go Doc Build Status

DownloadDocumentationCommunity

FeaturesGetting Started

Daptin is a headless CMS framework to develop and deploy production-ready JSON API based servers.


Features

  • Declarative Data Modeling system
    • Unique/Primary keys
    • Single/Multiple Relation
    • Normalizations and conformations
    • Middleware
    • Scripting using JS
  • CRUD JSON APIs' for all tables
    • Create, Read, Update, Delete
    • Sort, filter, search, group by single/multiple columns
    • Authentication and Group based authorization
    • Pluggable middleware, conformations and normalizations
    • Trigger actions/pipelines
  • GraphQL APIs
    • Read and Mutations APIs for all tables
    • One level of relationship fetching
  • Client SDK libraries for all platforms
  • Rich data types
    • Column types ranging from number to json to file/image assets
  • Sub sites hosting
    • Expose multiple websites from a single instance
    • Connect multiple domains/sub-domains
  • Pluggable Social Auth, Basic Auth or Username/Password Auth
  • Cloud storage
    • Connect to external cloud storage services seamlessly
    • Pull data/Push data
  • Action APIs
    • Define work-flows
    • Expose custom endpoints for other services
  • Ready to use web dashboard
    • Responsive to desktop, mobile and table
  • Cross platform
    • Windows, Mac, Linux and more

Create entity and add item

Installation

Setup and data

APIs

Users

Auth & Auth

Asset and file storage

Sub-sites

Client library

Ruby Python Javascript
Typescript PHP Dart
.NET Java iOS
Elixir R Perl

API spec RAML

RAML spec is auto generated for each endpoint exposed. This can be use to generate further documentation and clients.

RAML API documentatnon

curl http://localhost/apispec.raml

{
    "data": [
        {
            "type": "tableName",
            "attributes": {
                "col1": "",
                "col2": "",
            },
            "id": "",
        }
    ],
    "included": [
        {
            "type": "tableName",
            "attributes": {},
            "id": "",
        },
        .
        .
    ],
    "links": {
        "current_page": 1,
        "from": 0,
        "last_page": 100,
        "per_page": 50,
        "to": 50,
        "total": 5000
    }
}

Web Dashboard

Sign up and Sign in Create entity and add item Generate random data to show tables

Why Daptin?

Daptin was to help build faster, more capable APIs over your data that worked across for all types of frontend.

While Daptin primarily targeted Web apps, the emergence of Android and iOS Apps as a rapidly growing target for developers demanded a different approach for building the backend. With developers classic use of traditional frameworks and bundling techniques, we struggle to invest enough time in the business and frontend demands for all sorts of Apps that provide consistent and predictable APIs which perform equally well on fast and slow load, across a diversity of platforms and devices.

Additionally, framework fragmentation had created a APIs development interoperability nightmare, where backend built for one purpose needs a lot of boilerplate and integration with the rest of the system, in a consistent way.

A component system around JSON APIs offered a solution to both problems, allowing more time available to be invested into frontend and business building, and targeting a standards-based JSON/Entity models that all frontends can use.

However, JSON APIs for data manipulation by themselves weren't enough. Building apps required a lot of custom actions, workflows, data integrity, event subscription, integration with external services that were previously locked up inside of traditional web frameworks. Daptin was built to pull these features out of traditional frameworks and bring them to the fast emerging JSON API standard in an automated way.

Getting started

  • Deploy instance of Daptin on a server
  • Upload JSON/YAML/TOML/HCL file which describe your entities (or use marketplace to get started)
  • or upload XLS file to create entities and upload data
  • Become Admin of the instance (until then its a open for access, that's why you were able to create an account)

Tech Goals

  • Zero config start (sqlite db for no-config install, mysql/postgres is recommended for serious use)
  • A closely knit set of functionality which work together
  • Completely configurable at runtime
  • Stateless (Horizontally scalable)
  • Piggyback on used/known standards
  • Runnable on all types on devices
  • Cross platform app using qt (very long term goal. A responsive website for now.)

Road Map

  • Normalised Db Design from JSON schema upload
  • Json Api, with CRUD and Relationships
  • OAuth Authentication, inbuilt jwt token generator (setups up secret itself)
  • Authorization based on a slightly modified linux FS permission model
  • Objects and action chains
  • State tracking using state machine
  • Data connectors -> Incoming/Outgoing data
  • Plugin system -> Grow the system according to your needs
  • Native support for different data types (geo location/time/colors/measurements)
  • Configurable intelligent Validation for data in the APIs
  • Pages/Sub-sites -> Create a sub-site for a target audiance
  • Define events all around the system
  • Data conversion/exchange/transformations
  • Live editor for subsites - grapesjs
  • Store connectors for storing big files/subsites - rclone
  • Market place to allow plugins/extensions to be installed
  • Online entity designer
  • Excel to entity identification
  • CSV to entity identification

Documentation