Create-Universal-App(CUA)は、 Expo (Mobile)、 NextJS (Web)、 TRPC 、 Prisma 、Tamagui(UI + Styling)、 Clerk (Mobile + Web auth)を使用して、モバイルとWebの両方に組み込まれたAuthを備えたフルスタックのユニバーサル(モバイル + Webコードシェア)アプリを作成するための意見のあるテンプレートです。デモはhttps://cua-demo.vercel.app/でライブです。
それがあなたのスタイルの方があれば、すべてを調べる20分間のYouTubeチュートリアルがあります!
また、 npx create-t3-universal-appを実行してプロジェクトを開始することもできます(Albbusによる)。 CUAの特定のバリエーションが必要な場合は、次のフラグのいずれかを追加します。
--with-supabase--with-drizzle-pg--with-drizzle-sqlこれを使用している間に質問がある場合は、自由に私たちの「discord??」に参加してください。
このレポは次のように作成されています:
フロントエンドコードはReactネイティブになります。つまり、Divの代わりにビューを作成する予定です。特にTamaguiを使用しているので、代わりにStacks Viewを作成します。
apps/expoとapps/next packages/appフォルダーを参照しているだけで、実質的に空のフォルダーです。バックエンドコードはpackages/apiになります。 NextJSは、サーバーレス環境でこのコードを実行する予定です。ここで、それがどのように機能するかについて少し混乱している場合は、BackEndフレームワークとしてNextJSについて話す良いビデオです。
注:このテンプレートの使用を開始する前に、すべてがどのように詳細に機能するかを理解する必要はありません。すべてのボルトとナットがどのように機能するかを知りたい人として、私はしばしば自分の完璧主義によって「ブロック」されるので、あなたが何かについて同じことを感じている場合に備えて、私はこれをそこに投げています。
TLDR :それは、本当に速くて作業しやすい一方で、Webとモバイルの両方で物事をきれいに見せるためです。より詳細には、Tamaguiには3つのことがあります。
その他の情報については、ドキュメントをご覧ください。
Tamaguiについて私が気に入っているのは、独自のコンパイラとコアコンポーネントを備えたユニバーサルアプリ向けに設計されたゼロから構築された、同時に追い風とDaisyuiです。
Tamaguiの代わりにNativeWind&Tailwindを自由に使用してください。物事をかなり簡単にセットアップできるはずです(もしそうなら、このテンプレートに貢献してください。
高レベルでは、Clerkは、ユーザープロファイル、禁止、デバイス管理が組み込まれたものを使用して認証するだけでなく、全体的なユーザー管理ソリューションを約束します。実際には、非常によく似たエキスポ/ネクストライブラリがあり、使用するのが非常に良いフックが組み込まれています! FirebaseやSupabaseなどの他のソリューションと比較して、私は個人的に店員を使用して楽しい時間を過ごしました。
鉄道でPostgresインスタンスをスピンアップするか、Supabaseを使用することをお勧めします。
yarn installパッケージをインストールし、プロジェクトを構築します。.env.exampleファイルを複製し、 .exampleを削除し、環境変数の入力により、環境変数を適切に設定します。yarn db-pushでプリスマスキーマをDBに押し込みます。yarn web Web Devサーバーを起動する。yarn native 。 PS :これが機能するには、localhost:3000でWebアプリを実行する必要があります。NextJSアプリもバックエンドであることを忘れないでください。yarn studio 。 PS :TRPCの例クエリには、接続されたexample_userと一緒に削除できるexample_entryが表示されます。yarn dev 。以下で説明するプロセスを自動化するには、VSCODE拡張T3-CUA-Toolsを使用できます。これも市場で入手できます。ファイルを作成し、必要なインポートとナビゲーションコードを追加します。
packages/app/features/で新しい画面を作成します。packages/ui/に入れてください。packages/api/src/router/に新しいrouteName.tsを追加し、 index.tsアプリルーターにマージしてください。apps/expo/app/に移動し、 /app/features/screenName/から要素をインポートしている新しいrouteName.tsxを作成します。apps/next/pages/に移動し、名前がルートとindex.tsxである新しいフォルダーを作成して、 /app/features/screenName/から要素をインポートしています。 Vercelで新しいプロジェクトを作成し、GitHubリポジトリにリンクした後、環境変数を入力する必要があります。
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEYCLERK_SECRET_KEYDATABASE_URL 
パッケージはどこにインストールすればよいですか?ネイティブコードが含まれている場合は/expoフォルダーにインストールする必要があります。
ネイティブコードが含まれているかどうかはどうすればわかりますか?一般に、ストレージ、カメラ、ジャイロ、通知などと対話するためにAPIなどの電話OSとのいくつかのやり取りが含まれる場合。ネイティブコードが含まれます。