Create-universal-App (CUA) adalah templat yang dipelajari untuk membuat aplikasi full-stack universal (seluler + web codeshare) dengan auth bawaan untuk seluler dan web menggunakan Expo (seluler), NextJS (Web), TRPC , Prisma , Tamagui (UI + Styling), dan juru tulis (Mobile + Web Auth). Demo ditayangkan di https://cua-demo.vercel.app/.
Berikut tutorial YouTube 20 menit membahas segalanya jika itu lebih dari gaya Anda!
Anda juga dapat menjalankan npx create-t3-universal-app untuk memulai proyek Anda (oleh Albbus). Tambahkan salah satu bendera berikut jika Anda menginginkan variasi CUA tertentu:
--with-supabase--with-drizzle-pg--with-drizzle-sqlJika Anda punya pertanyaan saat menggunakan ini, jangan ragu untuk bergabung dengan? Perselisihan?, Kita semua cukup aktif di sana!
Repo ini dibuat di atas :
Kode frontend Anda akan berada di React Native, artinya Anda akan menulis pandangan alih -alih divs. Karena kami menggunakan Tamagui pada khususnya, kami akan menulis tumpukan sebagai gantinya.
apps/expo dan apps/next adalah folder praktis kosong yang hanya merujuk packages/app Anda. Kode backend Anda akan berada di packages/api . NextJS akan menjalankan kode ini di lingkungan tanpa server, jika Anda sedikit bingung tentang cara kerjanya di sini adalah video yang bagus oleh Theo yang berbicara tentang NextJS sebagai kerangka kerja backend.
Catatan: Anda tidak perlu memahami bagaimana semuanya bekerja secara detail sebelum Anda dapat mulai menggunakan templat ini. Sebagai seseorang yang ingin tahu bagaimana setiap baut dan mur bekerja, saya sering "diblokir" oleh perfeksionisme saya sendiri, jadi saya hanya membuang ini di luar sana jika Anda merasakan hal yang sama tentang sesuatu.
TLDR : Ini untuk membuat segalanya terlihat cantik di web dan seluler sambil benar -benar sangat cepat dan mudah dikerjakan. Lebih detail, Tamagui memiliki 3 hal:
Lihat dokumen mereka untuk informasi lebih lanjut.
Yang saya sukai dari Tamagui adalah bahwa itu secara bersamaan tailwind dan daisyui yang dibangun dari bawah ke atas yang dirancang untuk aplikasi universal dengan kompiler dan komponen inti sendiri.
Jangan ragu untuk menggunakan NativeWind & Tailwind alih -alih Tamagui, Anda harus dapat mengatur segalanya dengan cukup mudah (dan jika Anda berkontribusi pada templat ini membuat cabang dengan instalasi NativeWind).
Pada level tinggi, Panitera menjanjikan solusi manajemen pengguna secara keseluruhan alih-alih hanya otentikasi dengan hal-hal seperti profil pengguna, pelarangan dan manajemen perangkat bawaan. Dalam praktiknya, mereka memiliki perpustakaan expo/berikutnya yang sangat mirip dengan kait bawaan yang sangat bagus untuk digunakan! Saya pribadi bersenang -senang menggunakan Panitera dibandingkan dengan solusi lain seperti Firebase atau Supabase.
Saya sarankan Anda memutar instance Postgres di kereta api atau menggunakan Supabase, Anda dapat membawa sendiri karena tidak terlalu penting.
yarn install untuk menginstal paket dan membangun proyek..env.example , menghapus .example , dan memasukkan variabel lingkungan Anda.yarn db-push untuk mendorong skema prisma kita ke DB kita.yarn web untuk memulai server Web Dev.yarn native untuk dijalankan di iOS atau Android. PS : Agar ini berfungsi, Anda akan membutuhkan aplikasi web Anda di LocalHost: 3000, ingat bahwa aplikasi NextJS Anda juga merupakan backend Anda!yarn studio untuk memulai studio prisma Anda. PS : Kueri contoh TRPC akan menunjukkan example_entry yang dapat Anda hapus bersama dengan example_user yang terhubung.yarn dev untuk memulai semua paket dan aplikasi secara bersamaan.Untuk mengotomatiskan proses yang dijelaskan di bawah ini, Anda dapat menggunakan alat VScode Extension T3-CUA, juga tersedia di pasar. Ini akan membuat file dan menambahkan impor dan kode navigasi yang diperlukan untuk Anda.
packages/app/features/ .packages/ui/ .routeName.ts baru dalam packages/api/src/router/ dan pastikan untuk menggabungkannya di router aplikasi index.ts .apps/expo/app/ dan buat routeName.tsx baru yang mengimpor elemen Anda dari /app/features/screenName/ .apps/next/pages/ , buat folder baru dengan nama menjadi rute Anda dan index.tsx yang mengimpor elemen Anda dari /app/features/screenName/ . Setelah Anda membuat proyek baru di Vercel dan menautkannya dengan repo github Anda, Anda harus memasukkan variabel lingkungan Anda:
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEYCLERK_SECRET_KEYDATABASE_URL 
Di mana saya harus menginstal paket? Jika berisi kode asli, Anda harus menginstalnya ke folder /expo .
Bagaimana saya tahu jika berisi kode asli? Secara umum jika melibatkan beberapa interaksi dengan OS telepon seperti API untuk berinteraksi dengan penyimpanan, kamera, gyro, pemberitahuan, dll. Ini melibatkan kode asli!