Higher Quality, Stronger Performance, Increased Stability, Better Developer Experience, discover everything we've shipped recently!

Strapi plugin logo for Content Manager Organizer

Content Manager Organizer

Group Strapi Content Manager collection types into collapsible sidebar sections

thumbnail for Content Manager Organizer

strapi-plugin-content-manager-organizer

npm version npm downloads Strapi version License: MIT GitHub stars

A Strapi v5 plugin that lets you organize the Content Manager sidebar into collapsible, labeled groups — configured entirely through a visual Settings UI with no code changes required.

Content Manager Organizer Demo


🎯 Why Content Manager Organizer?

When your Strapi project grows to 20, 30, or 50+ content types, the default sidebar becomes a long, unmanageable list. Content Manager Organizer solves this by letting you:

ProblemSolution
50+ content types in one listGroup into logical sections
Alphabetical order not usefulCustom ordering within groups
Can't find content types fastCollapse irrelevant groups
Numeric prefixes cluttering namesAuto-strip numeric prefixes
Config lost on redeploySaved to database

✨ Features

  • 📁 Group content types into named, collapsible sections
  • 🔢 Custom ordering — drag items up/down within groups
  • 🔍 Strip numeric prefixes — hide 01 Product → show Product
  • 💾 Persisted to database — survives redeploys (SQLite, PostgreSQL, MySQL)
  • 🌙 Dark/Light theme — auto-detects Strapi theme
  • Accessible — ARIA attributes on all interactive elements
  • Zero config required — works out of the box
  • 🎛️ Visual Settings UI — no code changes needed

📸 Screenshots

Organized Sidebar

Organized sidebar with groups

Settings Page

Settings page


🚀 Installation

npm

npm install strapi-plugin-content-manager-organizer

yarn

yarn add strapi-plugin-content-manager-organizer

pnpm

pnpm add strapi-plugin-content-manager-organizer

⚙️ Setup

Step 1 — Enable the plugin

Add to your config/plugins.ts (or config/plugins.js):

// config/plugins.ts
export default () => ({
  'content-manager-organizer': {
    enabled: true,
  },
});

Step 2 — Rebuild Strapi admin

npm run build
npm run develop

Step 3 — Configure via UI

  1. Open Strapi admin
  2. Go to ⚙️ SettingsContent Manager Organizer
  3. Click Add group
  4. Name the group (e.g., Products)
  5. Add content types from the Ungrouped panel
  6. Click Save

The sidebar updates immediately — no restart needed!


🎛️ How It Works

┌─────────────────────────────────────────────────┐
│  First launch (no config in DB)                 │
│  → Shows default Strapi sidebar order           │
└──────────────────────┬──────────────────────────┘


┌─────────────────────────────────────────────────┐
│  User configures via Settings > Content Manager Organizer  │
│  → Config saved to database                     │
└──────────────────────┬──────────────────────────┘


┌─────────────────────────────────────────────────┐
│  Every subsequent visit                         │
│  → DB config loaded → grouped sidebar shown     │
│  → Survives redeploys ✓                         │
└─────────────────────────────────────────────────┘

Database Storage

The plugin creates a hidden content type content-manager-configuration that stores your config as JSON. It's hidden from the Content Manager and Content-Type Builder — you'll never accidentally see it.

plugin::content-manager-organizer.content-manager-configuration
├── key: "main"          (always "main", one record)
└── config: { ... }      (your full group config as JSON)

Supported Databases

DatabaseSupported
SQLite✅ Yes
PostgreSQL✅ Yes
MySQL✅ Yes
MariaDB✅ Yes

📋 Settings Page Reference

Groups Panel

ControlDescription
Group name inputRename the group
↑ ↓ arrowsReorder groups
🗑️ trashDelete group
Expanded by defaultWhether group starts open
↑ ↓ on itemsReorder items within group
🗑️ on itemsRemove item from group
Add content typeDropdown of ungrouped types

Ungrouped Panel

Shows all content types not yet assigned to any group. These still appear in the sidebar under an "Other" group at the bottom.

Strip Numeric Prefixes

When enabled, removes leading numbers from display names:

Before: "01 Product"After: "Product"
Before: "10 Asset Tag"After: "Asset Tag"

Useful if you prefix content types for Strapi's default ordering.


🔐 Permissions

The plugin registers two permissions under Plugins → Content Manager Organizer:

PermissionDescription
settings.readView the settings page
settings.updateSave configuration changes

Assign these in Settings → Roles to control who can configure the plugin.


🔄 Config Lifecycle

Admin visits Content Manager


Plugin fetches config from API

    ┌────┴────┐
DB has   │ Yes → Use DB config → Group sidebar
    │config?
    └────┬────┘
         │ No

Use empty default → Show normal Strapi sidebar


Admin goes to Settings → Content Manager Organizer


Creates groups, assigns content types, saves


Config saved to DB → Sidebar updates instantly


Next time any admin visits → DB config used ✓

🛠️ Advanced: Pre-seeding Config via Code

If you want to ship a default config for your team (without UI configuration), you can seed the database on bootstrap:

// src/index.ts (your Strapi project, not the plugin)
export default {
  async bootstrap({ strapi }) {
    // Only seed if no config exists
    const existing = await strapi.db
      .query('plugin::content-manager-organizer.content-manager-configuration')
      .findOne({ where: { key: 'main' } });

    if (!existing) {
      await strapi.db
        .query('plugin::content-manager-organizer.content-manager-configuration')
        .create({
          data: {
            key: 'main',
            config: {
              stripNumericPrefix: true,
              groups: [
                {
                  id: 'products',
                  label: 'Products',
                  defaultExpanded: true,
                  items: ['product', 'category'],
                },
                {
                  id: 'blog',
                  label: 'Blog',
                  defaultExpanded: false,
                  items: ['article', 'tag', 'author'],
                },
              ],
            },
          },
        });
    }
  },
};

🤝 Contributing

We welcome contributions! See CONTRIBUTING.md for details.

Quick Start for Contributors

# 1. Fork & clone
git clone https://github.com/yourusername/strapi-plugin-content-manager-organizer
cd strapi-plugin-content-manager-organizer

# 2. Install dependencies
npm install

# 3. Link to your Strapi project for development
npm run watch:link

# In your Strapi project:
npm run develop

Roadmap / Good First Issues

We’re incredibly proud of how Content Manager Organizer has simplified the Strapi Content Manager experience so far, but we’re far more excited by the features and enhancements that lie ahead.

  • 🖱️ Drag & drop reordering (instead of arrows)
  • 🎨 Custom color per group
  • 🔍 Search bar in Settings page
  • 📤 Export/Import config as JSON
  • 🌍 i18n translations
  • 📱 Better mobile responsive settings

📝 Changelog

See CHANGELOG.md


📄 License

MIT © Your Name


🙏 Acknowledgements

Built with Strapi Plugin SDK and Strapi Design System.

Install now

npm install strapi-plugin-content-manager-organizer

STATS

1 GitHub star144 weekly downloads

Last updated

3 days ago

Strapi Version

5.46.0 and above

Author

github profile image for Chetan Hasarmani
Chetan Hasarmani

Useful links

Create your own plugin

Check out the available plugin resources that will help you to develop your plugin or provider and get it listed on the marketplace.