Networking

Understanding account networking and branching.


Objective

Define and manage a self-generating network of accounts that share a single user interface with pre-defined account types for logic based versioning.

Payment processing and gainsharing is available across the network.

Concepts

In the default installation, there are two directories that access your project. While in /app mode, you define your project and the way it's distributed in /net (network) mode.

Networks are monophyletic groups of accounts that are generally project-specific. Accounts are nodes in the network that can be created for anything. Accounts are accessed in two specific API modes.

  1. Account mode (default)
    • Access for the primary account only
    • Develop and manage a project
    • Define a usage network (optional)
  2. Network mode (optional)
    • Access for the network accounts only
    • Expand the network (self-expansion)
    • Present customized versions of the project
    • Use the project

Modes are determined by a single initialization method of the AppSpice class.

Typically, each mode would be a separate installation to simplify the user interface logic.

Branching accounts

Branch an account when it needs functionality that might over complicate your program logic. Create a new installation and initiate the API using the branched accounts API key.

The important concept to remember is that the lineage remains regardless of how many generations exist. And, that direct communication exists only between a parent and it's child accounts. (Grandchildren have no path of communication with their grandparents.)

Alternative to branching

As an alternative to branching, you can perform program logic based on the accounts type and/or account ID.

if($appSpice->env->account['type'] == 'schoolDistrict' && $appSpice->env->account['id'] == 123)
{
    // Provide these options...
}

Branching was a concept introduced as a means to simplify UI versioning.