ScriptBot

What is ScriptBot.io
Next generation source code generator
Tool for developers
Language agnostic
Formatted and commented output
Promotes Code Standardisation
Configurable and extensible
Not a low-code platform
Not a scaffolding tool
Not a framework
Non-prescriptive
Codebase Complexity

Codebase Complexity and Impact on Productivity

Without strict governance and oversite a codebase tends to drift away from design standards, which deteriorates its quality.

A Project with No Plan

Changes to the codebase become too risky and therefore expensive. Projects collapse within months of starting because of poor architectural decisions leading to inconsistent codebase design.

The project is at risk when:

  • Adding features becomes stressful and arduous;
  • The solution is too complicated for developers to retain a mental model;
  • There are inconsistencies in the codebase;
  • Team anxiety increases to such an extent that a consensus is reached to rewrite the solution;
  • Developers make moves to exit the project;
  • New joiners take months to become productive.
A Diagram is 100,000 Lines of Code

Using a Domain-Driven Design (DDD) diagram and a template pack, ScriptBot.io produces high quality source code. Diagram entities and template packs are highly configurable for each project. The template pack governs the type and language of the application generated.

shop.Invoice Notes

FirstName, LastName, Email, Address are included within the invoice to record their values at the time of invoice creation

Snippet of an DDD Diagram

Diagram Parameters

As well as data types, diagrams include index (IX), uniqueness (UQ) and sort (↑↓) parameters. These parameters plus others are all used to enrich the resulting generated code base.

Codebase with ScriptBot.io

ScriptBot.io takes care of producing source code that is predictable and repetitive. This can be between 55% to 75% of the codebase.

A project timeline using ScriptBot.io

Examples of predictable and repetitive elements are:

  • Database creation scripts
  • Entities in a model
  • Object Relationship Mapper ORM configuration
  • Create Read Update Delete (CRUD)
  • CRUD Views
  • Controllers in a web application
  • Sign up, sign in and other user administration
  • Authentication and authorisation
  • Email messaging system
  • Logging

Benefits

  • Efficiency and time saving
  • Standardisation, consistency and architectural adherence
  • Generated architecture
  • Codebase upgradability
  • Self-documenting models
Case Studies

SilkFlo

Web application Azure, SQL Server, C#, .NET 6, Entity Framework, MVC, HTML, CSS, JavaScript 78 511 119
SilkFlo is a business to business SaaS web application. This was a year long project carried out in 2021-22.

A Project for one of the Big Four Accounting Firms

Windows desktop application SQL Server, C#, .NET 4.6, WPF, Entity Framework 56
This was developed using an earlier version of ScriptBot over a three month project in 2015. Field and relationship counts are not available.

Sargon Objects

Windows desktop application C#, .NET 4.7, WPF 27 190 40
Sargon Objects was an 'after hours' passion project. Data is stored in a zip file in the same folder as the .exe file, makes the final product highly portable. No installation required.

ScriptBot Desktop Version

Windows desktop application C#, .NET 4.7, WPF 32 302 56

I eat my own dog food around here 😎. As you can imagine ScriptBot is more of a logic oriented application, hence the lower percentage. However, the generated source code gives a reliable codebase so that I can concentrate on the parts that make ScriptBot unique.

ScripBot uses the same ScriptBot template pack as Sargon Objects, therefore shares a similar look and internal design. The ScriptBot engine is housed within it's own assembly making it ready for it's web debut.
Predicable Elements of an Application Architecture
An example application architecture,
showing elements that could be code generated
Final Thoughts
  • If the computer can do it let the computer do it.
  • If you are going to automate make sure it is the best pattern. Your code base should look like your best developer wrote it on their best day.
  • Should never have to convoluted your codebase. Your codebase should be standardised and readable.