Stiker.me — легкая и простая трекинговая система
Наверно каждый из нас хоть раз использовал бумажные стикеры. Не знаю как вам, но мне это не всегда нравится: во первых их нужно покупать, во вторых это превращается в макулатуру, в третьих они не всегда под рукой. Несколько раз пробовал использовать Evernote и подобные программы, основное неудобство в том, что они избыточны по функционалу.
За довольно короткое время написал свой велосипед Stiker.me. Использовать удобно и легко.
Под катом, описание функционала и техническая информация.
Функционал
Вариантов использования два — анонимно или залогинившись.
Для анонимного использования вы можете разместить несколько стикеров и кликнуть на кнопку 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