!!! Как организовать структуру сложного проекта?
Добавлено: 2019.02.19, 02:51
Всем привет! Начал проектировать сложный проект. Прошу помощи совета, чтобы в будущем не пришлось все перестраивать и ломать.
Сначала начал думать как организовать несколько профилей:
1. Профиль танцора.
2. Профиль тренера танцоров.
3. Профиль администратора студии.
4. Профиль руководителя студии.
5. Профиль судьи.
6. Профиль организатора мероприятий.
Разработка будет на Yii используя модульную структуру.
Первое, что в голову пришло - это повесить все на две Таблицы user и profile, так как различие между профилями будет не большое. В 1-4 поля. Далее сценариями Yii и Моделями Форм осуществлять работу с этими таблицами. Все это будет объединено в одном модуле user. Разделение профилей осуществляется по полю role.
Второе, что пришло в голову это использовать под каждый профиль отдельную таблицу dancer, judge, admin... Но использовать одну таблицу user где будет хранится информация с логинами и паролями. Здесь можно попробовать вынести отдельные модули на танцора, судью, админа... Однако при этом будет слабая связь с модулем user.
Третье - это полностью самодостаточные модули со своими данными авторизации.
Мне кажется, что удобнее проектировать все в одном модуле, как описано в первом случае. Однако, подумав ещё понял, что сам проект, скорее всего, будет разнесен на несколько приложений, что, скорее всего, будет иметь разные базы данных:
1. Студия танцев (функционал по работе со студией, в основном с сайтом, рейтингом. Учет будет в отдельной CRM системой)
2. Организация мероприятий (функционал по работе с мероприятиями: назначения судей, регистрация участников как из студии так и других, управление регистрацией...)
3. Приложение для работы на мероприятии (счетная)
Все данные профилей использоваться и пересекаться не только с модулями внутри приложения, но и между приложениями. Вижу в этом один способ — через api.
Но ещё хотелось бы данные авторизации: логин, пароль, токен хранить в одном месте...
Понимаю, проект сложный. Возможно придётся подключить других разработчиков Yii, но начинать буду один, возможно, после выхода Yii3. А сейчас важно заложить правильный путь и начать разрабатывать малоотвественные модули.
Если все пойдёт хорошо, то в системе будет от 100 000 человек. Но начнём с малого.
Так же планируется интеграция с действующей CRM системой имеющая уже 200 школ Россиии СНГ, которую использую сам. И одной из самых больших организаций в России. Сейчас уже есть действующая версия по работе с судьями России на базе этой организации реализованная мной.
Теперь самый непонятные для меня вопросы это: Как все связать? Как правильно выстроить? Как устраивать взаимосвязи между данными? Какую структуру использовать? В общем таких вопросом пока много.
Если не вдаваться в подробности, то структуру проекта вижу так:
1. Управление студией (админка, фронт)
- модуль пользователей
- подключаемый модуль рейтингов
- дополнительный модуль для своих нужд.
2. Организация мероприятий (админка, фронт)
- модуль пользователей
- модуль мероприятий
- модуль аттестации судей
- модуль рейтинга
3. Счетная система (админка)
По модульности не думал, скорее всего просто будет принимать данные и считать. На первом этапе возможно будет интегрирована с действующей программой.
Админка и фронт будут внедряться в сам модуль:
Controllers
Backend
Frontend
....
Module.php
Ещё один нюанс, что модули возможно придётся менять со временем или от разных проектов. То есть все модули должны быть менее зависимы. Тут я думаю использовать DI + интерфейсы
Возможно, что не сможете помочь из-за большого непонимания деталей, но буду рад абсолютно любому высказыванию, наставлениями и советам по теме))
P.S. Если вопрос требует других тегов тостера или вы считаете его не правильно написанном - прошу предлагать правки вопроса. Если я что-то не понятно описал, пожалуйста, задайте свои уточняющие вопросы в комментариях.
Сначала начал думать как организовать несколько профилей:
1. Профиль танцора.
2. Профиль тренера танцоров.
3. Профиль администратора студии.
4. Профиль руководителя студии.
5. Профиль судьи.
6. Профиль организатора мероприятий.
Разработка будет на Yii используя модульную структуру.
Первое, что в голову пришло - это повесить все на две Таблицы user и profile, так как различие между профилями будет не большое. В 1-4 поля. Далее сценариями Yii и Моделями Форм осуществлять работу с этими таблицами. Все это будет объединено в одном модуле user. Разделение профилей осуществляется по полю role.
Второе, что пришло в голову это использовать под каждый профиль отдельную таблицу dancer, judge, admin... Но использовать одну таблицу user где будет хранится информация с логинами и паролями. Здесь можно попробовать вынести отдельные модули на танцора, судью, админа... Однако при этом будет слабая связь с модулем user.
Третье - это полностью самодостаточные модули со своими данными авторизации.
Мне кажется, что удобнее проектировать все в одном модуле, как описано в первом случае. Однако, подумав ещё понял, что сам проект, скорее всего, будет разнесен на несколько приложений, что, скорее всего, будет иметь разные базы данных:
1. Студия танцев (функционал по работе со студией, в основном с сайтом, рейтингом. Учет будет в отдельной CRM системой)
2. Организация мероприятий (функционал по работе с мероприятиями: назначения судей, регистрация участников как из студии так и других, управление регистрацией...)
3. Приложение для работы на мероприятии (счетная)
Все данные профилей использоваться и пересекаться не только с модулями внутри приложения, но и между приложениями. Вижу в этом один способ — через api.
Но ещё хотелось бы данные авторизации: логин, пароль, токен хранить в одном месте...
Понимаю, проект сложный. Возможно придётся подключить других разработчиков Yii, но начинать буду один, возможно, после выхода Yii3. А сейчас важно заложить правильный путь и начать разрабатывать малоотвественные модули.
Если все пойдёт хорошо, то в системе будет от 100 000 человек. Но начнём с малого.
Так же планируется интеграция с действующей CRM системой имеющая уже 200 школ Россиии СНГ, которую использую сам. И одной из самых больших организаций в России. Сейчас уже есть действующая версия по работе с судьями России на базе этой организации реализованная мной.
Теперь самый непонятные для меня вопросы это: Как все связать? Как правильно выстроить? Как устраивать взаимосвязи между данными? Какую структуру использовать? В общем таких вопросом пока много.
Если не вдаваться в подробности, то структуру проекта вижу так:
1. Управление студией (админка, фронт)
- модуль пользователей
- подключаемый модуль рейтингов
- дополнительный модуль для своих нужд.
2. Организация мероприятий (админка, фронт)
- модуль пользователей
- модуль мероприятий
- модуль аттестации судей
- модуль рейтинга
3. Счетная система (админка)
По модульности не думал, скорее всего просто будет принимать данные и считать. На первом этапе возможно будет интегрирована с действующей программой.
Админка и фронт будут внедряться в сам модуль:
Controllers
Backend
Frontend
....
Module.php
Ещё один нюанс, что модули возможно придётся менять со временем или от разных проектов. То есть все модули должны быть менее зависимы. Тут я думаю использовать DI + интерфейсы
Возможно, что не сможете помочь из-за большого непонимания деталей, но буду рад абсолютно любому высказыванию, наставлениями и советам по теме))
P.S. Если вопрос требует других тегов тостера или вы считаете его не правильно написанном - прошу предлагать правки вопроса. Если я что-то не понятно описал, пожалуйста, задайте свои уточняющие вопросы в комментариях.