NextJSテンプレート

Next.js、Vercel、および Back4app を使った請求書アプリのチュートリアル

25min

このチュートリアルでは、完全な Invoicing App を構築します。フロントエンドには Next.js を使用し、バックエンドには Back4App を使用し、認証には Clerk を、支払いには Stripe を、メール通知には Resend を使用します。このガイドでは、認証の設定、請求書管理、支払い処理、そして Vercel へのデプロイメントについて説明します。

1. 前提条件

始める前に、以下のものを用意してください:

2. バックエンドの設定 (Back4App)

2.1 Back4Appで新しいプロジェクトを作成する

  1. Back4Appにログインして新しいプロジェクトを作成します。
  2. データブラウザに移動し、以下のクラスを作成します:

2.2 データモデル (クラス)

2.2.1 ユーザー (Clerkによって自動的に処理されます)

  • オブジェクトID
  • ユーザー名
  • メール

2.2.2 組織

  1. Organization」というクラスを作成します。
  2. 次の列を追加します:
    • 名前 (String): 組織の名前。
    • ownerId (Pointer<_User>): 「User」クラスを指します(Clerkによって自動的に作成されます)。
    • メンバー (Array<Pointer<_User>>): この組織に属するユーザーの配列。

2.2.3 顧客

  1. Customer」というクラスを作成します。
  2. 次の列を追加します:
    • 名前 (String): 顧客の名前。
    • メール (String): 顧客のメール。
    • organizationId (Pointer): この顧客が属する組織。

2.2.4 請求書

  1. クラスを作成する 請求書.
  2. これらの列を追加します:
    • invoiceNumber (文字列): ユニークな請求書識別子。
    • customerId (ポインタ): 顧客へのリンク。
    • organizationId (ポインタ): 組織へのリンク。
    • amount (数値): 請求書の合計金額。
    • status (文字列): 'ドラフト', '送信済み', '支払い済み', '期限切れ' などのオプション。
    • dueDate (日付): 請求書の期限日。
    • items (配列): 請求書内のアイテムのリスト。

2.2.5 支払い

  1. クラスを作成する 支払い.
  2. これらの列を追加します:
    • invoiceId (ポインタ): 関連する請求書へのリンク。
    • amount (数値): 支払い金額。
    • stripeSessionId (文字列): StripeセッションのID。
    • status (文字列): 支払いのステータス(例: '保留中', '成功', '失敗')。

3. フロントエンドの設定 (Next.js)

3.1 Next.js プロジェクトの作成

TypeScript、Tailwind CSS、および shadcn/ui コンポーネントを使用して Next.js プロジェクトを設定します。

Bash


3.2 Tailwind CSS の設定

Tailwind を設定するには、tailwind.config.js を更新し、globals.css にスタイルを追加します。

次の内容を tailwind.config.js:

JS


次の内容を styles/globals.css:

CSS


3.3 Parse SDK と追加サービスのインストール

Parse、Clerk、Stripe、および Resend の必要な依存関係をインストールします。

Bash


3.4 Next.js で Parse SDK を初期化する

次の内容を pages/_app.tsx, で Parse SDK を Back4App の資格情報で初期化します:

TypeScript


次の内容を置き換えます: 'YOUR_APP_ID''YOUR_JAVASCRIPT_KEY' を Back4App の資格情報に置き換えます。

4. ユーザー認証の実装

4.1 認証のためのClerk統合

認証のために Clerk を設定します。Clerkのダッシュボードに移動し、アプリケーションを作成し、APIキーを取得します。Clerkキーで .env.local ファイルを更新します。

Bash


次に、Clerkコンポーネントを使用して、サインインおよびサインアップ機能のために pages/sign-in.tsxpages/sign-up.tsx を作成します。

次に、 pages/sign-in.tsx:

Text


次に、 pages/sign-up.tsx:

Text


5. 組織と顧客管理

5.1 組織の作成

ユーザーは自分が所有する組織を作成できます。新しい組織を作成するためのページ pages/organizations/new.tsx を作成します。

Text


5.2 顧客の管理

新しい顧客を追加するための顧客管理ページ pages/customers/new.tsx を作成します。

Text


6. 請求書管理

6.1 請求書の作成

新しい請求書を生成するための請求書作成ページ pages/invoices/new.tsx を作成します。

Text


6.2 請求書の表示

ページを作成します pages/invoices/index.tsx すべての請求書を表示し、ソートおよびフィルタリングオプションを提供します。

Text


7. 支払い処理(Stripe統合)

7.1 ストライプチェックアウトの設定

支払いを処理するには、Stripeを統合します。 pages/invoices/[id].tsxにおいて、Stripe Checkoutを使用して支払いリンクの作成を実装します。

Text


8. メール通知(再送信統合)

8.1 請求書メールの送信

Resend」を設定して、クライアントに請求書メールを送信します。

Text


9. Vercelへのデプロイ

アプリをVercelにデプロイするには、Vercel CLIをインストールしてデプロイします。

Bash


デプロイ前に、VercelダッシュボードでClerk、Stripe、Resend、Back4Appの環境変数を設定します。

10. 結論

このチュートリアルでは、完全な 請求書アプリをNext.jsで構築し、バックエンドに Back4Appを統合し、認証に Clerk、支払いに Stripe、メール通知に Resendを使用しました。ユーザーと組織の管理、請求書の作成、支払い処理、デプロイについて説明しました。