[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:211](https://github.com/evoluhq/evolu/blob/ecbac001e0c18bbc45b44715f49ecc3a768c5ec9/packages/common/src/local-first/Schema.ts#L211)

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:218](https://github.com/evoluhq/evolu/blob/ecbac001e0c18bbc45b44715f49ecc3a768c5ec9/packages/common/src/local-first/Schema.ts#L218) |
| `project.id`                            | [`TableId`](https://evolu.dev/docs/api-reference/common/Type/interfaces/TableId)\<`"Project"`\>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | `TestProjectId`            | [packages/common/src/local-first/Schema.ts:219](https://github.com/evoluhq/evolu/blob/ecbac001e0c18bbc45b44715f49ecc3a768c5ec9/packages/common/src/local-first/Schema.ts#L219) |
| `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:220](https://github.com/evoluhq/evolu/blob/ecbac001e0c18bbc45b44715f49ecc3a768c5ec9/packages/common/src/local-first/Schema.ts#L220) |
| <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:212](https://github.com/evoluhq/evolu/blob/ecbac001e0c18bbc45b44715f49ecc3a768c5ec9/packages/common/src/local-first/Schema.ts#L212) |
| `todo.id`                               | [`TableId`](https://evolu.dev/docs/api-reference/common/Type/interfaces/TableId)\<`"Todo"`\>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | `TestTodoId`               | [packages/common/src/local-first/Schema.ts:213](https://github.com/evoluhq/evolu/blob/ecbac001e0c18bbc45b44715f49ecc3a768c5ec9/packages/common/src/local-first/Schema.ts#L213) |
| `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:215](https://github.com/evoluhq/evolu/blob/ecbac001e0c18bbc45b44715f49ecc3a768c5ec9/packages/common/src/local-first/Schema.ts#L215) |
| `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:216](https://github.com/evoluhq/evolu/blob/ecbac001e0c18bbc45b44715f49ecc3a768c5ec9/packages/common/src/local-first/Schema.ts#L216) |
| `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:214](https://github.com/evoluhq/evolu/blob/ecbac001e0c18bbc45b44715f49ecc3a768c5ec9/packages/common/src/local-first/Schema.ts#L214) |