# Systems

Violet **Systems** allow you to define the architecture of your product.

This architecture can be used to organize and allocate permissions to Violet objects (like [requirements](https://docs.violetlabs.com/features/requirements/structure) or schedules) based on the systems they belong to.

For example, Systems elements can be used to establish user permissions and to filter, sort and visualize Violet Requirements.

For example, a Spacecraft System may be composed of the following systems:

* Space Vehicle
  * Payload
  * Bus
    * Structure
    * Power
    * Thermal
    * ADCNS
    * GNC
    * C\&DH

Systems are defined in the [programs](https://docs.violetlabs.com/features/programs "mention")  configuration pane. User groups or individual users assigned to systems will be able to edit requirements associated with the system; these users are designated requirement owners.

Click the **+Add** button to create a new system, then drag and drop it into the appropriate order and hierarchy level to align with your architecture. Add owners and optionally assign a color code for the system.

<figure><img src="https://2091741164-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvrraExym8pNEUvBDoima%2Fuploads%2FjNWxhxL8xPCPhwdvBzrf%2FRequirementsSystem.png?alt=media&#x26;token=fb58c319-feb4-4b8b-9a5a-656dc9a32f40" alt="" width="563"><figcaption></figcaption></figure>

### Using systems to define user access

When a user is added to a system, Violet will grant them write-access to requirements in that system as well as all lower-level systems contained within it. You can opt to remove lower level "inherited" access if you wish (for example, granting an engineer write permissions to a system, but not to all nested subsystems).

You will also have the option to list any user within a program as an approver to a requirement.
