Skip to content

oshatrk/test-try1

Repository files navigation

12121212# Тестовое задание ООО "Муниципальные решения"

Основные положения

В качестве тестового задания предлагается реализация ТЗ на доработку приложения начального уровня разработки, реализующего функционал некой геоинформационной социальной сети.

Что проверяется:

  • Базовый уровень навыков web-разработки
  • Умение разбираться в чужом коде
  • Умение в разумные сроки разбираться в новых технологиях и компонентах
  • Владение основами СУБД и SQL
  • Качество и понятность кода
  • Умение грамотно структурировать код: выделять по необходимости логически связанный код в новый модуль и структурирование кода внутри модулей
  • Время реализации поставленной задачи

Используемые технологии и компоненты:

  • Система контроля версий: Git
  • Базовая платформа: node.js
  • Фреймворк sails.js
  • СУБД PostgreSQL
  • Базовые стили и компоненты: Bootstrap
  • JavaScript на стороне клиента: iQuery
  • Загрузка файлов: plupload
  • Работа с картами: Leaflet
  • web-шаблоны: Jade
  • Полезные функции для использования на стороне сервера: Lodash

Создание рабочего окружения

  1. Установить последнюю стабильную версию node.js (Если Вы работаете в Linux, то лучше устанавливать из исходников)

  2. Установить глобально sails.js

  3. Установить git

  4. Клонировать этот репозиторий или скачать его zip-архив

  5. Установить локально СУБД PostgreSQL

  6. Создать в СУБД пользователя test с паролем test

  7. Создать БД test с владельцем test

  8. Создать структуру БД test с использованием прилагаемого дампа test.backup (см. корневой каталог проекта)

  9. Перейти в каталог проекта.

  10. Установить зависимые node.js- и sails.js-модули с помощью команды:

    $ npm install

  11. Запустить приложение с помощью команды:

    $ sails lift

  12. Приложение доступно по URL: http://localhost:1337

Техническое задание на разработку

Функциональные требования

  1. На главной странице указать имя и фамилию разработчика
  2. Исправить ошибку. Авторизация нового пользователя происходит независимо от того подтвержден email пользователя или нет. Если пользователь не активирован (не подтвержден его email), то система не должна его пускать, выводя соответствующее сообщение и ссылку для отправки повторного email со ссылкой активации. (Подсказка. Это можно реализовать с помощью политик доступа sails.js)
  3. Исправить искажение аватарки при отображении в списке пользователей, если исходная картинка не является квадратной. Решение проблемы желательно сделать средствами plupload. (Подсказка. Сейчас средствами plupload делается масштабирование изображения перед загрузкой)
  4. Создать и добавить к проекту favicon.
  5. Добавить информацию о том, кто из пользователей в данный момент online в списке друзей, запросов в друзья и списке пользователей при поиске новых друзей. Постараться реализовать изменение статуса пользователя без необходимости перегружать страницу в браузере. Сейчас так реализована отправка запроса в друзья, подтверждение и отклонение запроса в друзья. (Подсказка. Использовать предоставляемые sails.js средства работы с web-сокетами).
  6. Если пользователь online, то при просмотре его профиля другим пользователем он должен видеть на карте место положения того пользователя, профиль которого в данный момент просматривается. Если пользователь offline, то отображать на карте точку его последнего пребывания. Должно быть понятно, что в данный момент отображается на карте: текущее положение или предыдущее положение пользователя. Если же по каким-то причинам не возможно установить текущее или предыдущее положения пользоввателя (например. пользователь не дал разрешение на определение его положения при запросе в браузере), то это тоже должно быть понятно. Способ реализации функционала определяет разработчик.
  7. Изменить url профиля пользователя с user/<id> на user/<username>
  8. Реализовать просмотр профилей друзей из списка. При попытке просмотреть профиль пользователя, не являющегося другом, путем явного указания url его профиля, необходимо выводить сообщение о невозможности просмотра данной информации.
  9. Реализовать обмен сообщениями между друзьями. Глубина проработки этого функционала остается на усмотрение разработчика и зависит от возможностей и временнЫх ресурсов.

Нефункциональные требования

  1. После реализации каждого пункта функциональных требований необходимо делать коммит с соответствующим комментарием.
  2. В конце работы сделать дамп Вашей тестовой БД в файл test.backup в корне проекта (заменить существующий) и сделать коммит с соответсвующим коментарием. Формат дампа должен быть таким, чтобы его можно было загрузить с помощью команды pg_restore
  3. Создать аккаунт на Github, если его еще нет.
  4. Создать на github пустой репозиторий для Вашего тестового проекта.
  5. Разместить Ваш локальный репозитарий тестового проекта в github.
  6. Описание Вашего тестового задания на github (файл README.md) замените своим с кратким описанием того, что сделано и Вашим видением того, что можно было бы добавить в плане функциональности в данный проект.
  7. Если в процессе анализа кода Вы увидели возможности его оптимизации, то сделайте это и обязательно отразите, что и как Вы оптимизировали в кратком описании к проекту (см. п.6).
  8. Дизайн разработки определяется возможностями Bootstrap и фантазией разработчика

Дополнительные подсказки

  • Последовательность реализации функциональных требований не имеет значения. Вероятнее всего, что за предоставленное время все требования реализовать не удастся. Чем больше получится реализовать, тем лучше. При этом будет учитываться даже начальная (не полная) реализация требования.

  • При отладке активации пользователя через email удобно пользоваться примитивным локальным smtp-сервером. специально предназначенным для этих целей. Для разработчиков, работающих в среде Windows это может быть например Papercut. Для тех же, кто работает в среде Linux или Mac можно либо настроить свой локальный smtp-сервер, либо использовать, следующий, который запускается командой:

    sudo python -m smtpd -n -c DebuggingServer localhost:25

  • Естественно, что структура БД может менятся на усмотрение разработчика в соответствии с необходимостью, возникающей при реализации функциональных требований.

  • В качестве решения тестового задания необходимо отправить на электронный адрес, с которого Вы получили задание, URL проекта на github.

  • Если в процессе работы возникают дополнительные вопросы, ответов на которые нет в данном описании, то разработчик должен сам принять решение по возникшему вопросу.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published