C4 Models

Warning

🚧 Sprout is still in active development and evolving quickly, so the documentation and functionality may not work as described and could undergo substantial changes 🚧

This section contains the C4 Models for Sprout. The C4 Model is an established visualization approach to describe the architecture of a software system. It breaks the system down into four levels of architectural abstraction: Context, Containers, Components, and Code. The last level is rarely used nor recommended for most software architecture since it is used to visualize a high degree of detail that most projects don’t need. For our needs, we only needed to create the Context and Containers diagrams.

These diagrams and their content draw from our overall Seedcase design documentation and design decisions. See those websites for more information.

Context

The Context diagram shows the users and any external systems that interact with Sprout. This includes the user roles described in the User Personas page.

Owner/creator
[person]

Creates and owns a project that generates data. Uses Sprout Core for more control.

Administrator
[person]

Manages data and metadata from a project for an owner. Uses Sprout Core for more control.

Software engineer
[person]

Creates and develops data infrastructure. Uses Sprout Core to build extensions and customizations.

Data engineer
[person]

Develops data pipelines and infrastructures. Uses Sprout Core to build and customize the pipelines.

Seedcase Sprout
[system]

Allows users fine-grained control over building, managing, and structuring data in a way that makes it easier to share with collaborators and to analyze. Structures data following the Frictionless Data Package Standard.

Filesystem (local or server)
[system]

Structured data from Sprout that is stored in a filesystem for later use. This can be on a server or on a local, personal computer, depending on the privacy of the data.

C4 Context diagram showing a very basic overview of Sprout and its anticipated users.

Container

The Container diagram shows the larger parts of the system, what they are responsible for, and how they interact with each other. It also shows the technology choices for each container.

Sprout

Data package functions
[Python]

Create, manage, and check a data package and its 'properties' (metadata).

Data resource functions
[Python]

Create, manage, and check data resources and their 'properties' (metadata) in a data package.

Metadata ('properties')
[Frictionless Standard, JSON]

Raw data
[gzipped CSV]

Data
[Parquet]

Observational unit functions
[Python]

Manage and delete observational units in a resource. An observational unit is an entity with data collected at a specific time. Necessary for GDPR-compliance.

User
[person]

Filesystem

Stored data and metadata on a local or server filesystem.

C4 Container diagram showing larger functional parts of Sprout and their connections.