# Collections (/docs/concepts/collections)



A collection is a titled list of quests your app shows together, such as "Getting started", "Booth challenges" or "This week's quests". You choose the order, and can add a description and an image.

The same quest can sit in several collections. A member's progress follows the quest, not the list, so finishing it in one place shows it finished everywhere. Duplicating a quest makes a new quest with fresh progress.

```mermaid
flowchart LR
    A["Collection A"] --> Q["Quest"]
    B["Collection B"] --> Q
    Q --> P["Shared member progress"]
    Q -.->|duplicate| D["New quest"]
    D --> F["Fresh progress"]
```

## Membership and identity [#membership-and-identity]

| Who          | Controls                                                          |
| ------------ | ----------------------------------------------------------------- |
| Project code | Declares collections.                                             |
| Console      | Lets you edit their details, arrange quests, and publish changes. |
| Your app     | Decides how to show them.                                         |

## Author collection presentation [#author-collection-presentation]

In Console, **Edit details*&#x2A; in a collection's &#x2A;*⋯** menu changes the title, description, image and alt text, in the same draft as your changes to its quests and their order. Publishing shows them to members. An image can be an HTTPS address, or a path beginning with `/` that your app serves.

Your developer can also set these in code. A later deployment replaces the details they set there; details they left out keep your values.

> [!DEV]
> Declare optional presentation in `relay.json`, as below. A later deployment replaces fields explicitly authored there; omitted optional fields retain the current values.
>
> `GET /v1/me/experience` and `relay.quests.experience()` return collection presentation next to `title`. The collection's `quests` array follows the published Console placement order and leaves out archived quests. React's `useExperience().data.collections` and `questGroups()` retain the same fields and order.

```json
{
  "collections": [
    {
      "key": "getting-started",
      "title": "Getting started",
      "description": "A few activities to get familiar with the community.",
      "image": "/images/getting-started.png",
      "imageAlt": "The workshop entrance"
    }
  ]
}
```

## Arrangement and eligibility [#arrangement-and-eligibility]

A collection only arranges quests; it doesn't decide who can take part:

| To…                                                    | Use                                                                            |
| ------------------------------------------------------ | ------------------------------------------------------------------------------ |
| Show quests together in order                          | A collection. Its order does not enforce a sequence.                           |
| Require one quest to be finished before another starts | A [prerequisite](/docs/concepts/quests#who-can-take-part) on the second quest. |
| Stop new tries                                         | Pause the quest. Removing it from a collection does not pause it.              |

A quest without a collection still exists; whether members see it depends on your app. Quests that run on their own don't need a claim button.

## Where next [#where-next]

- [Arrange collections](/docs/use/quests#arrange-collections) — Arrange and edit collections in Console.
- [Compose a campaign](/docs/composition) — Dependencies between quests.
