Skip to content

An opinionated approach for consistent application development built on top of the concepts of CQRS

License

Notifications You must be signed in to change notification settings

aksio-insurtech/ApplicationModel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Aksio Application Model

Packages / Deployables

Nuget NPM

Builds

.NET Build JavaScript Build

Description

The Aksio Application model represents an opinionated approach to building consistent applications based on the concepts behind CQRS. It offers extensions for different frameworks and is built on top of ASP.NET Core. One of the traits the application model has is the bridging between the backend and the frontend. The application model provides a tool, called ProxyGenerator that hooks into the C# Roslyn compiler and generates TypeScript code for recognized artifacts matching the criteria of what is considered a commmand or a query.

Contributing

If you want to jump into building this repository and possibly contributing, please refer to contributing.

Prerequisites

The following are prerequisites to work with this repository.

Central Package Management

This repository leverages Central Package Management, which means that all package versions are managed from a file at the root level called Directory.Packages.props.

In addition there are also Directory.Build.props files for setting up common settings that are applied cross cuttingly.

Root package.json

The package.json found at the root level defines all the workspaces. It is assumed

All developer dependencies are defined in the top level package.json. The reason for this is to be able to provide global scripts for every package to use for easier maintenance.

The package.json found at the top level contains scripts that can then be used in a child project for this to work properly.

In a package, all you need to do is to define the scripts to use the global scripts in the `package.json´ of that project:

{
    "scripts": {
        "prepublish": "yarn g:build",
        "clean": "yarn g:clean",
        "build": "yarn g:build",
        "lint": "yarn g:lint",
        "lint:ci": "yarn g:lint:ci",
        "test": "yarn g:test",
        "ci": "yarn g:ci",
        "up": "yarn g:up"
    }
}