# app.thatsit.typing.progress

> Per-key practice totals for one board+keymap pair. Additive: two devices merge by summing samples.

- Kind: record
- Record key: tid
- Authority: typing.thatsit.app
- Lexicon: 1
- Published by [thatsit.dev](https://lexicon.garden/identity/did:plc:tr7zlhacx3fete5s7cx5tyjd), the NSID's authority

## Links

- [Documentation](https://lexicon.garden/lexicon/did:plc:tr7zlhacx3fete5s7cx5tyjd/app.thatsit.typing.progress)
- [Schema JSON](https://lexicon.garden/lexicon/did:plc:tr7zlhacx3fete5s7cx5tyjd/app.thatsit.typing.progress/schema.json)
- [Analytics](https://lexicon.garden/lexicon/did:plc:tr7zlhacx3fete5s7cx5tyjd/app.thatsit.typing.progress/analytics)

## Record (`app.thatsit.typing.progress`)

Type: record · key tid

### Properties

- `layout` (string, required)
  - Constraints: maxGraphemes: 100
- `stats` (ref, required)
  - Reference: `app.thatsit.typing.defs#keyStats`
- `updatedAt` (integer, required)

## Schema

```json
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "Per-key practice totals for one board+keymap pair. Additive: two devices merge by summing samples.",
      "key": "tid",
      "record": {
        "properties": {
          "layout": {
            "maxGraphemes": 100,
            "type": "string"
          },
          "stats": {
            "ref": "app.thatsit.typing.defs#keyStats",
            "type": "ref"
          },
          "updatedAt": {
            "type": "integer"
          }
        },
        "required": [
          "layout",
          "stats",
          "updatedAt"
        ],
        "type": "object"
      },
      "type": "record"
    }
  },
  "id": "app.thatsit.typing.progress",
  "lexicon": 1
}
```
