Цель: все, что вы учили по кусочкам - собрать в одно целое. Понять как строить весь стек приложения и как его разные слои взаимодействуют. Немного пощупать VueJS. Ваше приложение не будет соответсвовать всем современным стандартам и это не страшно. Позже вы можете вернуться к нему и имея больший опыт, отрефакторить.
Технические требования Используем: -MS SQL Server 2019 -Dapper -.Net Core 3 -VueJS -Vue-Router - html & css Не используем: - CSS Frameworks (Bootstrap etc) - UI Components Libraries (element-ui, vuetify, vue-bootstrap etc) - Vuex - ORM (Entity Framework etc) - less, saas etc - линтеры - тесты
В материалах есть про WebAPI и REST. Естественно, что раз есть материалы по каким-то темам, то это значит, что они пригодятся вам в работе. Они могут по ходу дела обновляться и пополняться.
Немного о том, как будет проходить процесс работы над личным проектом. В рамках работы над проектом будет 2 созвона. Каждый продолжительностью 20-30 минут. Первый созвон - через неделю после получения задания. На нем вы должны показать прототип вашего приложения. Что это значит. Значит, что у вас уже есть база, бекенд, связь с базой хотя бы по одному сценарию и минимальный фронтенд. Т.е. оно хромает, имеет кучу багов, работает только позитивный сценарий - но уже в целом видно какую-то структуру проекта и можно как-то поклацать. Вы показываете что у вас работает и как, показываете ваш код, рассказываете где, что и как работает у вас. Мы задаем какие-то вопросы, возможно вы успеваете задавать свои вопросы. Цель этого созвона - успеть исправить серьезные косяки и не дать вам пойти не туда. Второй созвон - еще через неделю, т.е. через две недели после получения задания. На нем вы показываете финальное демо своего продукта. мы задаем вам вопросы. Цель - финальный результат ваших стараний. Созвоны будут проходить в вс в дневное и вечернее время, точные слоты будут определяться по пт
приложение которое нужно реализовать - это продвинутая голосовалка. В которой можно
- зарегистрироваться и залогинится в последующем (проверка почты при регистрации не нужна)
- создать новый опрос. например "куда пойдем на выходных"
- задать сразу несколько вариантов ответа. например "в кино", "в парк", "в туалет"
- задать параметры опроса, например "могут ли участники добавлять свои варианты ответов", "сколько максимум можно добавить вариантов ответов", "за сколько вариантов может одновременно проголосовать отвечающий", "дедлайн после которого новые ответы не принимаются"
- сделать опрос доступным(опубликовать) или сохранить приватным для последующего редактирования.
- при "публикации" опроса он добавляется в список активных опросов и у него появляется отдельная ссылка которую можно кидат друзьям
- удалить опрос
- просмотреть список своих опросов , активные, неактивные, опубликованные, скрытые (можно без фильтров на сейчас)
- увидеть список текущих активных опросов с указанием названия, автора, времени создания(или времени публикации)
- зайти по чьей-то ссылке, и если не залогинен или не зарегистрирован - залогинится или зарегистрироваться и вернутся на опрос из ссылки
- проголосовать в чьем-то опросе за какие-то из вариантов
- добавить свой вариант в опросе и проголосовать (или нет) за него
каждый голос сохраняется и автор опроса может посмотреть кто голосовал за какой вариант. Не автор опроса видит только общее количество голосов без указания голосовавших Можно голосовать за несколько вариантах в пределах, установленных создателем опроса (например вариантов 10, но макс голосов 2, тогда можно проголосовать за 2 варианта максимум)
На счет авторизации, она не должна быть сильно заморочливой. Самая простая, без изысков, без токенов, на основе куков. никаких двухфакторных, никаких восстановлений, никаких пока что даже подтверждений. нормальная авторизация это отдельная задача на очень много часов. не тратьте на это слишком много времени в рамкахличного проекта.
шаги
- простое бекенд приложение MVC с одним контроллером и одним (или несколькими) методами. можно шаблонными. которое при вызове из броузера отдает в броузер какой-то захардкоженный json
- приложение подключается к базе и запрашивает из нее данные
- приложение отдает данные из базы наружу через метод контроллера в ответ на запрос броузера 4а. VueJS. просто SPA приложение с одной страницей где вы напишите что-то свое и как-то стилизируете 4b. VueJS приложение. где есть одна кнопка и одно поле ввода. по нажатию на кнопку меняется содержимое поля ввода отображается в каком-нибудь div'е. (например квадрат числа можно отображать. или его само) 5а. VueJS приложение которое умеет запрашивать бекенд и получать ответ.
- метод fetch или библиотека axios
- промисы (callback'и или async-await'ы если промисы не зашли)
- отображение полученных от бекенда данных 5b передавать данные с фронтенда на сервер и сохранять в базу. например содержимое поля ввода отправляется на сервер POST запросом при помощи fetch и там обрабатывается соответствующим методом контроллера и сохраняется в базу
--- после этого у вас есть все что б сделать простую --- --- голосовалку и показать ее в конце недели ---
6 компоненты. что это и как работает 7 роутинг - сделать еще две страницы, для логина и регистрации, на которые можно переходить с основной страницы с голосовалкой 8 простая авторизация. я б делал через глобальную переменную в которой хранить уникальную рандомно-сгенеренную строку с бекенда и передавать ее в каждом запросе. но можете усложнить жизнь сессиями и кукисами. или упростить храня и передавая не уникальную рандомную строку, а ID юзера
--- после этого у вас по идее уже готов проект ---
demo - https://mega.nz/embed/vpRwhCrS#qJGOTdbI4tmgpQWwxKlh-zHQfB9pZWPPKp2QHSzxk2A!1a