Modular development platform · Sivicom

Robust modular applications in record time

MADS V5 turns the definition of your business —data, domains, texts and parameters— into Java code ready to compile. You focus on the logic; the platform generates the rest, catches errors at compile time and automates build, test and deployment with Maven.

MADS V5 logo

Why MADS

Less boilerplate, fewer bugs, faster delivery

Large projects get complicated when every team solves the same problems its own way. MADS standardises the foundations so that every module starts with the same structure, the same best practices and the same tools.

Truly modular

Every feature is an independent Maven module —security, parameters, synchronisation or your own business— versioned, tested and deployed on its own and reused across applications.

Errors at compile time, not in production

Tables, columns, views, texts and literals are generated from the metadata. Rename a column and the compiler tells you exactly which code needs a look.

Code generation

From a single model, MADS generates JPA entities, data access classes, typed filters, multilingual texts, the parameter dictionary and the Dart model for Flutter.

One model, many platforms

The same module powers desktop applications, back-end web services and mobile apps with Flutter, with interfaces between layers so front-end and back-end can be built in parallel.

Maven-automated lifecycle

Dependencies between projects and modules resolved by Maven, shared parent POMs and commands to version, build, test, deploy and publish with no manual steps.

Built into VS Code

The MADS extension adds visual editors for domains, data model, texts and parameters, database inspectors and one-click access to the whole module lifecycle.

Quality from day one

If it compiles, the columns exist

For every entity MADS generates an enum with all its fields. Your modules refer to columns through that enum, never through strings, so any change in the model is caught by the compiler and not when a user opens the screen.

  • No column or table literals scattered around the code.
  • Safe refactoring: the IDE finds every use.
  • Multilingual texts generated and checked just like code.
Beforefails in production
int index = peer.getFieldIndex("FAC_ESTADO");
With MADSfails at compile time
// Enum generated from the metadata
customizer.setTableCellRenderer(
    FacturaField.estado, new EstadoRenderer());

How it works

From metadata to application in four steps

You describe the module once in schema-validated XML files. MADS generates the code and resources, and Maven takes care of the rest.

  1. Define the module

    Descriptor, domains, database schema, texts, parameters and access keys.

    mads create module
  2. Generate

    Java model (JPA), Dart model, multilingual texts and parameter dictionary.

    mads generate module
  3. Develop and test

    Write the business logic on top of the generated model and run the module tests.

    mads module test
  4. Build and publish

    Compile, package, deploy to the Maven repository and publish apps and modules.

    mads module build
MADS V5 generation flow The module's XML metadata goes through the MADS generator, which produces the Java model, the Dart model, texts and parameters; Maven builds, tests and deploys the result. Module metadata Descriptor Domains Database schema Texts · Parameters Access keys Generator mads generate Code and resources JPA entities, Peers and Filters Dart model for Flutter Multilingual texts Parameter dictionary → Maven: build · test · deploy

Development in VS Code

The whole module lifecycle, without leaving the editor

The MADS V5 extension for Visual Studio Code adds the MADS view and over forty commands that run the mads tool for you.

  • Editors for domains, data model, texts, parameters, runtime and dependencies.
  • Domain and database model inspectors, database synchroniser and security utility.
  • Generation of the Java and Dart models, texts, documentation and application bundles.
  • Run and debug, tests, build, deploy and publishing of modules and apps.

Development methodology in VS Code →

A working day with MADS

  1. Open the module and edit the data model from the MADS view.
  2. Mads: Generate module regenerates entities and texts.
  3. The compiler points at the code affected by the change.
  4. Mads: Run & Debug app to try it locally.
  5. Mads: Run module tests and Mads: Build module.
  6. Mads: Deploy module or Mads: Publish app when it is ready.

Maven and continuous development

A repeatable development cycle, locally and in CI

Every module inherits from the platform parent POMs, so they all build the same way. The commands you use on your machine also work on the continuous integration server.

Managed dependencies

The madsv5:platform POM pins the versions; mads-module and mads-service are the parents of modules and web services.

Error-free versioning

mads module version and mads app version update the module or app version consistently before every release.

Build, test and deploy

mads module build compiles, packages and installs; mads module deploy publishes to the Maven repository and mads pub to the WAPP service.

Maven automation and continuous cycle →

Integrations

Connected to what you already use

MADS builds on Java standards and connects to the most common databases and enterprise systems.

  • Java 8+
  • Maven
  • JPA · EclipseLink
  • Oracle
  • SQL Server
  • PostgreSQL
  • MySQL
  • IBM Db2 · AS/400
  • Apache Derby
  • ODBC
  • SAP (JCo)
  • REST services · JSON
  • Flutter · Dart
  • Pentaho reports
  • Git
  • VS Code
10+years of experience
200+modules developed
100+applications

Installation

Up and running in a couple of minutes

The mads command line tool installs with your system's package manager and keeps itself up to date.

# With Homebrew (https://brew.sh)
brew tap sivicomeng/mads
brew trust --formula sivicomeng/mads/mads
brew install mads
mads --version

Then install Maven and the VS Code extension following the installation guide.

Want to see MADS in your project?

We help you evaluate the platform, migrate existing modules or kick off a new development.