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 case, 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.

Caution

For some reason, these diagrams don’t display well on some browsers like Firefox. To see them, try using a different browser like Chrome or Edge.

Owner/creator
[person]

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

Administrator
[person]

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

Software engineer
[person]

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

Data engineer
[person]

Develops data pipelines
and infrastructures.
Uses Sprout 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.

Figure 1: 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).

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

Data resource functions
[Python]

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

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.

Batch data
[Parquet]

User
[person]

Filesystem

Stored data and metadata on a local or server filesystem.

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