Black Friday sale! The only Skipper offer of the year.

Get your full license with 40% discount right now!

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 - entity Skipper diagram - module Skipper 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.

Download 14-day trial version

Try Skipper for free. No credit card needed.


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 menu Skipper Knex.js import wizard Skipper Knex.js import wizard - definition files Skipper 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 settings Skipper Knex.js export results Knex.js migrations exported by Skipper Knex.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.js Skipper bundle editor for Knex.js Skipper 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 editor - tracking policies, entity listener Skipper Knex.js property editor - lifecycle callback Skipper 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 migrations export Skipper Knex.js base model object 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 diagram of Knex.js entities and associations Editing Knex.js fields, associations and inheritance in Skipper Skipper 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 wizard Skipper Knex.js Association wizard Skipper Knex.js Many-to-Many editor Skipper Knex.js Association editor Skipper 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 property editor - custom export path

Database Migrations

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

Skipper Knex.js property editor -  migrations management Skipper Knex.js property editor -  migrations 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 editor - attributes and options Skipper Knex.js property editor - tracking policy Skipper Knex.js property editor - lifecycle callback

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.

Over 5,000 companies use Skipper every day


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

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

Simply put, for us, Skipper is not just a tool to master, but a mastermind that teaches us the best programming practices.

Can Berkol, Biber Ltd

It simplifies our work because it saves us time. With features added over time like adding behaviors to Propel in Skipper it has become an unmissable tool in our organisation.

Erwin te Bos, aXtion

We use Skipper on our daily basis for ecommerce software development. It lets us visualize at a glance the data models and work on them in a simple and easy way.

Dario Schilman, IDS Soluciones Ecommerce

Skipper is a stable and easy to use schema designing tool! No documentation, just design and everything is documented!

Siebe Vos, Inform'aid

It saved us a lot of time designing and configuring complex data models. It is impressive to see what this software achieves on its own.

Michael Stoye, ColorGATE

Skipper is especially helpful in the initial data modeling phase. Exporting the data model and scaffolding makes it really easy to get a first prototype up and running in a matter of minutes.

Jörn Wagner, Explicatis

More user stories

Detailed List of supported Knex.js ORM properties

Skipper model properties

Object Property
Project name, storage path,migrations path, description
Module name, namespace, description, external plugin storage, export path and format
Entity name, namespace, description
Field name, type, size, required, unique, primary key, auto increment, default value, enum values, description
Association owner/inverse entity, reference fields, owner/inverse alias, association type (one-to-one, one-to-many), classic/polymorphic, parent requirement, description, onDelete, onUpdate
Many to Many mn entity, owner/inverse entity, reference fields, owner/inverse alias, description, pivotAttribute, pivotAccess, withTimestamps
Index name, unique, indexed fields, description

Knex.js model properties

Object Property
Project -
Module migrations enabled/disabled, migrations-path, models enabled/disabled, interfaces enabled/disabled, interfaces-path, interfaces-prefix
Entity engine, charset, collate, inherits, model-disabled
Field collation, comment
Association onDelete, onUpdate
Many to Many pivotAttribute, 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 model export formats

  • Migration definitions
  • Single / multi module (packages) export support
  • Model objects base classes
  • Model objects derived classes
  • Model interfaces

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)