Create-UniverSal-App (Cua) é um modelo opinativo para criar aplicativos Universal (Mobile + Codeshare) de palha completa com autenticação interna para celular e web usando expo (móvel), nextJs (web), trpc , prisma , tamagui (estilismo de UI +) e funcionário (Mobile + web auth). Uma demonstração está ao vivo em https://cua-demo.vercel.app/.
Aqui está um tutorial de 20 minutos no YouTube, repassa tudo, se isso for mais do seu estilo!
Você também pode executar npx create-t3-universal-app para iniciar seu projeto (por Albbus). Adicione uma das seguintes bandeiras se você quiser uma variação específica de Cua:
--with-supabase--with-drizzle-pg--with-drizzle-sqlSe você tiver alguma dúvida ao usar isso, fique à vontade para se juntar à nossa? Discord?, Somos todos bastante ativos lá!
Este repo é feito em cima de :
Seu código de front -end estará no React Native, o que significa que você escreverá visualizações em vez de divs. Como estamos usando o Tamagui em particular, vamos escrever pilhas em vez de visualizações.
apps/expo e apps/next são praticamente pastas vazias que estão simplesmente referenciando seus packages/app . Seu código de back -end será em packages/api . NextJS vai executar esse código em um ambiente sem servidor, se você estiver um pouco confuso sobre como isso funciona aqui está um bom vídeo de Theo que fala sobre NextJs como uma estrutura de back -end.
Nota: Você não precisa entender como tudo funciona em detalhes antes de começar a usar esse modelo. Como alguém que quer saber como todo parafuso e porca funciona, muitas vezes fico "bloqueado" pelo meu próprio perfeccionismo, então estou apenas jogando isso lá fora, caso você esteja se sentindo o mesmo com alguma coisa.
TLDR : É para fazer as coisas parecerem bonitas na Web e no celular, sendo muito rápido e fácil de trabalhar. Com mais detalhes, Tamagui tem 3 coisas:
Confira seus documentos para obter mais informações.
O que eu gosto no Tamagui é que é simultaneamente o Tailwind e o Daisyui que foi construído a partir do chão projetado para aplicativos universais com seu próprio compilador e componentes principais.
Sinta -se à vontade para usar o NativeWind & Tailwind em vez de Tamagui, você poderá configurar as coisas com bastante facilidade (e se você contribuir com esse modelo, criando uma ramificação com a instalação do nativo).
Em um nível alto, o funcionário promete uma solução geral de gerenciamento de usuários, em vez de apenas autenticação com coisas como o perfil do usuário, proibição e gerenciamento de dispositivos integrados. Na prática, eles têm uma biblioteca Expo/Next muito semelhante, com ganchos embutidos que são muito bons de usar! Pessoalmente, eu me diverti muito usando o funcionário em comparação com outras soluções como Firebase ou Supabase.
Eu recomendo que você gire uma instância do Postgres na Ferrovia ou use Supabase, você pode trazer o seu, pois isso não importa muito.
yarn install para instalar pacotes e construir o projeto..env.example , removendo .example e inserindo suas variáveis de ambiente.yarn db-push para empurrar nosso esquema prisma ao nosso banco de dados.yarn web para iniciar um servidor de desenvolvimento da web.yarn native para correr no iOS ou Android. PS : Para que isso funcione, você precisará do seu aplicativo da web em execução no localhost: 3000, lembre -se de que seu aplicativo NextJS também é o seu back -end!yarn studio para iniciar seu estúdio Prisma. PS : A consulta de exemplo TRPC mostrará um example_entry que você pode excluir junto com o example_user conectado_user.yarn dev para iniciar todos os pacotes e aplicativos simultaneamente.Para automatizar o processo explicado abaixo, você pode usar as ferramentas T3-CUA-Tools da Extensão do VSCODE, também disponíveis no mercado. Ele criará os arquivos e adicionará as importações e o código de navegação necessário para você.
packages/app/features/ .packages/ui/ .routeName.ts em packages/api/src/router/ e certifique -se de mesclá -lo no roteador de aplicativos index.ts .apps/expo/app/ e crie um novo routeName.tsx que está importando seu elemento de /app/features/screenName/ .apps/next/pages/ , crie uma nova pasta com o nome sendo sua rota e um index.tsx que está importando seu elemento de /app/features/screenName/ . Depois de criar um novo projeto no Vercel e vinculá -lo ao seu repositório do Github, você terá que inserir suas variáveis de ambiente:
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEYCLERK_SECRET_KEYDATABASE_URL 
Onde devo instalar os pacotes? Se ele contiver código nativo, você deve instalá -lo na pasta /expo .
Como sei se ele contém código nativo? Em geral, se envolver algumas interações com o sistema operacional do telefone, como as APIs para interagir com armazenamento, câmera, giroscópio, notificação etc. envolve código nativo!