Plugin Development: Best practices

System Information
  • Strapi Version: 4,5,2
  • Database: Postgres v13
  • Node Version: 16.17.0
  • Yarn Version: 1.22.19

When developing new plugins,

  • How do we start using components from Strapi design system? If we directly import a component, IDE will keep throwing error that the module @strapi/design-system is not installed. Strapi uses react-router-dom (similar to above question). How do we import and use this since this is also a part of the Strapi’s codebase. Should we install this module again?
  • Which component has the out-of-the-box rich text editor? I want to use the WYSIWYG editor that is a part of Strapi’s defaults on new pages I’m adding in my plugin.
  • When developing plugins (admin panel frontend+backend functionality), can I use APIs that are used by Strapi’s default admin UI - APIs starting with “/content-manager/collection-types/api::some-table.some-table”? Further, if I use the end user APIs starting with “/api/”, then how do I authenticate since the users-permissions plugin is a separate authentication plugin that is not related to the admin authentication (my limited understanding, could be incorrect)? Or, should all APIs be custom APIs?
  • Are there specific resources demonstrating some end-to-end plugin development cycle involving such aspects wrt queries above?

@DMehaffy Your inputs are valuable.