Задача - реализовать одностраничное приложение (SPA), в котором пользователь может зарегистрироваться и просмотреть личную информацию о себе.
Для простоты разработки данного приложения в виде backend-части в данном репозитории представлен файл app.js
. backend-часть дополнять и изменять не нужно
. Процесс запуска api на вашей машине описан ниже.
Авторизация и регистрация на backend-части реализована через JSON Web Token.
Приложение должно состоять из следующих страниц:
/login
- страница с формой входа/register
- страница с формой регистрации/
- Главная страница с информацией о пользователе.
Описание страницы /login
Здесь содержится форма авторизации пользователя.
Также должен быть предусмотрен переход на страницу /register
в виде кнопки.
Описание страницы /register
Здесь содержится форма регистрации пользователя.
Также должен быть предусмотрен переход на страницу /login
в виде кнопки.
Описание страницы /
- Главная страница
Здесь содержится информация о пользователе - его аватар, текст о себе, имя пользователя.
Желательно оформить в виде карточки.
- Убедитесь, что у вас стоит Node.js последней LTS версии: https://nodejs.org/en/
- Приложение должно быть написано на
javascript
. - Используемый фреймворк -
Vuejs
. - Компонентная библиотека -
Vuetify.js
- Убедитесь, что у вас стоит последняя node LTS версии. Ссылка для скачивания: https://nodejs.org/en/
- В консоли открыть папку
frontend
- Устанавливаем зависимости api - в консоли запускаем команду
npm install
- Запускаем api - в консоли запускаем команду
node app.js
В результате в консоли получаем output:
Сервер с API стартовал по адресу http://localhost:8080
При выполнении запросов к api в консоли будут возникать логи, удобно для тестирования приложения.
Чтобы отправить запрос с токеном нужно указать заголовок Authorization: Bearer ${токен пользователя}
- Реализацию frontend-части следует делать
в отдельном репозитории
, а не в этом репозитории. Этот репозиторий содержит в себе только backend-часть в виде api. - Во время разработки приложения не стоит изобретать велосипеды. Для компонентов формы и карточек предусмотрена библиотека
Vuetify.js
. - При работе с
Vue.js
следует использоватьVuex
,Vue-cli
,Vue-router
- При перезапуске backend-части приложения список пользователей сбрасывается к стандартному состоянию!
- Написанные unit/e2e-тесты будут плюсом. Для юнитов у нас используется
jest
, для e2e -cypress
- Использование соверменного javascript-синтаксиса будет плюсом (ES5+ фишки)
Результат данного тестового задания следует опубликовать на github.com
в виде репозитория с публичным доступом
Ниже будут представлены все возможные endpoint'ы api.
Важные замечания:
- По умолчанию api запускается по адресу
http://localhost:8080
- При перезапуске api пользователи сбрасываются в стандартное состояние
- Для теста api можно использовать
postman
или любую другую утилиту, которая умеет слать http-запросы
Данный эндпоинт принимает запросы на авторизацию пользователей.
Метод HTTP-запроса - POST
Поле | Тип | Обязательно | Описание |
---|---|---|---|
username | String | + | Имя пользователя |
password | String | + | Пароль |
Поле | Тип | Описание | Значение |
---|---|---|---|
token | String | JWT-токен пользователя | %сгенерированный jwt-токен% |
error | String | Ошибка, если таковая имеется | null |
Поле | Тип | Описание | Значение |
---|---|---|---|
token | String | Токен | null |
error | null | Ошибка | "Введите правильные имя пользователя/пароль" |
Данный эндпоинт принимает запросы на авторизацию пользователей.
Метод HTTP-запроса - POST
Поле | Тип | Обязательно | Описание |
---|---|---|---|
username | String | + | Имя пользователя |
password | String | + | Пароль |
Поле | Тип | Описание | Значение |
---|---|---|---|
message | String | Сообщение | "Пользователь успешно зарегистрирован" |
Поле | Тип | Описание | Значение |
---|---|---|---|
message | String | Сообщение | "Пользователь с таким именем уже зарегистрирован" |
Данный эндпоинт возвращает информацию о пользователе, которая есть на сервере
Метод HTTP-запроса - GET
Поле | Тип | Описание | Значение |
---|---|---|---|
id | Integer | id пользователя | %id пользователя% |
username | String | Имя пользователя | %имя пользователя% |
avatar | String | http-ссылка на картинку с аватаркой пользователя | %avatar% |
about | String | Текст "о пользователе" | %текст в api% |
Если в заголовке не передавать jwt-токен, либо jwt-токен был просрочен - вернется ответ
Поле | Тип | Описание | Значение |
---|---|---|---|
message | String | Сообщение | "Не удалось получить информацию о пользователе" |
- https://vuejs.org/ - Vuejs
- https://cli.vuejs.org/ - Vue-cli
- https://vuetifyjs.com/ - Vuetifyjs
- https://router.vuejs.org/- Vue-router
- https://www.getpostman.com/ - postman