Общее описание задачи Основными задачами лабораторной работы является реализация веб приложения сходного по функционалу с всем известным ресурсом HeadHunter, для реализации всего функционала и его оттачивания потребуется не один месяц, но основную его часть вы с легкостью реализуете. Выполнение задачи будет происходить в рамках командной работы, где вы будете писать задачи как для себя так и для своего коллеги. Команды будут поделены по 3 человека, в рамках командной работы от вас потребуется создать минимум по 5 задач в трекере задач на каждого члена команды. Задачи должны быть описаны максимально подробно, чтобы спустя определенное время прочитав ее у вас не возникло вопросов.
Функционал аутентификации и разделения по ролям.
Практически любой проект включает в себя функционал аутентификации и распределение возможностей пользователя по ролям. Так в данном проекте у вас пользователи поделятся на работодателей и на соискателей с собственным функционалом, описание возможностей каждой из ролей вы найдете ниже. При регистрации пользователя ему предоставляется возможность выбрать в роли кого он регистрируется. это может быть выпадающий список или же радиобаттоны, решать вам. Форма регистрации включает в себя небольшой набор полей, такие как имя пользователя / при выборе роли компания необходимо с помощью jQuery изменять содержимое формы, в данном случае текст в label на Имя компании. Обязательными полями при регистрации также являются email , номер телефона. Фото профиля к загрузке не обязательно, но такая возможность должна быть. В случае если фото не загружено, следует устанавливать изображение по умолчанию.
Личный кабинет соискателя Личный кабинет соискателя должен включать в себя набор различного функционала : Возможность редактирования профиля. По нажатию на кнопку “редактировать” должно появляться модальное окно с формой изменения данных профиля. Список созданных резюме. На главной странице профиля (Данные резюме должны быть видны только владельцу профиля) выводятся созданные резюме в виде небольших табличек, с базовой информацией : название резюме, дата обновления резюме. Также в данных карточках должна быть кнопка обновить и редактировать. Возможность создания резюме. Ниже приведен пример разделения и основные модули для резюме. Здесь стоит разобраться немного подробнее: Есть основная часть резюме т.е базовая информация о пользователе, где пользователь выбирает категорию вакансии, задает название резюме (должности) ожидаемый уровень заработной платы, и указывает ссылки на соцсети, контактные данные : p.s если какие то данные не указаны то не нужно отображать их на странице при просмотре резюме. telegram email номер телефона ссылка на facebook ссылка на linkedin Так же есть множество однотипных модулей которые связаны с основным резюме. В ходе создания резюме вы можете добавить неограниченное количество таких модулей. Каждый из них должен описывать опыт работы. Годы работы, название компании, должность, обязанности. Аналогичные модули для указания образования соискателя или же пройденных курсов повышения квалификации. Возможность редактирования резюме. А также его обновления, по нажатию на кнопку обновить, обновляется только его дата обновления, по сути то же что и при редактировании. Возможность публикации резюме и его снятия с публичного просмотра. если резюме не опубликовано оно не будет отображаться в общем списке. (Бонус +1 балл) В профиле пользователя на странице деталей резюме добавить возможность скачивания резюме в формате pdf. Воспользуйтесь для этого подходящей библиотекой.
Личный кабинет работодателя
Личный кабинет работодателя должен включать в себя набор различного функционала Возможность редактирования профиля. По нажатию на кнопку редактировать должно появляться модальное окно с формой изменения данных профиля. Список созданных вакансий. На главной странице профиля (Данные вакансии должны быть видны только владельцу профиля) выводятся созданные вакансии в виде небольших табличек, с базовой информацией : название вакансии, дата обновления вакансии. Также в данных карточках должна быть кнопка обновить и редактировать. Возможность создания вакансии. Ниже приведен пример разделения и основные модули для вакансии. Название вакансии Заработная плата Детальное описание вакансии включающее в себя требования по знаниям соискателя. Указание требуемого опыта работы от и до (лет) Категория вакансии, выбирается из выпадающего списка. Возможность редактирования вакансии. А также ее обновления, по нажатию на кнопку обновить, обновляется только его дата обновления, по сути то же что и при редактировании. Возможность публикации вакансии и снятия ее с публикации. При снятии вакансии с публикации она перестает отображаться в общем списке вакансий на главной странице.
Основной функционал
Соискатель создав резюме может просматривать общий список вакансий. Вакансии на главной странице отображаются в отсортированном виде по дате обновления, от самых новых до самых старых. Каждая вакансия отображается в виде карточки шириной на весь контейнер, в карточке оказывается название вакансии, заработная плата, а также ее дата публикации и ссылка на профиль компании опубликовавшей данную вакансию. Каждая карточка является ссылкой на детальную страницу где соискатель может изучить подробную информацию по вакансии а так же откликнуться на вакансию нажав соответствующую кнопку. При нажатии на кнопку откликнуться, открывается модальное окно, где пользователь может выбрать резюме из выпадающего списка, которое хочет прикрепить к отклику. (По сути открывается чат с работодателем). У пользователя в профиле должна быть возможность перейти к любому из своих откликов, это удобно будет сделать с помощью специального раздела. В рамках чата, соискатель и работодатель имеют возможность обмениваться сообщениями для обсуждения. У работодателя в специальном разделе также должен быть список откликов на каждую из вакансий с возможностью перехода к непосредственному пользователю. Список вакансий, можно фильтровать по категориям, а так же сортировать по зарплате и осуществлять их поиск по названию. (Бонус +0,5 балла реализовать live search с помощью Ajax для поиска вакансий) На странице со списком вакансий должно отображаться не более 20 вакансий, остальные должны располагаться на следующих страницах. Соответственно у вас должна быть реализована постраничная навигация.
Со стороны работодателя так же добавить возможность просмотра резюме соискателей по категориям. с дополнительной возможностью открытия чата с выбранным соискателем. При открытии чата с соискателем обязателен выбор вакансии по поводу которой идет обсуждение.