Stiker.me — легкая и простая трекинговая система

Наверно каждый из нас хоть раз использовал бумажные стикеры. Не знаю как вам, но мне это не всегда нравится: во первых их нужно покупать, во вторых это превращается в макулатуру, в третьих они не всегда под рукой. Несколько раз пробовал использовать Evernote и подобные программы, основное неудобство в том, что они избыточны по функционалу.

За довольно короткое время написал свой велосипед Stiker.me. Использовать удобно и легко.
image
Под катом, описание функционала и техническая информация.

Функционал

Вариантов использования два — анонимно или залогинившись.

Для анонимного использования вы можете разместить несколько стикеров и кликнуть на кнопку Save. Доска сохранится под постоянной ссылкой.

Второй вариант, зарегистрироваться или войти под своими OAuth профилем. В этом случае вы можете создавать сколько угодно досок, все они будут отображаться в верхнем комбо-боксе.

Каждая доска имеет имя и категорию для сортировки, тут возможны варианты — работа, дом, бизнес, спорт, вообщем все что угодно. Так же можно добавить других пользователей для совместного доступа, указав email-ы через пробел в поле Grant.

Каждый стикер можно двигать, расширять, менять цвет и вставлять HTML код.

При закрытии браузера сохраняется самая последняя доска где вы работали и в следующий раз вы зайдете именно в неё.

Варианты использования

Основной целью создания Stiker.me была замена бумажных стикеров электронными и создание удобной, простой трекинговой системы для нашего основного проекта системы комментирования Cackle. Как видно на скриншоте выше, для Cackle мы создали четыре доски, с разными временными рамками.

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

Разработка

Так как проект не был рассчитан на большую аудиторию, то решил я его делать с пользой для себя и изучить ещё один язык Scala, а заодно и Play framework. Идея по-моему хорошая, но как оказалось ошибочная. У меня получилось быстро поднять все тестовые приложения по гайдам, изучить синтаксис Scala и чуть чуть понять как все устроено в Play. После этого, я потратил кучу времени, а именно 2 недели, чтоб собрать хоть какой-то прототипа Stiker.me. Прототип был готов, но без всякой авторизации и пользователей. Следующую неделю я потратил на то, чтоб найти и настроить модуль авторизации для Scala Play framework-а, причем там была только регистрация по логин / паролю. А как же OpenID и OAuth? Ещё через неделю бросил это дело и написал все на Java, Spring, Hibernate, Freemarker буквально за 3 дня.

Я не говорю, что Play плохой фреймворк, по-моему это лучший в своем роде, но если у тебя уже есть рабочий инструмент под рукой, то должны быть веские причины, чтобы поменять его.

Выводы или Best Practices

  • Используйте то, чем владеете лучше всего
  • Не стоит пытаться написать проект для продакшена и вместе с тем изучить новый язык программирования
  • Не рекомендую писать тесты или использовать TDD (это обязательно нужно делать только после раскрутки)
  • Используйте костыли там где можно будет быстро их убрать (например во view или контроллере, но никак не в архитектуре или DAO)
  • Выносите маленькие под-проекты, только если уверен в том, что их действительно можно будет легко переиспользовать (в противном случае потратите больше времени на заточку и костыли)
  • Вместо маленьких под-проектов, лучше храните какую-то заготовку, шаблон проекта с разными модулями
  • Старайтесь выстраивать понятную иерархию:
    Тут не много подробнее. Я например для всех java веб проектов использую следующую структуру package-ей:

    • data — Entity и DAO
    • service — интерфейсы сервисов (API) принимающие Model (из контроллеров) и возвращающие DTO (данные из DAO) + имплементация (Impl)
    • web — контроллеры, валидаторы и т.д.

Автор: javist

Источник

Оставить комментарий