# custom_expo_camera **Repository Path**: SuperWindcloud/custom_expo_camera ## Basic Information - **Project Name**: custom_expo_camera - **Description**: 自定义 Expo camera capture View - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-28 - **Last Updated**: 2025-12-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README <<<<<<< HEAD # Create Expo Stack Template Modern Expo starter scaffolded for full-stack, multi-platform apps. It ships with Expo Router, typed tooling, shadcn-inspired primitives, Tailwind + NativeWind styling, Supabase utilities, and bilingual (English/Chinese) translations out of the box. ## Tech Stack - Expo SDK 54 with Expo Router 6 - React Native 0.81 & React 19 - TypeScript (strict), ESLint, Prettier, Husky - NativeWind + Tailwind CSS 3, `tailwindcss-animate`, theming via CSS variables - shadcn/ui primitives from `@rn-primitives` - i18n with `i18next`, `react-i18next`, `expo-localization` - Supabase client wrapper (AsyncStorage session persistence) - Lucide icon set for React Native ## Getting Started ### Prerequisites - Node.js 18+ (Node 20 LTS recommended) - npm 9+ (ships with Node). You can substitute `pnpm` or `yarn`, but npm scripts are provided. - Expo tooling: `npm install -g expo-cli` (optional but handy) - Android Studio / Xcode for native emulators, or Expo Go on devices ### Install dependencies ```bash npm install ``` ### Configure environment variables Copy `.env.example` (if present) or create `.env` and add your Supabase credentials: ``` EXPO_PUBLIC_SUPABASE_URL=your-project-url EXPO_PUBLIC_SUPABASE_ANON_KEY=your-anon-key ``` These are required at runtime; the Supabase client throws early if they are missing. ### Run the app ```bash npm start # Expo CLI (press i / a / w for iOS / Android / web) npm run ios # Shortcut: expo start --ios npm run android # Shortcut: expo start --android npm run web # Shortcut: expo start --web ``` Metro is configured with `inlineRem: 16`; use `npm start -- --clear` if you change Metro settings and need to reset caches. ## Scripts - `npm run typecheck` – TypeScript project check (`tsc --noEmit`) - `npm run lint` – ESLint + Prettier consistency check - `npm run format` – Apply ESLint fixes and Prettier formatting - `npm run align` – `expo install --fix` to reconcile native dependencies - `npm run prebuild` – Prepare native projects - `npm run shadcn` – Invoke `@react-native-reusables/cli` for additional UI components - `npm run taze` – Upgrade dependencies (skips Tailwind to stay on v3 for NativeWind compatibility) ## Project Structure Highlights - `app/` – Expo Router routes (`_layout.tsx`, `index.tsx`, etc.), already wired to the theme provider and `PortalHost`. - `components/` – Shared UI components, including shadcn-inspired primitives in `components/ui/`. - `components/theme.tsx` – Syncs status bar and system background; toggles the `dark` class on web. - `lib/utils.ts` – `cn` helper combining `clsx` + `tailwind-merge`. - `locales/` – JSON translation catalogs (`en`, `zh`) and i18n initializer. - `global.css` – Tailwind layers plus CSS variable theme tokens (light/dark). - `tailwind.config.js` – Tailwind/NativeWind configuration (colors, radius, animations). - `utils/supabase.ts` – Supabase client configured with AsyncStorage persistence. ## Internationalization - Language detection reads system locale via `expo-localization`, normalizes to `en` or `zh`. - Add new languages by creating `locales/.json` and extending `resources` in `locales/index.ts`. - Use the `useTranslation` hook from `react-i18next` (`const { t } = useTranslation()`). ## Styling & UI - Tailwind utilities are available via NativeWind class names (`className` on React Native views). - Theme tokens pull from CSS variables; adjust hues in `global.css`. - shadcn components expect `cn` from `@/lib/utils`; keep that helper updated if you extend merging behavior. - Portal-based components (dialogs, hover cards, etc.) rely on `` in `app/_layout.tsx`. ## Supabase Integration - Requires `EXPO_PUBLIC_SUPABASE_URL` / `EXPO_PUBLIC_SUPABASE_ANON_KEY`. - Auth sessions persist in `AsyncStorage` and auto-refresh by default. - Extend the client or wrap queries inside your state/store as needed. ## Troubleshooting - **Metro cannot resolve `react-native-css-interop`** → ensure `npm install` ran after pulling. The dependency is pinned at the project root. - **Tailwind peer warnings** → Template intentionally uses Tailwind 3.x to match NativeWind’s current interop layer. - **Missing environment variables** → Supabase client throws during import; double-check your `.env`. - **shadcn diagnostics** → Confirm `global.css`, `tailwind.config.js`, and `app/_layout.tsx` match the docs (already configured here). ## Conventions & Next Steps - Keep translations mirrored between `en.json` and `zh.json`. - When adding new UI primitives via `npm run shadcn`, follow up with type validations (`npm run typecheck`). - Consider wiring in React Query, Sentry, expo-notifications, etc., depending on product needs. Happy building! ||||||| empty tree ======= # custom_expo_camera #### 介绍 自定义 Expo camera capture View #### 软件架构 软件架构说明 #### 安装教程 1. xxxx 2. xxxx 3. xxxx #### 使用说明 1. xxxx 2. xxxx 3. xxxx #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) >>>>>>> 3ae58503013b548210294a03f1f8e0403c4a6dad