January 12th, 2018

Как я писал сайт.

Хочу поделиться опытом как я писал сайт.

Сначала исходные данные - у меня в основном опыт на сервер сайд - Java и Scala, последний год немного приходитсдя писать на Python, получил в наследство поддерживать систему на Django. Небольшой опыт HTML, jQuery, первый Angular. Но совсем не большой. Т.е. что то могу делать гугля каждую деталь.
Захотел сделать простейший сайт - человек с кем то спорит, описывает спор на сайте - тема, пояснения, дата, мейл того, с кем спорит и мейл судьи.
Судья и оппонент подтверждают участие, потом, когда дата подходит судья решает кто выиграл спор.
Всё. Никакой возни с деньгами или что то такое - если спор на деньги, люди это сами описывают в пояснениях.

Сначала долго думал на чем делать. Важной и сложной частью казался логин. Надо делать через соцсети, гугл или что то такое. Сначала думал делать на Grails, благо Groovy я знаю, но вскоре выяснил, что Grails вообще, и плагин для логин через соц сети в частности,выглядят совсем заброшенными. Решил делать на Django, который все равно надо выучить для работы.
Вообще сначала я сделал proof of concept логина (для начала это было через GitHub) и только после этого реально начал что то писать, сделал проект (на том же GitHub) и т.д.


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

Интересно, что когда мне надо было вводить дату, я искал разные виджеты для Django, даже клонировал какой то репозиторий, исправлял его - но все работало через жопу. В итоге за 1 минуты прикрутил DateChooser из jQuery и всё.
Точно также потом список споров сделал на REST + jQuery, вместо встроеного джанговского view, но это было уже потом, когда почти всё было готово и я перестал бояться.

Совсем не очевидным оказалось какие страницы будут на сайте, заняло время представить себе как это вообще будет выглядеть.
Вообще всё связанной с UI оказалось сложным. Что должно быть на странице? Как это всё расположить? Как реализовать то, что я придумал в плане Layout?
Цветовая гамма - для меня вообще ужас. какие цвета делать? Какие шрифты?

Важно было как можно раньше определить MVP - minimal value product. Что включать в первую версию, которую выкачу на публику, а что нет.

Если пишешь один, то еще и постоянно падает мотивация. Очень помог Лев, который подключилса на каком то этапе, писал код, тестировал, обсуждал со мной - его помощь была намного больше, чем объем написанного им кода - без него я бы вряд ли вообще все довел бы до конца.
В UI также помогла Вита, однокурсница еще по ХГУ. Придумала дизайн, реализовала его в CSS, сделал цвет, шрифты.
Потом я сам выучил CSS Grid и всё переделал под него, но без Виты я бы просто не дошел бы до этого этапа.
Тексты мейлов и FAQ на сайте помог составить сын, Ярон.


Потом выяснилось, что я не подумал про то, как сайт выглядит на телефоне. Я вообще мало сайтов посещаю с телефона и про это не думал. Долго исправлял это.

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

Вообщем полезный опыт. Надеюсь, что в следующий раз, когда соберусь писать сайт, будет проще :)