Features

Everything you need, built in.

No third-party services required. Just features that work. Code-first or visual, your choice.

01

Rich Text Editor

Lexical-powered editor with formatting, lists, tables, code blocks, and inline toolbars. Define richText fields in your collections and get a polished editing experience.

LexicalInline ToolbarTablesCode BlocksFormatting
Explore rich text editor
Lexical
Getting Started with Nextly
Configure your first collection with TypeScript
Add richText fields with the Lexical adapter
import { lexicalEditor } from "@nextly/richtext-lexical"
Inline formatting, tables, code blocks, and custom nodes all supported out of the box...
02

Asset Management

Media library with folder organization, drag-and-drop upload, and pluggable storage adapters: S3-compatible, Vercel Blob, or local filesystem.

FoldersS3 StorageVercel BlobMIME ValidationDrag & Drop
Explore asset management
media/
Upload
IMAGE
hero.jpg
2.4 MB
SVG
logo.svg
12 KB
PDF
report.pdf
840 KB
IMAGE
banner.png
1.1 MB
CSV
data.csv
44 KB
VIDEO
video.mp4
18 MB
03

Database Adapters

PostgreSQL, MySQL, and SQLite, all powered by Drizzle ORM. Pick the database that fits your project and switch adapters without changing application code.

PostgreSQLMySQLSQLiteDrizzle ORMConnection Pooling
Explore database adapters
Powered by Drizzle ORM
PGPostgreSQL
MYMySQL
SQSQLite
columntypenullable
idserialNO
titletextNO
slugtextYES
createdAttimestampYES
statustextYES
04

Hooks & Lifecycle

8 collection hooks: beforeOperation, beforeValidate, beforeChange, afterChange, beforeRead, afterRead, beforeDelete, afterDelete. Transform data, enforce rules, trigger side effects.

beforeChangeafterChangebeforeDeleteafterReadWildcard *
Explore hooks & lifecycle
collections/posts.ts
hooks: {
  beforeChange: [
   async ({ data, operation }) => {
    if (data?.title) {
     return {
      ...data,
      slug: data.title.toLowerCase().replace(/\\s+/g, "-"),
     };
    }
    return data;
   },
  ],
 }
05

Reusable Components

Define reusable field groups with defineComponent() or build them visually in the admin panel. Embed single or multiple instances across any collection or single.

defineComponent()Nested SupportDynamic ZonesShared Fields
Explore reusable components
Component tree
defineComponent("SEOBlock") {
fields: [
metaTitle — text
description — textarea
ogImage — media
]
}
Posts ✓
Pages ✓
+ 4 more
06

Form Builder

First official Nextly plugin. Drag-and-drop form creation with 13 field types, submission tracking, spam protection, and email notifications.

Drag & DropSubmissionsSpam ProtectionNotifications
Explore form builder
Contact Form · 3 fields
Full Name *
John Doe
Email *
john@example.com
Message
Tell us about your project...
Submit
spam ✓
07

Email System

Send transactional and notification emails via Resend, SMTP, or SendLayer. Built-in templates with variable interpolation and database-managed providers.

ResendSMTPSendLayerTemplates
Explore email system
transactional / welcome-email.ts
from:hello@yourapp.com
to:{{user.email}}
sub:Welcome to {{app.name}}!
Resend
SMTP
SendLayer
08

Access Control

RBAC with default roles (admin, editor, viewer), field-level read/write permissions, and code-defined or database-defined access functions. Sync or async.

RBACField PermissionsOwner-OnlyPer-Collection
Explore access control
RBAC · posts collection
actionadmineditorviewer
create
read
update
delete
publish