Create-Universal-App (CUA) est un modèle d'opinion pour créer des applications universelles complètes (mobile + web codeshare) avec Auth intégrée pour mobile et Web à l'aide de l'Expo (mobile), NextJS (Web), TRPC , PRISMA , TAMAGUI (UI + Styling) et Clerk (Mobile + Web Auth). Une démo est en direct sur https://cua-demo.vercel.app/.
Voici un tutoriel YouTube de 20 minutes qui dépasse tout si c'est plus de votre style!
Vous pouvez également exécuter npx create-t3-universal-app pour démarrer votre projet (par Albbus). Ajoutez l'un des drapeaux suivants si vous voulez une variation spécifique de CUA:
--with-supabase--with-drizzle-pg--with-drizzle-sqlSi vous avez une question lors de l'utilisation, n'hésitez pas à rejoindre notre? Discord ?, Nous sommes tous assez actifs là-dedans!
Ce repo est fabriqué au-dessus de :
Votre code Frontend sera dans React Native, ce qui signifie que vous allez écrire des vues au lieu des div. Puisque nous utilisons Tamagui en particulier, nous allons écrire des piles à la place.
apps/expo et apps/next sont des dossiers pratiquement vides qui font simplement référence à votre dossier packages/app . Votre code backend sera en packages/api . NextJS va exécuter ce code dans un environnement sans serveur, si vous êtes un peu confus sur la façon dont cela fonctionne, voici une bonne vidéo de Theo qui parle de NextJS en tant que cadre backend.
Remarque: vous n'avez pas besoin de comprendre comment tout fonctionne en détail avant de pouvoir commencer à utiliser ce modèle. En tant que personne qui veut savoir comment fonctionne chaque boulon et écrou, je suis souvent "bloqué" par mon propre perfectionnisme, donc je jette ça là-bas au cas où vous ressentiriez la même chose à propos de quelque chose.
TLDR : C'est pour rendre les choses jolies sur le Web et le mobile tout en étant très rapide et facile à travailler. Plus en détail, Tamagui a 3 choses:
Consultez leurs documents pour plus d'informations.
Ce que j'aime chez Tamagui, c'est qu'il est simultanément du vent arrière et de Daisyui qui est construite à partir de zéro conçue pour les applications universelles avec son propre compilateur et composants principaux.
N'hésitez pas à utiliser Nativewind & Tailwind au lieu de Tamagui, vous devriez être en mesure de configurer les choses assez facilement (et si vous le faites, veuillez contribuer à ce modèle créant une branche avec l'installation nativewind).
À un niveau élevé, Clerk promet une solution globale de gestion des utilisateurs au lieu de simplement authentification avec des choses comme le profil utilisateur, l'interdiction et la gestion des appareils intégrés. En pratique, ils ont une bibliothèque d'expo / prochaine très similaire avec des crochets intégrés qui sont très agréables à utiliser! J'ai personnellement passé un bon moment à utiliser le greffier par rapport à d'autres solutions comme Firebase ou Supabase.
Je vous recommande de faire tourner une instance Postgres sur le chemin de fer ou d'utiliser Supabase, vous pouvez apporter le vôtre car cela n'a pas trop d'importance.
yarn install pour installer des packages et construire le projet..env.example , en supprimant .example et en entrant vos variables d'environnement.yarn db-push pour pousser notre schéma PRISMA à notre DB.yarn web pour démarrer un serveur de développement Web.yarn native à fonctionner sur iOS ou Android. PS : Pour que cela fonctionne, vous aurez besoin de votre application Web en cours d'exécution sur LocalHost: 3000, n'oubliez pas que votre application NextJS est également votre backend!yarn studio pour démarrer votre studio Prisma. PS : La requête de l'exemple TRPC affichera un example_entry que vous pouvez supprimer avec l' example_user connecté_user.yarn dev pour démarrer simultanément tous les packages et applications.Pour automatiser le processus expliqué ci-dessous, vous pouvez utiliser le VScode Extension T3-Cua-Tools, également disponible sur le marché. Il créera les fichiers et ajoutera les importations et le code de navigation nécessaires pour vous.
packages/app/features/ .packages/ui/ .routeName.ts dans packages/api/src/router/ et assurez-vous de le fusionner dans le routeur de l'application index.ts .apps/expo/app/ et créez un nouveau routeName.tsx qui importe votre élément à partir de /app/features/screenName/ .apps/next/pages/ , créez un nouveau dossier avec le nom étant votre itinéraire et un index.tsx qui importe votre élément de /app/features/screenName/ . Après avoir créé un nouveau projet sur Vercel et l'avoir lié à votre dépôt GitHub, vous devrez saisir vos variables d'environnement:
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEYCLERK_SECRET_KEYDATABASE_URL 
Où dois-je installer les packages? S'il contient du code natif, vous devez l'installer dans le dossier /expo .
Comment savoir s'il contient du code natif? En général, si cela implique certaines interactions avec le système d'exploitation du téléphone comme les API pour interagir avec le stockage, la caméra, le gyroscope, la notification, etc., il implique le code natif!