Powerful visual editor for Knex.js

Edit and export Knex.js definitions just in a few clicks.

Speed up your work and avoid routine.

Entity
Module
Project
Skipper diagram - entitySkipper diagram - moduleSkipper diagram - project

1. Visually edit your project model.

Migrations
Interface
import { Knex } from "knex";

export async function up(knex: Knex): Promise<void> {
    return knex.schema
        .createTable('Address', function (table) {
            table.increments('id').notNullable().unsigned();
        })
        .createTable('EcommerceOrder', function (table) {
            table.increments('id').notNullable();
            table.timestamp('ordered_at');
            table.string('customer_note');
            table.string('internal_note');
            table.integer('billing_address_id').unique();
            table.integer('delivery_address_id').unique();
        })
        .alterTable('EcommerceOrder', function (table) {
            table.foreign('billing_address_id').references('id').inTable('Address');
        })
        .alterTable('EcommerceOrder', function (table) {
            table.foreign('delivery_address_id').references('id').inTable('Address');
        })
    ;
}
export async function down(knex: Knex): Promise<void> {
    return knex.schema
        .alterTable('EcommerceOrder', function (table) {
            table.dropForeign(['delivery_address_id']);
        })
        .alterTable('EcommerceOrder', function (table) {
            table.dropForeign(['billing_address_id']);
        })
        .dropTable('EcommerceOrder')
        .dropTable('Address')
    ;
}
//Object for database table
export interface EcommerceOrder
{
    id?: number;
    ordered_at?: number;
    customer_note?: string;
    internal_note?: string;
    billing_address_id?: number;
    delivery_address_id?: number;
}

//Array of objects for table
export type EcommerceOrderArray = Array<EcommerceOrder>;

2. Export it to complete definition files.


Why use Skipper

Simple Project import

Sophisticated import wizard allows you to import your existing Knex.js projects from the database in just a few clicks. The created visual model shows you complete project logic simply and quickly.

Skipper file menuSkipper Knex.js import wizardSkipper Knex.js import wizard - definition filesSkipper imported Knex.js project

Definitions exported by one click

You can export your Knex.js project repeatedly and as many times as you need. Exported definitions are in a standardized and ready-to-use format without a need for further editing.

Skipper Knex.js export settingsSkipper Knex.js export resultsKnex.js migrations exported by SkipperKnex.js base model class exported by Skipper

Editing in visual interface

Intuitive wizards and dialogs guide you through editing of all objects. Each change in a model is properly transferred to the definition files in the moment of their export.

Skipper entity editor for Knex.jsSkipper bundle editor for Knex.jsSkipper Association editor for Knex.js

Lower need of Knex.js skills

Thanks to Skipper inbuilt value advisors, validators, assistants and definitions created via standardized templates you can stop worrying about Knex.js syntax and keywords.

Skipper Knex.js property editorSkipper Knex.js property editor - field propertiesSkipper editing Knex.js fields

See all the features


Support for all Knex.js features

Supported formats

Migrations and base objects are continuously updated during every export. Derived model object is one-time exported and prepared for your customization.

Skipper Knex.js interface exportSkipper Knex.js migrations export

Entities and modules

Create entities, change their fields and ORM properties or simply remove them from the model. Use colors to create logical units and make orientation in the model easier.

Skipper Knex.js entitiesEditing Knex.js fields in SkipperSkipper visual model of Knex.js project

Associations

With smart wizards you can create all types of Knex.js associations (both classic and polymorphic). Use association tools and define owner and inverse entity or MN entity and aliases.

Skipper Knex.js Many-to-Many wizardSkipper Knex.js Association wizardSkipper Knex.js Many-to-Many editorSkipper Knex.js Association editorSkipper Knex.js polymorphic associations

Indexes

Create indexes and manage them with the help of intuitive Entity Editor. Specify all indexes you need and which fields are indexed by them.

Skipper Knex.js index editor

Knex.js Models

Model can be exported as single application to the "app" directory or can be split to several modules as standalone "packages".

Skipper Knex.js paths management

Database Migrations

Create, update or configure migrations with one click directly from the Skipper application.

Skipper Knex.js migration managementSkipper Knex.js migration management

ORM Properties

Alter all model properties as you need. Skipper unique Property Editor provides a quick and easy way to create, edit or delete any value.

Skipper Knex.js property editorSkipper Knex.js property editor - associationSkipper Knex.js property editor - field

Customization

Implement your own customizations to Skipper so it fully fits your needs. Create new behaviors, configure custom properties or datatypes or connect Skipper with external tools.

See all the features

Over 5,000 companies use Skipper every day

Thomas Somoen, Try/Apt

We have good use of the tool. It simplifies our daily work, saves us time and is simple and intuitive to use.

Thomas Somoen, Try/Apt

Herman Peeren, Yepr

It is faster and gives less errors to have Skipper create the mapping code instead of writing it myself. Later in the development process I often use the Skipper diagram as a quick reference.

Herman Peeren, Yepr

Detailed List of supported Knex.js ORM properties

Skipper model properties

ObjectProperty
Projectname, storage path, migrations path, description
Modulename, namespace, description, external plugin storage, export path and format
Entityname, namespace, description
Fieldname, type, size, required, unique, primary key, auto increment, default value, enum values, description
Associationowner/inverse entity, reference fields, owner/inverse alias, association type (one-to-one, one-to-many), classic/polymorphic, parent requirement, description, onDelete, onUpdate
Many to Manymn entity, owner/inverse entity, reference fields, owner/inverse alias, description, pivotAttribute, pivotAccess, withTimestamps
Indexname, unique, indexed fields, description

Knex.js model properties

ObjectProperty
Project-
Modulemigrations enabled/disabled, migrations-path, models enabled/disabled, interfaces enabled/disabled, interfaces-path, interfaces-prefix
Entityengine, charset, collate, inherits, model-disabled
Fieldcollation, comment
AssociationonDelete, onUpdate
Many to ManypivotAttribute, pivotAccess, withTimestamps

Knex.js datatypes support

  • string

  • text

  • uuid

  • json

  • jsonb

  • integer

  • bigInteger

  • tinyint

  • smallint

  • tinyInteger

  • mediumint

  • bigint

  • decimal

  • double

  • float

  • date

  • dateTime

  • time

  • timestamp

  • timestamps

  • dropTimestamps

  • binary

  • boolean

  • enum

  • geometry

  • geography

  • point

Knex.js associations support

  • One to one (one-to-one)

  • One to many (one-to-many)

  • Many to one (many-to-one)

  • Many to many (many-to-many)

Knex.js model import / export formats

  • Migration definitions

  • Single / multi module (packages) export support

  • Model objects base classes

  • Model objects derived classes

  • Model interfaces