[API reference](https://evolu.dev/docs/api-reference) › [@evolu/common](https://evolu.dev/docs/api-reference/common) › [local‑first/Schema](https://evolu.dev/docs/api-reference/common/local-first/Schema) › testEvoluSchema

```ts
const testEvoluSchema: {
  project: {
    id: TableId<"Project">;
    name: BrandType<
      BrandType<
        BrandType<
          Type<
            "String",
            string,
            string,
            TypeOfError<"String">,
            null,
            TypeOfError<"String">,
            never,
            string,
            true
          >,
          "Trimmed",
          TrimmedError
        >,
        "MinLength1",
        MinLengthError<1>
      >,
      "MaxLength100",
      MaxLengthError<100>
    >;
  };
  todo: {
    id: TableId<"Todo">;
    isCompleted: UnionType<
      readonly [
        UnionType<readonly [LiteralType<0>, LiteralType<1>]>,
        LiteralType<null>,
      ]
    >;
    projectId: UnionType<readonly [TableId<"Project">, LiteralType<null>]>;
    title: BrandType<
      BrandType<
        BrandType<
          Type<
            "String",
            string,
            string,
            TypeOfError<"String">,
            null,
            TypeOfError<"String">,
            never,
            string,
            true
          >,
          "Trimmed",
          TrimmedError
        >,
        "MinLength1",
        MinLengthError<1>
      >,
      "MaxLength100",
      MaxLengthError<100>
    >;
  };
};
```

Defined in: [packages/common/src/local-first/Schema.ts:222](https://github.com/evoluhq/evolu/blob/739817f598ad437fc989dfcac8704b4901f4a747/packages/common/src/local-first/Schema.ts#L222)

Todo and project schema for tests and examples. A todo can belong to a
project or have no project. Use an explicit schema when teaching schema
definition.

### Example

```ts
import {
  assertOk,
  testEvoluSchema,
  testProjectId,
  testTodoId,
} from "@evolu/common";

assertOk(testEvoluSchema.todo.id.from(testTodoId), testTodoId);
assertOk(testEvoluSchema.todo.projectId.from(testProjectId), testProjectId);
```

## Type Declaration

| Name                                    | Type                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | Default value              | Defined in                                                                                                                                                                     |
| --------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| <a id="property-project"></a> `project` | \{ `id`: [`TableId`](https://evolu.dev/docs/api-reference/common/Type/interfaces/TableId)\<`"Project"`\>; `name`: [`BrandType`](https://evolu.dev/docs/api-reference/common/Type/interfaces/BrandType)\<[`BrandType`](https://evolu.dev/docs/api-reference/common/Type/interfaces/BrandType)\<[`BrandType`](https://evolu.dev/docs/api-reference/common/Type/interfaces/BrandType)\<[`Type`](https://evolu.dev/docs/api-reference/common/Type/interfaces/Type)\<`"String"`, `string`, `string`, [`TypeOfError`](https://evolu.dev/docs/api-reference/common/Type/interfaces/TypeOfError)\<`"String"`\>, `null`, [`TypeOfError`](https://evolu.dev/docs/api-reference/common/Type/interfaces/TypeOfError)\<`"String"`\>, `never`, `string`, `true`\>, `"Trimmed"`, [`TrimmedError`](https://evolu.dev/docs/api-reference/common/Type/interfaces/TrimmedError)\>, `"MinLength1"`, [`MinLengthError`](https://evolu.dev/docs/api-reference/common/Type/interfaces/MinLengthError)\<`1`\>\>, `"MaxLength100"`, [`MaxLengthError`](https://evolu.dev/docs/api-reference/common/Type/interfaces/MaxLengthError)\<`100`\>\>; \}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | -                          | [packages/common/src/local-first/Schema.ts:229](https://github.com/evoluhq/evolu/blob/739817f598ad437fc989dfcac8704b4901f4a747/packages/common/src/local-first/Schema.ts#L229) |
| `project.id`                            | [`TableId`](https://evolu.dev/docs/api-reference/common/Type/interfaces/TableId)\<`"Project"`\>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | `TestProjectId`            | [packages/common/src/local-first/Schema.ts:230](https://github.com/evoluhq/evolu/blob/739817f598ad437fc989dfcac8704b4901f4a747/packages/common/src/local-first/Schema.ts#L230) |
| `project.name`                          | [`BrandType`](https://evolu.dev/docs/api-reference/common/Type/interfaces/BrandType)\<[`BrandType`](https://evolu.dev/docs/api-reference/common/Type/interfaces/BrandType)\<[`BrandType`](https://evolu.dev/docs/api-reference/common/Type/interfaces/BrandType)\<[`Type`](https://evolu.dev/docs/api-reference/common/Type/interfaces/Type)\<`"String"`, `string`, `string`, [`TypeOfError`](https://evolu.dev/docs/api-reference/common/Type/interfaces/TypeOfError)\<`"String"`\>, `null`, [`TypeOfError`](https://evolu.dev/docs/api-reference/common/Type/interfaces/TypeOfError)\<`"String"`\>, `never`, `string`, `true`\>, `"Trimmed"`, [`TrimmedError`](https://evolu.dev/docs/api-reference/common/Type/interfaces/TrimmedError)\>, `"MinLength1"`, [`MinLengthError`](https://evolu.dev/docs/api-reference/common/Type/interfaces/MinLengthError)\<`1`\>\>, `"MaxLength100"`, [`MaxLengthError`](https://evolu.dev/docs/api-reference/common/Type/interfaces/MaxLengthError)\<`100`\>\>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | `NonEmptyTrimmedString100` | [packages/common/src/local-first/Schema.ts:231](https://github.com/evoluhq/evolu/blob/739817f598ad437fc989dfcac8704b4901f4a747/packages/common/src/local-first/Schema.ts#L231) |
| <a id="property-todo"></a> `todo`       | \{ `id`: [`TableId`](https://evolu.dev/docs/api-reference/common/Type/interfaces/TableId)\<`"Todo"`\>; `isCompleted`: [`UnionType`](https://evolu.dev/docs/api-reference/common/Type/interfaces/UnionType)\<readonly \[[`UnionType`](https://evolu.dev/docs/api-reference/common/Type/interfaces/UnionType)\<readonly \[[`LiteralType`](https://evolu.dev/docs/api-reference/common/Type/interfaces/LiteralType)\<`0`\>, [`LiteralType`](https://evolu.dev/docs/api-reference/common/Type/interfaces/LiteralType)\<`1`\>\]\>, [`LiteralType`](https://evolu.dev/docs/api-reference/common/Type/interfaces/LiteralType)\<`null`\>\]\>; `projectId`: [`UnionType`](https://evolu.dev/docs/api-reference/common/Type/interfaces/UnionType)\<readonly \[[`TableId`](https://evolu.dev/docs/api-reference/common/Type/interfaces/TableId)\<`"Project"`\>, [`LiteralType`](https://evolu.dev/docs/api-reference/common/Type/interfaces/LiteralType)\<`null`\>\]\>; `title`: [`BrandType`](https://evolu.dev/docs/api-reference/common/Type/interfaces/BrandType)\<[`BrandType`](https://evolu.dev/docs/api-reference/common/Type/interfaces/BrandType)\<[`BrandType`](https://evolu.dev/docs/api-reference/common/Type/interfaces/BrandType)\<[`Type`](https://evolu.dev/docs/api-reference/common/Type/interfaces/Type)\<`"String"`, `string`, `string`, [`TypeOfError`](https://evolu.dev/docs/api-reference/common/Type/interfaces/TypeOfError)\<`"String"`\>, `null`, [`TypeOfError`](https://evolu.dev/docs/api-reference/common/Type/interfaces/TypeOfError)\<`"String"`\>, `never`, `string`, `true`\>, `"Trimmed"`, [`TrimmedError`](https://evolu.dev/docs/api-reference/common/Type/interfaces/TrimmedError)\>, `"MinLength1"`, [`MinLengthError`](https://evolu.dev/docs/api-reference/common/Type/interfaces/MinLengthError)\<`1`\>\>, `"MaxLength100"`, [`MaxLengthError`](https://evolu.dev/docs/api-reference/common/Type/interfaces/MaxLengthError)\<`100`\>\>; \} | -                          | [packages/common/src/local-first/Schema.ts:223](https://github.com/evoluhq/evolu/blob/739817f598ad437fc989dfcac8704b4901f4a747/packages/common/src/local-first/Schema.ts#L223) |
| `todo.id`                               | [`TableId`](https://evolu.dev/docs/api-reference/common/Type/interfaces/TableId)\<`"Todo"`\>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | `TestTodoId`               | [packages/common/src/local-first/Schema.ts:224](https://github.com/evoluhq/evolu/blob/739817f598ad437fc989dfcac8704b4901f4a747/packages/common/src/local-first/Schema.ts#L224) |
| `todo.isCompleted`                      | [`UnionType`](https://evolu.dev/docs/api-reference/common/Type/interfaces/UnionType)\<readonly \[[`UnionType`](https://evolu.dev/docs/api-reference/common/Type/interfaces/UnionType)\<readonly \[[`LiteralType`](https://evolu.dev/docs/api-reference/common/Type/interfaces/LiteralType)\<`0`\>, [`LiteralType`](https://evolu.dev/docs/api-reference/common/Type/interfaces/LiteralType)\<`1`\>\]\>, [`LiteralType`](https://evolu.dev/docs/api-reference/common/Type/interfaces/LiteralType)\<`null`\>\]\>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | -                          | [packages/common/src/local-first/Schema.ts:226](https://github.com/evoluhq/evolu/blob/739817f598ad437fc989dfcac8704b4901f4a747/packages/common/src/local-first/Schema.ts#L226) |
| `todo.projectId`                        | [`UnionType`](https://evolu.dev/docs/api-reference/common/Type/interfaces/UnionType)\<readonly \[[`TableId`](https://evolu.dev/docs/api-reference/common/Type/interfaces/TableId)\<`"Project"`\>, [`LiteralType`](https://evolu.dev/docs/api-reference/common/Type/interfaces/LiteralType)\<`null`\>\]\>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | -                          | [packages/common/src/local-first/Schema.ts:227](https://github.com/evoluhq/evolu/blob/739817f598ad437fc989dfcac8704b4901f4a747/packages/common/src/local-first/Schema.ts#L227) |
| `todo.title`                            | [`BrandType`](https://evolu.dev/docs/api-reference/common/Type/interfaces/BrandType)\<[`BrandType`](https://evolu.dev/docs/api-reference/common/Type/interfaces/BrandType)\<[`BrandType`](https://evolu.dev/docs/api-reference/common/Type/interfaces/BrandType)\<[`Type`](https://evolu.dev/docs/api-reference/common/Type/interfaces/Type)\<`"String"`, `string`, `string`, [`TypeOfError`](https://evolu.dev/docs/api-reference/common/Type/interfaces/TypeOfError)\<`"String"`\>, `null`, [`TypeOfError`](https://evolu.dev/docs/api-reference/common/Type/interfaces/TypeOfError)\<`"String"`\>, `never`, `string`, `true`\>, `"Trimmed"`, [`TrimmedError`](https://evolu.dev/docs/api-reference/common/Type/interfaces/TrimmedError)\>, `"MinLength1"`, [`MinLengthError`](https://evolu.dev/docs/api-reference/common/Type/interfaces/MinLengthError)\<`1`\>\>, `"MaxLength100"`, [`MaxLengthError`](https://evolu.dev/docs/api-reference/common/Type/interfaces/MaxLengthError)\<`100`\>\>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | `NonEmptyTrimmedString100` | [packages/common/src/local-first/Schema.ts:225](https://github.com/evoluhq/evolu/blob/739817f598ad437fc989dfcac8704b4901f4a747/packages/common/src/local-first/Schema.ts#L225) |