1. Как организовать миграции или импорт необходимых таблиц?
стандартно. Кладете миграции в module/migrations, в ридми указываете команду для миграции с --migrationPath
2. Как предотвратить пересечения таблиц в БД?
указывайте названия таблиц в таком виде
public function tableName()
{
return '{{%moduleName_tableName}}';
}
где moduleName - название вашего модуля
3. Как создать модуль, у которого есть и backend и frontend часть?
Холиварный достаточно вопрос. Мое мнение, что разбивать на две части контроллеры не нужно. Нужно необходимые экшны разбить по функционалу в разные контроллеры, а уже эти контроллеры разработчик будет унаследовать в своем проекте в нужных местах.
Если приведете конкретный пример, получите конкретное применение.
4. Как это сделать наиболее прозрачно для разработчика, который внедряет данный продукт?
см. п. 3. Опишите все в ридми.