Create-Universal-App (CUA) -это самоуверенный шаблон для создания приложений Universal (Mobile + Web + Code) со встроенной AUTH как для мобильной связи, так и для веб-сайта с использованием EXPO (Mobile), NextJS (WEB), TRPC , PRISMA , TAMAGUI (UI + Styling) и Clerk (Mobile + Web). Демонстрация живет на https://cua-demo.vercel.app/.
Вот 20 -минутный учебник на YouTube, который проходит по всему, если это больше вашего стиля!
Вы также можете запустить npx create-t3-universal-app чтобы начать свой проект (от Albbus). Добавьте один из следующих флагов, если вы хотите конкретный вариант CUA:
--with-supabase--with-drizzle-pg--with-drizzle-sqlЕсли у вас есть какие -либо вопросы при использовании этого, не стесняйтесь присоединиться к нашему Discord?, Мы все довольно активны там!
Это репо сделано на вершине :
Ваш код Frontend будет в React Native, что означает, что вы собираетесь писать представления вместо DOV. Поскольку мы используем тамагуи, в частности, мы собираемся писать стеки вместо этого.
apps/expo и apps/next являются практически пустыми папками, которые просто ссылаются на ваши packages/app . Ваш бэкэндский код будет в packages/api . NextJS собирается запустить этот код в без серверной среде, если вы немного смущены тем, как это работает, вот хорошее видео Theo, в котором рассказывается о NextJS как бэкэнд -структуре.
Примечание: вам не нужно понимать, как все работает подробно, прежде чем вы сможете начать использовать этот шаблон. Как кто -то, кто хочет знать, как работает каждый болт и орех, меня часто «заблокируют» своим собственным перфекционизмом, поэтому я просто бросаю это там, если вы чувствуете то же самое о чем -то.
TLDR : Это для того, чтобы все было красиво выглядеть как на Интернете, так и на мобильных устройствах, в то же время очень быстро и легко работая. Более подробно, у тамагуи есть 3 вещи:
Проверьте их документы для получения дополнительной информации.
Что мне нравится в Tamagui, так это то, что он одновременно вытекает на ветер и Daisyui, созданный с нуля, предназначенных для универсальных приложений с собственными компиляторами и основными компонентами.
Не стесняйтесь использовать NativeWind & Taillid вместо Tamagui, вы должны быть в состоянии установить вещи довольно легко (и если вы это сделаете , внести свой вклад в этот шаблон, создавая филиал с установкой NativeWind).
На высоком уровне Клерк обещает общее решение управления пользователями, а не просто аутентификацию с такими вещами, как профиль пользователя, встроенный запрет и управление устройствами. На практике у них есть очень похожая библиотека Expo/Next со встроенными крючками, которые очень приятно использовать! Я лично отлично провел время, используя клерк по сравнению с другими решениями, такими как Firebase или Supabase.
Я рекомендую вам либо развернуть экземпляр Postgres на железной дороге, либо использовать Supabase, вы можете принести свой собственный, поскольку это не имеет большого значения.
yarn install для установки пакетов и создания проекта..env.example , удаления .example и введя переменные вашей среды.yarn db-push , чтобы подтолкнуть нашу схему Prisma к нашему БД.yarn web , чтобы запустить веб -сервер.yarn native для работы на iOS или Android. PS : Для этого вам понадобится ваше веб -приложение, работающее на Localhost: 3000, помните, что ваше приложение NextJS также является вашим бэкэнд!yarn studio , чтобы запустить вашу Prisma Studio. PS : Пример примера TRPC покажет example_entry , который вы можете удалить вместе с подключенным example_user .yarn dev , чтобы запустить все пакеты и приложения одновременно.Для автоматизации процесса, объясненного ниже, вы можете использовать VSCODE Extension T3-CUA-Tools, также доступные на рынке. Он создаст файлы и добавит для вас необходимый импорт и навигационный код.
packages/app/features/ .packages/ui/ .routeName.ts в packages/api/src/router/ и обязательно объедините его в маршрутизаторе приложения index.ts .apps/expo/app/ и создайте новый routeName.tsx , который импортирует ваш элемент из /app/features/screenName/ .apps/next/pages/ , Создайте новую папку с именем, являющимся вашим маршрутом, и index.tsx , который импортирует ваш элемент из /app/features/screenName/ . После того, как вы создали новый проект на Vercel и связали его со своим репозитором GitHub, вам придется ввести переменные среды:
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEYCLERK_SECRET_KEYDATABASE_URL 
Где мне установить пакеты? Если он содержит натуральный код, вы должны установить его в папку /expo .
Как я узнаю, содержит ли он собственный код? В общем, если это включает в себя некоторые взаимодействия с телефонной ОС, такими как API, для взаимодействия с хранением, камерой, гирозоном, уведомлением и т. Д. Это включает в себя натуральный код!