---
# System prepended metadata

title: Squidex
tags: [sl+]

---

# Squidex
###### tags: `sl+`

## Requirements for a headless CMS

* intuitive and easy to use for researchers
* sofisticated enough to curate types and sets
* separation of design of types and instantiation of tasks and sets
* open source
* self hosted at UiO
* modern framework, maintainable by Terje/USIT (such as Node)
* nice to have: versioning support 
* nice to have: workflow support
* suitable API for app

## Sample GraphQL Queries
Use the Strapi GraphQL to test tehse queries:
https://cloud.squidex.io/app/2021int/api/graphql

```
query TasksForWeek($weekID: Guid!) {
  findWeekContent(id: $weekID) {
    data {
      set {
        iv {
          __typename
          id
          data {
            set {
              iv {
                __typename
                id
              }
            }
          }
        }
      }
    }
  }
}

query QuestionsForTask($taskID: Guid!) {
  findTaskContent(id: $taskID) {
    id
    data {
      level {
        iv
      }
      name {
        iv
      }
      questions {
        iv {
          __typename
          ... on TrueOrFalse {
            id
            data {
              name {
                iv
              }
            }
          }
          ... on Qtype1 {
            id
          }
        }
      }
    }
  }
}
```
Query variables

```
{
  "weekID": "72c7e303-b248-4a75-903f-3cdbbd8a5991",
  "taskID": "41394019-7b82-4c66-a03c-89f54d66428b"
}
```

### SLPlus Queries

Get Layout


Get Navigation Levels
```
fragment questionTypes on questionsReferenceUnionDto {
    ... on Type1 { id }
    ... on Type2 { id }
    ... on Type3 { id }
    ... on Type4 { id }
    ... on Type5 { id }
    ... on Type6 { id }
    ... on Type7 { id }
    ... on Type8 { id }
}

query Navigation {
  queryWeekContents {
      flatData {
        name
        description
        picturebook {
          flatData {
            pages {
              background {
                slug
              }
            }
          }
        }
        set {
          data {
            questions {
            	iv {
                ...questionTypes
              }
            }
          }
      	}
      }
  }
}
```

Get Questions given a (lowest) Set ID
```
fragment type1 on questionsReferenceUnionDto {
  ... on Type1 { 
    id 
    flatData {
      name
      instruction {
        fileName
      }
      items {
        image {
          slug
        }
        sound {
          slug
        }
      }
    }
  }
}

query Questions($setID: Guid!) {
  findDayContent(id: $setID) {
    data {
    	questions {
        iv {
          ... type1
        }
      }
  	}
  }
}
```
```
{
  "setID": "21bc8280-448e-4514-b14d-b69f00496146"
}
```