Как устроен портал калькуляторов на Laravel

0

Разработка ♡

Как устроен портал калькуляторов на Laravel
Модуль
+ данные
= страница ♡

Портал называется «Мерка», и главное решение в нём такое: калькулятор это не отдельный файл. Иначе из сотни инструментов получится сотня мест, где можно налажать, и разгребать это я буду до пенсии. А мне пока рано.

С чего я начала

Сначала я разложила будущий сайт по разделам: финансы, дом и стройка, конвертеры, дата и время, текст, SEO. Шесть разделов, на первом запуске в них 37 инструментов (да, я считала, я такая).

Многие страницы отличаются только цифрами. «Сотки в метры» и «километры в мили» делают одно и то же: умножают на коэффициент. Писать под каждую свой код это прямая дорога в копипасту и боль.

Сначала список, потом код ♡
Сначала список, потом код ♡

Как разделены код и данные

Логика расчёта живёт в коде. Всё, что видит человек (название, описание, формула, пример, вопросы и ответы, SEO), это запись в базе, которую я правлю в админке.

Как появляется страница

От идеи до страницы четыре шага.

Класс описывает поля формы и считает результат. Например, модуль процентов умеет «сколько процентов от числа» и «на сколько процентов изменилось значение».

Одна строка в реестре
Одна строка в реестре

В реестре одна строка: ключ и класс модуля. После этого модуль появляется в админке в списке доступных.

В админке я создаю инструмент: выбираю модуль и раздел, пишу заголовок, описание, формулу, пример и вопросы с ответами, публикую.

Модуль принимает настройки в JSON. Модулю перевода единиц достаточно коэффициента, например 100 для соток и квадратных метров, и новая страница готова без единой новой строки кода.

Что я сделала по порядку

  1. Описала общий интерфейс модуля: ключ, поля формы, расчёт и результат.
  2. Вынесла в базовые классы то, что повторяется: разбор чисел, подписи полей, ошибки ввода.
  3. Собрала реестр модулей. 27 модулей держат 37 инструментов первого запуска.
  4. Сделала админку: инструменты, разделы, материалы, рекламные места и настройки.
  5. Наполнила каталог первыми страницами и проверила, что каждая открывается. Базовая гигиена, но кто из нас не выкатывал 404?

Что использую

  • Laravel сайт, админка и модули расчётов
  • SQLite каталог инструментов
  • JavaScript расчёт прямо в браузере
  • PHPUnit проверка формул

Что меня беспокоит

Формулы есть и на PHP, и на JavaScript, и их нужно держать одинаковыми. Как я это проверяю, описано в статье про паритет PHP и JavaScript. Админка это тоже код, и он тоже умеет ломаться (желательно не в пятницу вечером). И пока неизвестно, сколько из этих страниц вообще заметит поиск.

Дальше про то, как я проверяю сами формулы: тесты калькуляторов.

Комментарии

Буду рада вашим мыслям, идеям и вопросам!
Давайте обсуждать ♡

Пока никто не написал.
Станьте первым! ♡