Productivity

Todo App

Classic personal task list with auth, owner-scoped writes, and priority enums.

authowner-scopedenums

What you get

Schema

Copy and apply with PUT /v1/schema or set_schema via MCP. MoonDB auto-creates 2 tables: users, todos.

todo.schema.json
{
  "tables": {
    "users": {
      "auth_table": true,
      "columns": {
        "display_name": "string"
      }
    },
    "todos": {
      "columns": {
        "title": "string required max_length 200",
        "done": "bool default false",
        "due_date": "date",
        "priority": {
          "type": "enum",
          "values": [
            "low",
            "medium",
            "high"
          ],
          "default": "medium"
        },
        "user_id": "ref users required"
      },
      "owner_field": "user_id",
      "access": {
        "read": "owner",
        "create": "auth",
        "update": "owner",
        "delete": "owner"
      }
    }
  }
}

Auto-generated endpoints

The moment the schema applies, this REST surface is live (replace {project_id} with the id returned by POST /v1/projects):

live endpoints
GET    /api/users                  list/filter/sort/paginate
GET    /api/users/{id}             read one
POST   /api/users                  create
PATCH  /api/users/{id}             partial update
DELETE /api/users/{id}             delete
POST   /api/users/bulk             atomic bulk insert
POST   /auth/signup                 (from this auth_table)
POST   /auth/login                  (from this auth_table)
GET    /auth/me                     Bearer {token}

GET    /api/todos                  list/filter/sort/paginate
GET    /api/todos/{id}             read one
POST   /api/todos                  create
PATCH  /api/todos/{id}             partial update
DELETE /api/todos/{id}             delete
POST   /api/todos/bulk             atomic bulk insert

Plus auto-generated /v1/openapi.json (OpenAPI 3.0.3) and /v1/llm-context (machine-readable agent reference) for any client generator or coding agent.

Apply via REST

terminal
# 1. create the project
curl -X POST https://api.moondb.ai/v1/projects \
  -H "X-API-Key: mk_..." \
  -H "Content-Type: application/json" \
  -d '{"name":"todo"}'

# 2. apply the template schema
curl -X PUT https://api.moondb.ai/p/{project_id}/v1/schema \
  -H "X-Admin-Key: sk_..." \
  -H "Content-Type: application/json" \
  -d @todo.schema.json

Apply via MCP

If your agent has the MoonDB MCP server installed (see install), one tool call applies the template:

tools/call set_schema
# call set_schema via MCP (Cursor, Claude Code, Windsurf)
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": { "name": "set_schema", "arguments": {
    "project_id": "...",
    "schema": {
        "tables": {
            "users": {
                "auth_table": true,
                "columns": {
                    "display_name": "string"
                }
            },
            "todos": {
                "columns": {
                    "title": "string required max_length 200",
                    "done": "bool default false",
                    "due_date": "date",
                    "priority": {
                        "type": "enum",
                        "values": [
                            "low",
                            "medium",
                            "high"
                        ],
                        "default": "medium"
                    },
                    "user_id": "ref users required"
                },
                "owner_field": "user_id",
                "access": {
                    "read": "owner",
                    "create": "auth",
                    "update": "owner",
                    "delete": "owner"
                }
            }
        }
    }
  } } }

Prompt your agent

Or just paste this one-liner into Cursor / Claude Code / Lovable after the MoonDB prompt is in .cursorrules / CLAUDE.md:

prompt
Apply the MoonDB "Todo App" template — users (auth_table) + todos with title, done, due_date, priority enum, owner-scoped.

Extending the template

Send the full updated schema (with your additions) to PUT /v1/schema — MoonDB diffs against the current version and auto-migrates. Destructive changes (dropping columns, narrowing enums, renaming) require "confirm_destructive": true in the body. Read more about schema updates →

Ship this in 30 seconds

Sign up free, create a project, paste the schema. The API is live before your kettle boils.

Get an API key

Related templates

Content

Blog with Comments

Public-read posts and comments, authenticated authors, owner-scoped edits.

Productivity

Habit Tracker

Daily habits with composite-unique logs (one entry per habit per day).

Productivity

Bookmarks Manager

Single-table demo with JSON tags and per-user privacy.

Copied to clipboard