Для тех, кто не знает, Dev Community объявил хакатон для Appwrite в прошлом месяце. Я не был знаком с Appwrite, и когда я нашел его в интернете, я обнаружил, что это BaaS (Backend as a service) платформа. Не буду врать, я не совсем понимал реальное значение «бэкенд как сервис». Я имею в виду, что он будет делать для меня? Как он будет создавать для меня API? Можно ли вообще иметь бэкенд, работающий без кода бэкенда? Плохо ли рассчитывать на платформу BaaS в моем проекте?
После поиска в интернете и чтения документации я понял, что эта технология предназначена для того, чтобы делать ВЕЛИКИЕ вещи и помогать как разработчикам бэкенда, так и разработчикам фронтенда.
Я планировал сделать небольшой проект для хакатона Appwrite, но в итоге решил бросить себе вызов и сделать что-то большое. Я создал потрясающий проект со сложной структурой бэкенда. Также я проследил, как можно реализовать связи с базой данных, комментарии, элементы управления администратора, динамические профили пользователей, динамические URL, хранение и получение изображений, а также как интегрировать различные API и многое другое. Appwrite действительно сделал все это довольно приятным для меня.
В этой статье я расскажу вам, как начать, создавать и развивать BaaS, и почему это лучший выбор, который поможет вам начать проект, который вы задумали, немедленно, не тратя время на беспокойство о бэкенде.
Но сначала, если вам интересно, что я создал. Посмотрите на мой проект и убедитесь сами 👉 Проект Tailwinder
Совет: Видео демонстрация в конце поста по ссылке выше ️
Таблица содержания |
---|
Определения |
Установка |
Консоль |
Начало работы |
Аутентификация |
База данных |
Хранилище |
Аватар |
Заключение |
Прежде чем мы приступим к действиям, вам нужно знать несколько важных вещей об Appwrite. Я собираюсь объяснить вам все так, как будто вам пять лет, только потому, что именно так я хотел бы, чтобы ко мне относились, когда я изучаю что-то новое 🤔.
Определения:
Что такое BaaS (Backend As A Service)?
Говоря простым языком, группа великих разработчиков бэкенда собралась вокруг и создала платформу и разработала наиболее распространенные API, которые могут понадобиться большинству веб-сайтов. Это способ сделать вашу жизнь проще, ваш код бэкенда короче и быстрее начать ваши проекты.
Что такое Appwrite?
Это платформа BaaS, но она самая простая и элегантная из всех, что я видел до сих пор. Они создали эти API, помня о гибкости и всех настройках, которые могут вам понадобиться, чтобы сделать эти API полезными и адаптированными для вашего сайта. Appwrite имеет множество SDK для Web, Flutter, Android, Apple и Node.
Что такое SDK?
Комплект средств разработки программного обеспечения (SDK) — это набор инструментов, созданных разработчиками для упрощения взаимодействия между фронтендом и API. Вместо того чтобы писать много кода разными способами, SDK унифицировали и упростили способ взаимодействия с API.
Что такое Docker?
Appwrite упакован в виде набора контейнеров Docker. Вы можете установить и запустить Appwrite на любой операционной системе, которая может запускать Docker CLI. так что да! Вам нужно знать, что такое Docker.
Представьте, что вы пытаетесь начать бизнес, допустим, этот бизнес — образовательный центр. У вас уже есть учителя, секретарь, экраны и компьютеры. Однако все это бесполезно, если у вас нет места, которое хорошо подготовлено именно для ваших нужд, чтобы вести ваш бизнес. Вам нужно место, до которого легко добраться, с несколькими комнатами, множеством электрических розеток … и т.д.
Именно это и есть Docker, он позволяет разработчикам упаковывать приложения в контейнеры docker.
Это место для хранения вашего пакета, который хорошо подготовлен и оснащен всем необходимым для того, чтобы ваше приложение работало в любой среде.
Поэтому Appwrite использует Docker для размещения своих пакетов и зависимостей, чтобы избавить вас от необходимости устанавливать все это.
Звучит слишком много? Не волнуйтесь! Вам не нужно изучать Docker, чтобы использовать Appwrite, пока что 😉.
Теперь мы вместе узнаем, на что способен Appwrite и как BaaS может помочь вам как разработчику. Сначала вам нужно будет установить Docker на вашу машину, а затем Appwrite в ваш проект, я не буду описывать процесс установки, так как есть много ресурсов, объясняющих эту часть.
Установка:
Appwrite Installation Docs очень описателен и имеет множество вариантов, но если вы хотите получить другой источник информации, вы можете ознакомиться с этой статьей от @lohanidamodar
Также если вы хотите посмотреть, как я подключил Appwrite к своему проекту, посмотрите, как я это сделал, отметив, что вы всегда должны скрывать свой ключ appwrite, я этого не сделал только потому, что это пока локальный проект.
1- Web SDK
2- Node SDK
Консоль :
После успешной установки и привязки Appwrite к вашему проекту. Вы получите доступ к странице консоли Appwrite. Это ваш командный пункт управления, где у вас есть полный обзор всего, что происходит в вашем приложении. На скриншоте выше показана моя консольная страница для проекта Tailwinder.
Начало работы:
Я собираюсь использовать проект Tailwinder в качестве примера при объяснении. Я считаю, что объяснение на реальном примере проекта — это лучший способ показать вам, как все это работает. Я сосредоточусь на возможностях Appwrite и BaaS в целом, а не на самом проекте.
- Вот репозиторий Github:
MooseSaeed / Tailwinder
Добро пожаловать в Tailwinder 👋
Сообщество с открытым исходным кодом для поклонников tailwind — на базе Appwrite
Этот проект был создан для хакатона Appwrite на Dev Community
Расположение API Appwrite Node SDK
ЗДЕСЬ
Используемый стек |
---|
Appwrite |
Appwrite Node SDK |
TailwindCSS |
VueJS |
Vue Router |
SwiperJS |
AnimateCSS |
Дополнительная информация
Таблица содержания (структура Tailwinder): |
---|
1- Домашняя страница |
1-a- Динамическая картинка профиля (функция Appwrite) |
1-b- Динамический переключатель темной/светлой темы (функция Appwrite) |
1-c- Выцветающая панель навигации |
1-d- Крутой вид логотипа Tailwinder |
2- Регистрация/Вход в систему |
2-a- Динамический URL пользователя (функция Appwrite) |
2-b- Вход/выход пользователя (функция Appwrite) |
3- Профиль пользователя |
3-a- Динамическая картинка профиля (функция Appwrite) |
3-b- Динамическая информация о пользователе (функция Appwrite) |
3-c- Обновление информации о пользователе (функция записи приложений) |
3-d- Динамические взносы пользователя (функция Appwrite) |
4- Компоненты |
4-a- Динамическая выборка компонентов (функция Appwrite) |
4-b- Добавление нового компонента (функция Appwrite) |
4-c- Просмотр компонентов (функция Appwrite) |
5- Академия Tailwinder |
5-a- Динамическая выборка ресурсов (функция Appwrite) |
5-b- Академия добавления / просмотра |
…
Аутентификация:
Appwrite имеет огромный набор API, чтобы помочь вам управлять пользователями вашего проекта. Вам больше не придется писать много строк кода для создания пользователя, создания магического URL, обновления информации о пользователе … и т.д.
Если вы посмотрите на DOCs Appwrite, вы увидите, что первые два раздела в их REST API — это Account и User.
Сначала мне показалось, что я не совсем понимаю разницу между этими двумя API, но потом все стало ясно.
1- Account API:
Account API — это все о текущем вошедшем в систему пользователе. У вас есть доступ ко всем видам методов, но все они относятся к пользователю, который в данный момент вошел в систему. Поэтому в основном вы будете использовать Web SDK, поскольку он относится к клиентской части.
2 — User API:
В то время как User API имеет дело со всеми пользователями в вашем проекте. Считайте, что это административный API для всех пользователей. Этот REST API вы можете интегрировать с помощью интеграции на стороне сервиса с Node SDK.
- Пример:
👉Github Исходный код страницы профиля пользователя👈.
В проекте Tailwinder, когда пользователь обновляет свою личную информацию на странице своего профиля, я использую Account API для этого, потому что мне нужно, чтобы только текущий зарегистрированный пользователь обновил свою информацию. Но когда дело доходит до просмотра этой информации на странице профиля пользователя, я должен был использовать User API, чтобы сделать эту информацию видимой для всех. Если бы я использовал Account API для просмотра информации о пользователе, это не сработало бы, потому что он может получить информацию только о текущем вошедшем пользователе, поэтому был использован User API.
База данных:
Представьте себе мир, в котором вам не нужно беспокоиться о базе данных или проверке форм, мир, в котором не нужно создавать так много API для связи с базой данных, запросов и фильтрации списков строк или записей. Это именно то, что BaaS может сделать для вас, и здесь мы будем говорить об Appwrite.
Если у вас есть небольшой опыт работы с базами данных, поймите это так:
Appwrite позволяет хранить документы в так называемых «коллекциях». Эти коллекции можно рассматривать как контейнеры для любых документов, которые вы хотите сохранить в них. Каждая коллекция может иметь множество атрибутов, эти атрибуты — ваш способ сказать: «Эта коллекция должна принимать только те записи, которые соответствуют этим условиям».
Чтобы упростить это, думайте об этом так:
Термин записи приложений | Обычный термин базы данных |
---|---|
Коллекции | Таблицы |
Атрибуты | Колонки |
Документы | Строки |
- Пример:
Здесь я позволяю пользователю:
1- Просмотреть все компоненты tailwind, представленные пользователями.
2- Отправить новый компонент.
3- Просмотреть детали выбранного компонента.
Для этого мне необходимо:
1- Создать коллекцию для типа компонента.
2- Установить атрибуты для коллекции, чтобы ограничить и проверить записи.
И это все! Вы можете в это поверить? Вы можете использовать консоль для достижения этой цели, если предпочитаете вообще не писать код, или просто использовать Web и Server SDK для достижения того же самого результата.
Затем, конечно, вот логика исходного кода:
1- Просмотреть список всех компонентов.
2- Добавить новый компонент.
3- Просмотреть детали компонента.
Хранение:
Хранилище похоже на базу данных appwrite, но в хранилище контейнеры называются «ведрами» и используются для хранения ваших файлов. Это позволяет вам управлять файлами вашего проекта. Storage API — это отличный способ хранить, загружать, просматривать, скачивать и запрашивать все файлы вашего проекта.
- Пример:
Если вы посмотрите сюда, то увидите, что при создании компонента пользователь может сохранить в приложении образцы изображений компонента. А после отправки компонента любой пользователь может просмотреть эти изображения на странице просмотра компонента.
Это делается с помощью логики создания нового ведра с использованием API хранения, хранения выбранных файлов в этом ведре и получения предварительного просмотра изображений внутри этого ведра.
О том, как я это сделал, вы можете узнать здесь.
Аватар:
У них даже есть API для предоставления временного аватара для ваших пользователей. Допустим, новый пользователь регистрируется в вашем приложении. У этого пользователя должна быть стандартная фотография профиля, в большинстве случаев это сероватая человеческая фигура, что означает, что это пользователь-призрак. Вместо этого Appwrite предоставит вам картинку профиля по умолчанию с первой буквой имени и фамилии пользователя.
- Пример:
Здесь логика проста, я проверяю, есть ли у пользователя ведро с его именем (сохранена ли картинка профиля), если нет, то отображаю аватар Appwrite.
Посмотрите исходный код здесь.
Заключение:
Appwrite — это технология, которая поможет вам быстрее начать свой проект. Но Appwrite — это один из провайдеров BaaS, есть много платформ, которые делают похожую работу с Appwrite, но я считаю Appwrite лучшей для меня до сих пор.
У вас больше нет оправданий для откладывания потрясающих проектов, которые вы задумали, разработка бэкенда никогда не была такой простой. В Appwrite и в BaaS в целом еще столько всего интересного, но я считаю, что этого достаточно для одной статьи. Возможно, я напишу еще одну с более подробной информацией о том, как начать проект с нуля и масштабировать его до полноценного живого проекта.
Теперь, когда вы сформировали приличные знания и осведомленность об Appwrite и BaaS, что вы думаете о них? Дайте мне знать в комментариях 🙂