(Open-source аналог Formspree на PHP).
Это проект для портфолио, потому что мои предыдущие работы я, к сожалению, показать не могу. Но мне кажется, у него есть потенциал и на нём можно отработать очень много интересных технологий.
А может быть он даже станет чем-то вроде AirTable? Who knows...
Да и посмотрите какое крутое название и домен был свободен!
Суть такая: многим статическим сайтам (лендингам, блогам, визиткам) единственное, зачем нужен бекэнд - форма обратной связи. Да, есть огромная куча сервисов, которые с радостью предоставят форму в виде iframe или вообще предоставят её на своё домене - но это сильно рвёт UX, особенно если у нас очень красивая форма в цвет занавесок на сайте.
А ведь по факту нам не нужны чужие формы - мы можем сверстать свою, нам нужен только бэкенд, который примет все данные из реквеста с заданного домена, сохранит их в БД и отправит пользователю на почту. Этого достаточно для 95% юзкейсов. И даже можно это делать по AJAX.
Formspree так и работает - конечно он ещё принимает на платных тарифах файлы и платит за свой SMTP-сервер.
Но если обойтись без файлов и отправлять письма пользовательские SMTP - при небольших нагрузках обеспечение такого сервиса будет практически бесплатным.
Конечно, это не будет полным аналогом. Это же проект для портфолио. Но мы очень постараемся.
Текущий прогресс - в TODO.md. Версия пока что даже не альфа (сигма, лол). Не судите строго, я только начал.
Как запустить:
git clone https://github.com/drmnk/phormally.git
cd phormally
cp .env.example .env
make install
docker compose up
# Вы восхитительны! Phormally доступен на http://localhost:8000
make test # запустить тесты
make sniff # Code style & PHPStan
Примечание: если вы на Windows и не пользуетесь Терминалом - вы многое теряете, они сделали алиасы для практически всех линуксовых команд.
Примечание 2: если вы на Windows и не пользуетесь Chocolatey - вы многое теряете. Устанавливайте программы в одну строчку, например
choco install make
- Настройка среды разработки в Docker: только разработку, я не хочу хостить это в докере. Настройкой рабочего окружения будет заниматься Laravel Forge. Конечно, можно воспользоваться Laravel Sail, но очень интересно будет настроить всё самому.
- Livewire: я без ума от него. Делаем интерфейс реактивным прямо в PHP классах. Мы сможем сделать интерфейсы динамичными без кучи JS.
- TailwindCSS: и от него я тоже без ума. Сперва трудно втянуться, конечно, но распробовав - трудно оторваться. Пока, БЭМ, bang-bang.
- Очереди: в плане при тестировании отправлять большое количество писем. Может ещё реализовать "chaos monkey", который будет выкидывать ошибки рандомно при отправке (подсмотрел у Mailhog).
- Тестирование: каюсь, раньше я не тестировал код. Я исправился, я стараюсь.
- Интернационализация: пахнуло коммунизмом, но по-моему процесс перевода приложений на другие языки называется так. У меня неплохо с английским, просто сейчас намного проще и быстрее состряпать всё на русском.
- Пользовательское API: чтобы пользователь мог получать данные программно - великолепно!
- Работа с внешними API: отправлять куда-то фидбеки при их получении - это здорово!
- GraphQL для чего-нибудь: раз уж у нас есть такой прекрасный Lighthouse для Laravel, мы должны его опробовать
- Провести бенчмарк при реальной нагрузке с внешним безлимитным SMTP-сервером, чтобы обнаружить "отсечку". После этого засунуть приложение в Octane и попробовать снова.
- Разместить на Vapor - не играл с AWS, нужно сделать.