Как устроен портал калькуляторов на Laravel
Разработка ♡
+ данные
= страница ♡
Портал называется «Мерка», и главное решение в нём такое: калькулятор это не отдельный файл. Иначе из сотни инструментов получится сотня мест, где можно налажать, и разгребать это я буду до пенсии. А мне пока рано.
С чего я начала
Сначала я разложила будущий сайт по разделам: финансы, дом и стройка, конвертеры, дата и время, текст, SEO. Шесть разделов, на первом запуске в них 37 инструментов (да, я считала, я такая).
Многие страницы отличаются только цифрами. «Сотки в метры» и «километры в мили» делают одно и то же: умножают на коэффициент. Писать под каждую свой код это прямая дорога в копипасту и боль.
Как разделены код и данные
Логика расчёта живёт в коде. Всё, что видит человек (название, описание, формула, пример, вопросы и ответы, SEO), это запись в базе, которую я правлю в админке.
Как появляется страница
От идеи до страницы четыре шага.
Класс описывает поля формы и считает результат. Например, модуль процентов умеет «сколько процентов от числа» и «на сколько процентов изменилось значение».
В реестре одна строка: ключ и класс модуля. После этого модуль появляется в админке в списке доступных.
В админке я создаю инструмент: выбираю модуль и раздел, пишу заголовок, описание, формулу, пример и вопросы с ответами, публикую.
Модуль принимает настройки в JSON. Модулю перевода единиц достаточно коэффициента, например 100 для соток и квадратных метров, и новая страница готова без единой новой строки кода.
Что я сделала по порядку
- Описала общий интерфейс модуля: ключ, поля формы, расчёт и результат.
- Вынесла в базовые классы то, что повторяется: разбор чисел, подписи полей, ошибки ввода.
- Собрала реестр модулей. 27 модулей держат 37 инструментов первого запуска.
- Сделала админку: инструменты, разделы, материалы, рекламные места и настройки.
- Наполнила каталог первыми страницами и проверила, что каждая открывается. Базовая гигиена, но кто из нас не выкатывал 404?
Что использую
- Laravel сайт, админка и модули расчётов
- SQLite каталог инструментов
- JavaScript расчёт прямо в браузере
- PHPUnit проверка формул
Что меня беспокоит
Формулы есть и на PHP, и на JavaScript, и их нужно держать одинаковыми. Как я это проверяю, описано в статье про паритет PHP и JavaScript. Админка это тоже код, и он тоже умеет ломаться (желательно не в пятницу вечером). И пока неизвестно, сколько из этих страниц вообще заметит поиск.
Дальше про то, как я проверяю сами формулы: тесты калькуляторов.
Комментарии
Буду рада вашим мыслям, идеям и вопросам!
Давайте обсуждать ♡
Делитесь
своими мыслями
— мне очень
это важно ♡