Учебник по созданию приложения для выставления счетов с Next.js, Vercel и Back4app
В этом учебном пособии мы создадим полное Invoicing App с использованием Next.js в качестве фронтенда, Back4App в качестве бэкенда и дополнительных сервисов, таких как Clerk для аутентификации, Stripe для платежей и Resend для уведомлений по электронной почте. Это руководство проведет вас через настройку аутентификации, управление счетами, обработку платежей и развертывание на Vercel.
Перед началом убедитесь, что у вас есть следующее:
- Войдите в Back4App и создайте новый проект.
- Перейдите в Data Browser и создайте следующие классы:
- идентификатор объекта
- имя пользователя
- электронная почта
- Создайте класс под названием Организация.
- Добавьте следующие столбцы:
- имя (Строка): Имя организации.
- идентификатор владельца (Указатель<_Пользователь>): Указывает на класс Пользователь (создан автоматически Clerk).
- участники (Массив<Указатель<_Пользователь>>): Массив пользователей, принадлежащих этой организации.
- Создайте класс под названием Клиент.
- Добавьте эти столбцы:
- имя (Строка): Имя клиента.
- электронная почта (Строка): Электронная почта клиента.
- идентификатор организации (Указатель): Организация, к которой принадлежит этот клиент.
- Создайте класс под названием Счет-фактура.
- Добавьте эти столбцы:
- номерСчета (Строка): Уникальный идентификатор счета.
- идентификаторКлиента (Указатель): Ссылка на клиента.
- идентификаторОрганизации (Указатель): Ссылка на организацию.
- сумма (Число): Общая сумма счета.
- статус (Строка): Опции включают 'черновик', 'отправлено', 'оплачено' и 'просрочено'.
- срокПлатежа (Дата): Дата платежа по счету.
- позиции (Массив): Список позиций в счете.
- Создайте класс под названием Платеж.
- Добавьте эти столбцы:
- идентификаторСчета (Указатель): Ссылка на связанный счет.
- сумма (Число): Сумма платежа.
- идентификаторСессииStripe (Строка): Идентификатор сессии Stripe.
- статус (Строка): Статус платежа (например, 'ожидание', 'успешно', 'неудачно').
Начните с настройки вашего проекта Next.js с TypeScript, Tailwind CSS и компонентами shadcn/ui.
Настройте Tailwind, обновив tailwind.config.js и добавив стили в globals.css.
В tailwind.config.js:
В styles/globals.css:
Установите необходимые зависимости для Parse, Clerk, Stripe и Resend.
В pages/_app.tsx, инициализируйте Parse SDK с вашими учетными данными Back4App:
Замените 'YOUR_APP_ID' и 'YOUR_JAVASCRIPT_KEY' на ваши учетные данные Back4App.
Настройте Clerk для аутентификации. Перейдите на панель управления Clerk, создайте приложение и получите свои API-ключи. Обновите свой .env.local файл с ключами Clerk.
Теперь создайте pages/sign-in.tsx и pages/sign-up.tsx для функциональности входа и регистрации, используя компоненты Clerk.
В pages/sign-in.tsx:
В pages/sign-up.tsx:
Пользователи могут создавать организации, которыми они владеют. Создайте страницу pages/organizations/new.tsx для создания новых организаций.
Создайте страницу управления клиентами pages/customers/new.tsx для добавления новых клиентов.
Создайте страницу создания счета pages/invoices/new.tsx для генерации новых счетов.
Создайте страницу pages/invoices/index.tsx для просмотра всех счетов с возможностями сортировки и фильтрации.
Для обработки платежей интегрируйте Stripe. В pages/invoices/[id].tsx, реализуйте создание платежной ссылки с использованием Stripe Checkout.
Настройте Resend для отправки счетов по электронной почте клиентам.
Чтобы развернуть приложение на Vercel, установите Vercel CLI и разверните.
Настройте переменные окружения для Clerk, Stripe, Resend и Back4App в панели управления Vercel перед развертыванием.
В этом учебном пособии мы создали полное Invoicing App с использованием Next.js, интегрировали Back4App для бэкенда, Clerk для аутентификации, Stripe для платежей и Resend для уведомлений по электронной почте. Мы рассмотрели управление пользователями и организациями, создание счетов, обработку платежей и развертывание.