MVP-версия сайта с меню бара pushinbar.ru, сделанная Сашей Чабиным в барном мастер-классе за полтора часа.
- База данных в Google Таблице
- Минимальный Backend на Google App Script
- Простейший Frontend на ванильных HTML/CSS/JS
- Бесплатный хостинг и CI от Vercel
Информация о пиве и его таблицы управляется прямо и Google Таблицы: https://docs.google.com/spreadsheets/d/1x2GUc8vCtzdQ8SdqTswv3E-NidNZXEXzqsLY6z9JGQA/edit#gid=1562855295
Бэкэнд на Google AppScript (код из интерфейса Google AppScript)
Сервер script.googleusercontent.com возвращает данные в формате JSON:
[
{
"brewery": "Jaws",
"availability": false,
"beer": "Атомная Прачечная IPA",
"type1": "Ипа",
"type2": "",
"volume": "0.5",
"price": "280",
"cover": "https://untappd.akamaized.net/site/beer_logos_hd/beer-631746_0b8c5_hd.jpeg"
},
...
]
Верстка страницы
- Мета-информация
- Логотип
- Подключение стилей и скриптов
- Контейнер для меню бара
- Подвал
Стили для страницы. Для наименования классов используется БЭМ — один из самых простых и удобных способов организации CSS
.block {}
.block__element {}
.block__element--modifier {}
Код для динамической подгрузке данных из backend-google-app.gs
- Синтаксис async/await в самовызываемой функции
- fetch и .json() для извлечения данных
- Перебирающий метод массива map
- Поиск элемента по id и встраивание HTML через element.innerHTML и шаблонную строку
- Бесплатный хостинг от Vercel с инеграцией для Github. Ты просто делаешь push, и ветка сразу выкладывается на тестовый поддомен. Кстати, тут есть Serveless с Nodejs, Python и PHP. А ещё можно бесплатно собрать и более серьезный фронтэнд с React/Vue/Angular и Webpack/Parcel/ваша-любимая-технология.
- Домен за 145 рублей в год от Atex.ru. Мониторить дешевых регистраторов удобно в теме древнейшего форума
База побыстрее. После того как вы побаловались с выводом и вас перестала устраивать не самая быстрая скорость Google AppScript, то данные из гугл-таблички следует кэшировать в какой-нибудь бесплатной облачной базе данных Firebase. Например, можно глянуть на статью Sync Google Sheets to a Firebase Realtime Database.
CMS поумнее. Дальше интерфейс Google Таблиц может перестать вас устраивать и вам понадобится CMS. Для этого необязательно брать WordPress и Joomla и писать на PHP, есть неплохая альтернатива — Headless CMS. Напрмер, это Strapi и Directus — написаны на Nodejs возвращают JSON-ки вместо HTML, как наш бэкэнд. Вообще их тысячи на самых разных языках, все они собраны на headlesscms.org.
Интерфейс посложнее. Если интерфейс становится более интерактивным и динамическим, то пригодятся какие-нибудь фреймворки React/Vue/Angular, менеджер состояний Redux/MobX, ну а там и система сборки Webpack/Parcel. А ещё в моем примере мы рендерим всё на клиенте через fetch
и innerHTML
, однако поисковики просят рендеринг на стороне сервера для SEO (эх, даже в 2022). Здесь на помощь приходит крутое коробочное решение — NextJS с React и рендерингом на стороне сервера. Альтернативы для Nextjs можно найти на jamstack.org.