Pull to refresh

Smthngs (thn.gs) — todo веб-сервис как десктопное приложение

Reading time 4 min
Views 5.6K
Странное дело, порой кажется что каждый месяц появляется не меньше дюжины новых GTD-like таск-менеджеров. Одновременно с этим, хороших приложений для эффективного управления повседневными задачами крайне мало. Думаю, редкий читатель нашел для себя подходящий инструмент и пользуется им повседневно.
Мы не из ленивых, и как вы уже догадались, тоже сделали свой, с… всем что полагается.
Ниже я расскажу о нашей парадигме и особенностях, которые выгодно отличают нас от конкурентов. Т.к. многие уже устали от обилия постов о личной продуктивности на Хабре, в своем рассказе я сделаю упор на веб-технологии, а не на gtd-методологию. А пока картинка для привлечения внимания:
image

Бытует мнение что веб-сервисы и настольные приложения — вещи несовместимые, что каждая из этих технологий хороша для решения сугубо своих задач. Это настолько укоренилось в нашем сознании, что не возникает вопросов почему над кнопкой в вебе мышиный курсор в виде пальца, а в остальном десктопном мире — в виде стрелки. Мы же не собирались мириться с менталитетом бедности Старого веба и задались целью спроектировать и разработать приложение, которое сочетало бы в себе гибкость и доступность веб-сервиса со скоростью и удобством настольного приложения. Не будучи оголтелыми стартаперами с единственной целью кому-то что-то продать, мне и моим друзьям потребовалось более двух лет неспешной, но кропотливой работы чтобы первая публичная версия увидела свет. Ниже я коротко расскажу о нашем подходе и о возможностях нашей тудушки, позволяя себе углубляться в технические детали.

Итак, несмотря на то что Smthngs это веб-сервис, вся его клиенская часть полностью исполняется в браузере. То есть вообще вся; у нас нет никаких серверных скриптов которые формируют веб-странички. Вместо этого мы полностью реализуем клиент-серверную архитектуру, роль сервера в которой отводится только для предоставления простого RESTful API для полностью независимого клиента, которым в данном случае является куча кода на Javascript и CSS. Если вы загляните в исходный код веб-страницы, то не увидите ничего кроме нескольких строк, которые рисуют прелоадер.

Такой подход дает кучу преимуществ!
Во-первых, приложение грузится только один раз, после чего, при последующих посещениях на клиенте актуализируются только пользовательские данные. Сам клиент обновляется только если на сервере появилась новая версия.
Во-вторых, приложение всегда реактивно реагирует на действия пользователя, т.к. для отображения изменений не требуется ждать ответа от сервера, изменения отправляются в облако независимо от реакции интерфейса. У нас во всем проекте есть только две кнопки, которые требуют ответа от сервера, это — выход и сменить пароль.
В-третьх, приложение может работать оффлайн без ущерба функциональности. В общем-то, нет никакой разницы между тем чтобы сохранить данные прямо сейчас или на следующей неделе, данные в любом случае сначала попадают в локальное хранилище и лишь потом отправляются на сервер. И да, если вы закроете браузер, а потом откроете его например в поезде, вы не сразу заметите что интернеты остались дома. Раньше мы использовали для этого Gears, но сейчас все современные браузеры поддеживают эту новую веб-магию самостоятельно.
В-четвертых, такая динамичность не создает нам трудностей в реализации превосходного интерфейса в десктопном стиле. Кнопочки, панельки, подсветка, тотальный драг-н-дроп, полноценная клавиатурная навигация, модальные диалоги (там где они нужны), отсутсвие модальных диалогов (там где они не нужны), отсутствие концепции "отошлите форму чтобы сохранить" — все это сделано с нашим теплом и любовью в лучших десктопных традициях.
В-пятых, подобную архитектуру удобно администрировать, т.к. практически вся нагрузка перекладывается на браузер.

Несмотря на все это, мы сохранили дух веба. К примеру, у нас везде и всегда работают браузерные кнопки Вперед и Назад. Чтобы это реализовать пришлось придумать и протащить через всю систему построения UI концепцию состояний (которые запоминаются в #hash-части url'а), это было не просто. Работу этой системы можно понаблюдать продублировав в браузере открытую вкладку с нашим приложением и попробовав найти отличия.

Напоследок немного расскажу о самом приложении. Как я уже говорил, это таск-менеджер для управления личными задачами с целью повышения личной продуктивности. Мы поддерживаем все вкусности для эффективного ведения списка дел, его организации и сортировки, такие как: фокусы, проекты, подзадачи любого уровня вложенности, теги, полнотекстовой поиск, несколько видов представления списков, и прочее. Несмотря на все это, мы старались сделать интерфейс максимально простым и интуитывным; пожалуй, львиную часть времени мы потратили именно на него. И да, у нас над кнопками курсор мыши в виде стрелки.

Как я уже говорил, наша основная цель не скорейшее обогащение, а разработка революционного приложения, поэтому сервис бесплатен и будет оставаться таким по крайней мере в нынешнем его виде. Мы ищем единомышленников, которые могут помочь нам в нашей работе любыми средствами, например фидбеком или в разработке мобильного клиента. Или даже если у вас есть свободные финансовые средства, мы тоже готовы об этом поговорить.

Чтобы воспользоваться сервисом, необходимо зарегистироваться. Мы не поддерживаем ретро-браузеры. Если вы используете Chrome, вы можете установить Smthngs как App из WebStore. Чтобы быть всегда в курсе наших планов, подписывайтесь на наш twitter и вступайте в наше сообщество на facebook.
Tags:
Hubs:
+161
Comments 196
Comments Comments 196

Articles