Social

Team Chat

Slack-style channels with messages. All team members can read, only authors edit their own messages.

authauthenticated-readcascade
One-click setup

Spin up this backend in one click.

We create the project, apply the schema, and drop you in the dashboard. If you’re not signed in yet, you’ll sign up first — the template applies the moment you land. Free.

Sign up takes ~30 seconds. We pay for the project creation; usage falls under your plan’s free tier.

What you get

Schema

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

team-chat.schema.json
{
  "tables": {
    "users": {
      "auth_table": true,
      "columns": {
        "display_name": "string required"
      }
    },
    "channels": {
      "columns": {
        "name": "string required unique max_length 60",
        "topic": "string max_length 200",
        "created_by": "ref users required"
      },
      "owner_field": "created_by",
      "access": {
        "read": "authenticated",
        "create": "authenticated",
        "update": "owner",
        "delete": "owner"
      }
    },
    "messages": {
      "columns": {
        "channel_id": "ref channels required cascade",
        "body": "text required max_length 4000",
        "user_id": "ref users required"
      },
      "owner_field": "user_id",
      "access": {
        "read": "authenticated",
        "create": "authenticated",
        "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/channels                  list/filter/sort/paginate
GET    /api/channels/{id}             read one
POST   /api/channels                  create
PATCH  /api/channels/{id}             partial update
DELETE /api/channels/{id}             delete
POST   /api/channels/bulk             atomic bulk insert

GET    /api/messages                  list/filter/sort/paginate
GET    /api/messages/{id}             read one
POST   /api/messages                  create
PATCH  /api/messages/{id}             partial update
DELETE /api/messages/{id}             delete
POST   /api/messages/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.

Prefer to wire it up by hand instead of the one-click button up top? The options below apply the same schema manually — pick whichever fits your workflow.

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":"team-chat"}'

# 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 @team-chat.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 required"
                }
            },
            "channels": {
                "columns": {
                    "name": "string required unique max_length 60",
                    "topic": "string max_length 200",
                    "created_by": "ref users required"
                },
                "owner_field": "created_by",
                "access": {
                    "read": "authenticated",
                    "create": "authenticated",
                    "update": "owner",
                    "delete": "owner"
                }
            },
            "messages": {
                "columns": {
                    "channel_id": "ref channels required cascade",
                    "body": "text required max_length 4000",
                    "user_id": "ref users required"
                },
                "owner_field": "user_id",
                "access": {
                    "read": "authenticated",
                    "create": "authenticated",
                    "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 "Team Chat" template — users, channels (auth-read, owner-managed), messages (cascade on channel delete, owner-scoped writes).

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

Productivity

Todo App

Personal tasks with priorities (low/medium/high), due dates, done toggle. Each user sees only their own todos.

Content

Blog with Comments

Posts with slugs, cover images, and threaded comments. Public reading, only authors can edit their own content.

Productivity

Habit Tracker

Users create habits with frequency and color, log daily completions (one per day enforced), track streaks.

Copied to clipboard