Schemas/Task Management
DRAFT 2020-12
SYSTEM BLUEPRINT / 001

Task management,
structured.

A considered blueprint for the people, work, and connections that make a task management system tick.

SYSTEM AT A GLANCE
Users1 person
1 : N
Tasksmany tasks
One-to-many relationship
02
Core entities
08
Defined fields
01
Relationship
01 / DATA MODEL

Meet the entities.

The essential building blocks, defined field by field.

All fields required
ENTITY 01

Users

The people who own and complete work.

3 fields
Users entity fields and data types
FieldTypeRequiredDescription
idstring · uuid YesUnique identifier for the user.
namestring YesDisplay name of the user.
emailstring · email YesEmail address of the user.
ENTITY 02

Tasks

The individual pieces of work to be tracked.

5 fields
Tasks entity fields and data types
FieldTypeRequiredDescription
idstring · uuid YesUnique identifier for the task.
titlestring YesShort, descriptive name of the task.
descriptionstring YesDetails of the work to be completed.
statusstring · enum YesOne of: todo, in_progress, done.
assigned_to_user_idstring · uuid YesReferences the id of the assigned user.
02 / CONNECTIONS

How it all connects.

A simple link that gives every task an owner.

RELATIONSHIP / 1:N

One user. Many tasks.

Each task is assigned to exactly one user. A user can have zero or many tasks assigned to them.

PARENT / PRIMARY KEY
users.id
references
CHILD / FOREIGN KEY
tasks.assigned_to_user_id

JSON Schema validates structure, not whether referenced user IDs exist or IDs are unique. Enforce referential integrity and uniqueness in your application or database.

03 / DOCUMENTATION

Markdown, ready to share.

Structured tables for Users, Tasks, and their relationship.

Copy-and-paste friendly
task-management.md
Markdown · Ready to paste
# Task Management System — Schema

## Entities

### Users
| Field | Type | Required | Description |
| :--- | :--- | :---: | :--- |
| `id` | string · uuid | Yes | Unique identifier for the user. |
| `name` | string | Yes | Display name of the user. |
| `email` | string · email | Yes | Email address of the user. |

### Tasks
| Field | Type | Required | Description |
| :--- | :--- | :---: | :--- |
| `id` | string · uuid | Yes | Unique identifier for the task. |
| `title` | string | Yes | Short, descriptive name of the task. |
| `description` | string | Yes | Details of the work to be completed. |
| `status` | string · enum | Yes | One of: todo, in_progress, done. |
| `assigned_to_user_id` | string · uuid | Yes | References the id of the assigned user. |

## Relationship

| From | To | Cardinality | Key mapping | Rule |
| :--- | :--- | :--- | :--- | :--- |
| Users | Tasks | One-to-many (1:N) | `tasks.assigned_to_user_id` → `users.id` | Each task is assigned to exactly one user; a user can have zero or many tasks. |

> JSON Schema validates document structure. Uniqueness of IDs and whether an assigned user exists must be enforced by the application or database.
27 linesUTF-8
04 / IMPLEMENTATION

The actual JSON Schema.

A reusable Draft 2020-12 definition with clear types and constraints.

Machine-readable
task-management.schema.json
JSON Schema · Draft 2020-12
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Task Management System",
  "description": "A collection of users and the tasks assigned to them.",
  "type": "object",
  "required": [
    "users",
    "tasks"
  ],
  "properties": {
    "users": {
      "type": "array",
      "description": "Users who can be assigned tasks.",
      "items": {
        "$ref": "#/$defs/User"
      }
    },
    "tasks": {
      "type": "array",
      "description": "Tasks assigned to users.",
      "items": {
        "$ref": "#/$defs/Task"
      }
    }
  },
  "additionalProperties": false,
  "$defs": {
    "User": {
      "type": "object",
      "required": [
        "id",
        "name",
        "email"
      ],
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid",
          "description": "Unique identifier for the user."
        },
        "name": {
          "type": "string",
          "minLength": 1,
          "description": "Display name of the user."
        },
        "email": {
          "type": "string",
          "format": "email",
          "description": "Email address of the user."
        }
      },
      "additionalProperties": false
    },
    "Task": {
      "type": "object",
      "required": [
        "id",
        "title",
        "description",
        "status",
        "assigned_to_user_id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid",
          "description": "Unique identifier for the task."
        },
        "title": {
          "type": "string",
          "minLength": 1,
          "description": "Short, descriptive name of the task."
        },
        "description": {
          "type": "string",
          "description": "Details of the work to be completed."
        },
        "status": {
          "type": "string",
          "enum": [
            "todo",
            "in_progress",
            "done"
          ],
          "description": "Current stage of the task."
        },
        "assigned_to_user_id": {
          "type": "string",
          "format": "uuid",
          "description": "References users[].id. Referential integrity is enforced by the application or database."
        }
      },
      "additionalProperties": false
    }
  }
}
96 linesUTF-8
Implementation note: The format keyword may be treated as an annotation by some validators. Enable format assertion if you need UUID and email format validation.
⚡Remix on GenMB