Skip to Main Content

System concepts and data standards define the foundational, global configurations and resources that apply across all customers. These entries shape the overall behavior, capabilities, and presentation of an application built on the Baseplate framework. They support consistency, security, and maintainability.  All of the following would be included as “example” system wide setting.

As noted above, this data will be provided to application via a pre-configured set of data provided centrally via a application configuration library. Examples of what we would provide include:

Terms

This isn’t intended to be an exhaustive list but is representative of what we want to store as system level setting

Out of Box User States

StateDescription
ActiveThe user is fully authorized to log in and access the system. They are in good standing and tied to a customer account that is also in good standing.
InactiveThe user is not currently able to access the system, but their account is preserved. This state is typically used for users who have left an organization or are temporarily deactivated but may return. They remain associated with the customer account.
SuspendedThe user’s access has been locked due to a policy violation, security issue, or manual administrative action. They cannot regain access until cleared by a customer administrator, customer success manager, or system administrator.
Pending InviteThe user has been invited to the system but has not yet accepted the invitation or completed account setup. No access is granted until activation.
Password Reset RequiredThe user must reset their password before gaining access—typically triggered by a security policy or manual reset request.
Locked OutThe user has been temporarily locked due to multiple failed login attempts or similar automated security protection mechanisms. May auto-resolve or require admin intervention.

Out of Box Customer States

Customer’s in the system always are “flagged” into a single, specific state indicating their lifecycle. We support the following states out of the box.

StateDescription
FreeThe customer has created an account but has not started a trial or subscribed. Access is limited to free-tier features.
TrialThe customer is currently within a time-bound free trial period that grants access to premium or full platform capabilities.
SubscribedThe customer has an active paid subscription with access to all licensed features and services based on their plan.
SuspendedThe customer’s access is temporarily restricted—typically due to billing failures, policy violations, or manual admin action.
CancelledThe customer was previously subscribed or trialing, but their subscription has been cancelled and access has lapsed.
Expired TrialThe customer completed a trial but did not convert to a paid subscription. They may have reverted to a Free plan.
Pending SetupThe customer account has been created, but onboarding or initial configuration steps have not yet been completed.
ChurnedThe customer previously had an active subscription but has been inactive or unsubscribed for a defined period. Typically used for re-engagement tracking.
Internal/TestAn internal or sandbox account used for testing, demo, or staging purposes—excluded from billing and production metrics.

Concepts

Industries

The system wide industry list is normalized to the diffbot industry list which provides a fine grained list of industries for all 246M companies in the database. This configuration data would be made available via Firebase Remote Config.

  
For certain apps that leverage LinkedIn integrations we will also need to provide a mapping between the Diffbot industry list and the officially LinkedIn industry list provided from Microsoft.   As and if needed this will be generated at the time of app buildout via a simple LLM query to map the diffbot list of the Microsoft list with a basic human review to follow.  

States and Provinces

Initially the Baseplate will limit country scope to US and Canada.  

Here is a list of the 50 US states and 10 Canadian provinces in a comma-delimited format:

States: Alabama, Alaska, Arizona, Arkansas, California, Colorado, Connecticut, Delaware, Florida, Georgia, Hawaii, Idaho, Illinois, Indiana, Iowa, Kansas, Kentucky, Louisiana, Maine, Maryland, Massachusetts, Michigan, Minnesota, Mississippi, Missouri, Montana, Nebraska, Nevada, New Hampshire, New Jersey, New Mexico, New York, North Carolina, North Dakota, Ohio, Oklahoma, Oregon, Pennsylvania, Rhode Island, South Carolina, South Dakota, Tennessee, Texas, Utah, Vermont, Virginia, Washington, West Virginia, Wisconsin, Wyoming, 

Provinces: Ontario, Quebec, British Columbia, Alberta, Saskatchewan, Manitoba, Nova Scotia, New Brunswick, Prince Edward Island, Newfoundland and Labrador.

Company Size Options

The system wide company size options are mapped to the LinkedIn company size options list available from Microsoft.

Restrictive and Prescriptive

Baseplate provides direct source code access to the framework inherently enabling developers full control over the development environment.   Ironically, as we implement the framework, then, we wanted to err on the side of “restrictive” and “prescriptive” in what we allow developers to modify and extend.   The idea is that we want to be very clear with developers in the environment about what they should be focused on and changing and what should simply “work for them.”  Examples:

What Developers Can Change:

What Developers Can’t Change:

Why are we restricting these things?  The goal of being restrictive is to enable the following:

Extensibility v. Branching

Extensibility and branching offer distinct approaches to leveraging Baseplate for building new applications. Extensibility focuses on keeping the Baseplate codebase largely intact and extending its functionality through additional features, modules or customizations. This is similar to subclassing in object-oriented programming, where new features inherit and build upon the existing foundation.  This approach promotes code reuse and minimizes divergence from the core platform.    

Branching, on the other hand, involves creating a separate copy of the Baseplate codebase and modifying it directly to build the specific application.  This allows for greater flexibility and customization but can lead to code divergence and increased maintenance challenges.  The choice between extensibility and branching depends on the specific needs of the application being built.    
In general our default approach is to extend the functionality in the child apps.  Practically, though, we expect that the apps will need to branch certain aspects of the core code base of Baseplate to allow for maximum flexibility in the implementation of each app.