Overview
The Convex database schema defines the structure of your application’s data. It includes tables for users, messages, presence tracking, and file uploads.Schema Definition
Location:convex/schema.ts:6
Tables
users
Stores user profile information with authentication support. Location:convex/schema.ts:10
Fields
User’s display name
User’s email address
URL to user’s profile image
Timestamp when email was verified
Whether this is an anonymous user account
Indexes
by_email- Index on[email]field for email lookupsby_anonymous- Index on[isAnonymous]field for filtering anonymous users
Example
messages
Stores chat messages for realtime chat functionality. Supports both authenticated and demo mode. Location:convex/schema.ts:21
Fields
Identifier for the chat room
Reference to the user who sent the message. Optional for demo mode.
Message text content
Display name of the message sender
Session identifier for tracking demo sessions
Indexes
by_room- Index on[roomId]field for efficient room-based queries
Example
presence
Tracks real-time user presence for features like cursors and avatar stacks. Location:convex/schema.ts:31
Fields
Identifier for the room/space
Reference to the user. Optional for demo mode.
Session identifier for tracking demo sessions
Presence data object containing user state
Cursor position coordinates
Position coordinates (alias for cursor)
User status text
User’s display name
URL to user’s avatar image
Color code for user’s cursor/avatar
Alternative name field
Timestamp of last presence update
Indexes
by_room- Index on[roomId]for room-based queriesby_user_and_room- Index on[userId, roomId]for user-specific presence lookupsby_session_and_room- Index on[sessionId, roomId]for session-based presence lookupsby_last_seen- Index on[lastSeen]for cleanup of stale presence entries
Example
files
Tracks file uploads with references to Convex storage. Location:convex/schema.ts:52
Fields
Reference to the file in Convex storage
Reference to the user who uploaded the file. Optional for demo mode.
Session identifier for tracking demo uploads
Original filename
MIME type of the file
File size in bytes
Indexes
by_user- Index on[userId]for user-specific file queriesby_session- Index on[sessionId]for session-based file queries
Example
Auth Tables
The schema also includes authentication tables from@convex-dev/auth/server: