Dee Wan and Strapi
A factual comparison for teams moving from Strapi. Dee Wan’s column describes what the code does today, as listed in the capability matrix and the 1.0 product boundary. Strapi’s column quotes the Strapi 5 documentation at docs.strapi.io, read on 2026-09-23. It was not tested against a running Strapi. Where the documentation is silent, the cell says so.
Dee Wan imports from Strapi v4 and v5 (see Import and migration). It is not a Strapi replacement feature for feature, and the rows below include what Dee Wan does not do.
Content model
Section titled “Content model”| Topic | Dee Wan | Strapi 5 (documentation) |
|---|---|---|
| Single types | A model can be a single-entry model: one entry with its languages, counting Trash. A Strapi single type imports as one. | “Single types: content-types that can only manage one entry.” (Content-type Builder) |
| Components and dynamic zones | Site-owned components, nested up to 3 levels. A component field holds one component or a list; a field allowing several components is an ordered block list. Strapi components import as components of the site (shared.seo becomes shared-seo), dynamic zones as block lists. |
Components, repeatable components and dynamic zones. (Content-type Builder) |
| Relation kinds | One-to-one, many-to-one, one-to-many and many-to-many. In one-to-one each target is linked from at most one item. In one-to-many each linked item belongs to one owner; standalone generation emits it as an owned list with a unique target. Component fields do not offer one-to-many. | One way, one-to-one, one-to-many, many-to-one, many-to-many, many way. (Content-type Builder) |
| Relation writes | Replace the ordered list, or connect / disconnect single items. Each changed list is checked for target model, site, visibility to the writer, duplicates and to-one cardinality. connect items may carry a position (before or after an id, or start or end), and a move list repositions items already related. Applied in order: disconnect, connect, move. |
connect, disconnect, set, with positional before, after, start, end on connect. (REST API: relations) |
| Field validation | Editor and server share type, structure, bounds, uniqueness and reference checks. Drafts may omit required values by default; optional strict mode requires completeness on Save. Publication checks the exact snapshot, including required values. Private fields stay out of public reads. | Required, unique, private, minimum and maximum length, regular expression. (Content-type Builder) |
| Deletion behaviour of relations | Fixed: relation rows go when either entry is deleted for good. Trash keeps them. The other entry stays. No per-field setting. | Not described on the pages read. |
Editorial work
Section titled “Editorial work”| Topic | Dee Wan | Strapi 5 (documentation) |
|---|---|---|
| Review workflow | Optional review mode, named model workflows, approval stages and transition permissions. Version- and language-bound field threads support replies, user/team mentions and resolve/reopen. | Review Workflows: “This feature is available with an Enterprise plan.” |
| Assignment | Whole-entry assignment plus independent locale owners and due dates. Required editorial tasks must be completed against the affected version before publication; unrelated-language changes preserve locale approval. In-admin notifications cover assignments and review; email is optional. Imports stay quiet unless notifications are selected. See feedback and notifications. | “Entries of a review workflow content type can be assigned to any admin user in Strapi for review.” Notifications are not mentioned. (Enterprise) |
| Bulk actions | Explicit-row actions handle up to 25 items. Select all matching handles up to 5,000 across pages, with exclusions, in steps of at most 25. Move, publish/unpublish by override, Trash and scalar-field editing; restore/delete in Trash use explicit rows. Access and revisions are rechecked per item; progress resumes and retries preserve completed effects. See change many items. | The list view has an “Enable bulk actions” setting for multiple selection. The page read does not list the actions. (Content Manager) |
| Content-list filters and saved views | One model, latest saved values including drafts: up to four conditions in AND/OR groups, three levels deep, and one sort. Native relations support filters on their configured scalar display field and sorting for single-valued, single-target relations; target access is checked. Point fields support radius, bounding-box and nearest queries. Saved views and all-matching selections use the same conditions. No arbitrary related-field queries. See filter and sort by fields. | Not compared: not on the pages read. |
| Versions | Immutable published snapshots, version history and restore. Restore can cover one language only. | Not compared: not on the pages read. |
| Topic | Dee Wan | Strapi 5 (documentation) |
|---|---|---|
| Crop and focal point | Per reference, as fractions of the image, stored beside the reference. The stored image is never changed or copied. A published version keeps its framing. A page section’s image is framed per slot. The public API returns the framing. A generated site and the managed renderer serve resized, cropped copies (srcset) through Cloudflare Image Transformations on media hosts the owner declares, and the original with CSS framing elsewhere. Your own renderer applies the framing itself. |
Cropping edits the asset: “Click Apply to crop the original asset. The asset keeps its ID, so content already using it is updated”, or “Save as copy”. The focal point “is stored on the asset and returned by the API as a focalPoint value”. (Media Library) |
| Private files | Optional per file, in separate private storage, opened by members through five-minute links. Usable only in fields of private models; public reads carry no private bytes or address. Site copy and history transfer carry them privately. A generated application serves them only to callers its own sessions and row access allow. See private files. | Not compared: not on the pages read. |
Reading content
Section titled “Reading content”| Topic | Dee Wan | Strapi 5 (documentation) |
|---|---|---|
| Filters | Equality on text, select, boolean, number and date fields. Inclusive ranges on number and date. Relation and tag filters. Up to 10 alternatives per field, ORed; different fields ANDed. At most 4 filtered fields. expand returns up to 3 relation fields one level deep. No general $or, no text search, no filter through a relation’s own fields. |
$eq, $ne, $lt, $lte, $gt, $gte, $contains, $startsWith, $endsWith, $in, $notIn, $and, $or, $not, and deep filtering on relations’ fields. (REST API: filters) |
| Sort and fields | One sort field, sparse top-level fields. |
Sort and field selection are supported. (REST API) |
| Pagination | Cursor bound to its query. | Not compared. |
| Standalone backend | A generated backend you own (Prisma schema, migrations, routes, published content) whose API does not call Dee Wan at runtime (some website routes do; see the detachment contract). Scoped read tokens for it are issued from the CMS by model. | No equivalent on the pages read. |
What this page does not claim
Section titled “What this page does not claim”- Performance, hosting cost or scale on either side.
- Strapi behaviour beyond the quoted documentation, or plugins from the Strapi marketplace.
- Anything about Strapi versions other than 5.
Further Dee Wan source capabilities
Section titled “Further Dee Wan source capabilities”The October source adds the capabilities below. These rows make no claim about Strapi: those topics were not compared in the documentation review above. Final browser integration and live visual review of the new Dee Wan paths remain pending.
| Topic | Dee Wan | Strapi 5 (documentation) |
|---|---|---|
| Contextual choices and scopes | Relation/select choices can depend on sibling fields, user and entry context. Role document rules scope core reads and atomic writes; related API/export audit is pending. | Not compared. |
| Structured spreadsheet updates | CSV/XLSX offer Create, Update and Upsert through the reviewed Collection JSON core. Update is the default; match by stable entry ID or an eligible unique field. Structured relations, media and nested components use normal scope, validation and version checks. | Not compared. |
| Plugin extensibility | Delegated CRUD, retained versions and media operations; upgrade comparison; isolated custom plugin frames; relation/repeatable rich blocks and isolated vendor snippets. | Not compared. |
| Account and AI assistance | Verified email changes preserve the account; self-service mail reset requests; reviewed image descriptions and opt-in source-save translation replacement. | Not compared. |
| Connected migration | Bounded WordPress REST acquisition feeds existing WXR review/import. Explicit site identity/SEO replacement uses reviewed destination revision, receipts and undo. | Not compared. |
Current authoring also includes localized model, field/group, help and option labels without changing stored keys; reviewed model promotion between sites binds both definition revisions. Zoned datetimes retain a UTC instant and IANA zone, refuse nonexistent times and require an offset choice for ambiguous times. Batch AI produces editable retained proposals without saving content; cancellation keeps completed proposals. Independent future drafts retain their own snapshots and media pins without changing the ordinary draft; release start freezes the selected branch, and cumulative previews use the scheduled future state.
Unreleased / pre-MVP; no stable version
Source revision: fe23db481c422b40e317b92fc98116b4c0c26a87 (modified checkout)
Build date (UTC): 2026-10-18T09:22:34.630Z
Upgrade target: unavailable: modified checkout. Release notes