- TypeScript 74.3%
- HTML 25.5%
- JavaScript 0.2%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
All checks were successful
CI Pipeline / Validate (push) Successful in 11m1s
Reviewed-on: #1 |
||
| .cursor/rules | ||
| .forgejo/workflows | ||
| .github/workflows | ||
| .husky | ||
| app | ||
| assets | ||
| components | ||
| constants | ||
| context | ||
| data | ||
| docs | ||
| hooks | ||
| requirements | ||
| scripts | ||
| site | ||
| src/types | ||
| .env.example | ||
| .gitignore | ||
| .lintstagedrc.json | ||
| app.config.ts | ||
| eas.json | ||
| eslint.config.js | ||
| expo-extra.d.ts | ||
| google-services.json | ||
| GoogleService-Info.plist | ||
| metro.config.js | ||
| mkdocs.yml | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| reset.sh | ||
| tsconfig.json | ||
Gezen Mobile
Gezen Mobile is a React Native application built with Expo Router for managing factories, machines, quotes, tasks, planning events, notifications, and related production catalog data.
What the app covers
- Authentication and authenticated user state
- Factory and machine management
- Quote creation, editing, and proforma sharing
- Task management and task photo uploads
- Calendar and planning events
- Push notifications and unread notification tracking
- Production reference catalogs for brands, models, sectors, categories, and modules
- Local maintenance mode configuration
Tech Stack
- Expo Router
- React Native 0.81
- TypeScript
- Axios
- Expo Secure Store
- Expo Notifications
- React Native Calendars
- React Native Reanimated
Setup
This app uses a custom Expo development client (expo-dev-client), not Expo Go. Native modules such as expo-secure-store are compiled into the iOS/Android app at build time.
Full setup and troubleshooting: docs/setup.md
First-time checklist
- Clone the repository
- Install dependencies with npm (not pnpm):
npm install
-
Create
.envfrom.env.exampleand set backend URLs plus Firebase values. Backend URLs must be full URLs including path suffixes, for examplehttp://192.168.10.135:8000/api. -
Generate the native iOS project (not stored in git):
npx expo prebuild --platform ios
- Install iOS pods:
cd ios && pod install && cd ..
- Start Metro in terminal 1:
npx expo start -c
- Build and run the native dev client in terminal 2:
npm run ios
For Android, generate android/ with npx expo prebuild --platform android if it is missing, then run npm run android.
Important rules
npm installdoes not createios/ios/andandroid/are not pushed to git; runnpx expo prebuildafter clone.envis local only; never commit it- Metro must be running before the app launches
- Changing
.envrequires stopping Metro and runningnpx expo start -cagain - Adding native packages requires
pod installandnpm run iosagain - Do not use Expo Go
Common error: Cannot find native module 'ExpoSecureStore' — rebuild with npm run ios after pod install. See docs/setup.md.
Required Environment Variables
The app reads backend and Firebase settings from .env through app.config.ts. The active API client is app/services/apiClient.ts. Do not use app/constants.ts; it is legacy and unused for network calls.
The app refuses to boot without these values:
EXPO_PUBLIC_API_URL— main backend base URL, must include/apiEXPO_PUBLIC_TASK_PHOTO_API_URL— task photo backend, must include/api/v1EXPO_PUBLIC_FIREBASE_PROJECT_IDEXPO_PUBLIC_FIREBASE_STORAGE_BUCKETEXPO_PUBLIC_FIREBASE_MESSAGING_SENDER_IDEXPO_PUBLIC_FIREBASE_IOS_API_KEYEXPO_PUBLIC_FIREBASE_IOS_APP_IDEXPO_PUBLIC_FIREBASE_ANDROID_API_KEYEXPO_PUBLIC_FIREBASE_ANDROID_APP_ID
Scripts
npm start
npm run android
npm run ios
npm run web
npm test
npm run lint
Quality Assurance, Linting, and CI
The repository is configured with a robust validation workflow to prevent regressions before code is merged:
- Linting Configuration: Supported by a visible
eslint.config.js(using ESLint flat config format) backingnpm run lint. - Pre-Commit Hooks: Powered by Husky and
lint-staged. When a commit is initiated, the hook automatically runs ESLint on changed files and validates type-safety withnpx tsc --noEmit. - CI Pipeline: A GitHub Actions workflow is set up (
.github/workflows/ci.yml) to automatically execute ESLint, TypeScript typecheck, and Jest tests on pushes and pull requests tomain. - App-Level Smoke Testing: A comprehensive smoke testing suite has been committed at
app/services/__tests__/smoke.test.tsverifying critical user flows (login, task creation, quote creation, and calendar events).
Documentation
- Local development setup:
docs/setup.md - Public docs site:
docs/and the generatedsite/output - Code review report:
docs/index.md - API overview:
docs/api-spec.md - Quote-form boundaries:
app/quote-form/README.md
Notes
- Auth tokens are stored in
expo-secure-storeunderuser_token. - Push tokens are also stored in secure storage and migrated from legacy AsyncStorage keys when needed.
- Maintenance mode is controlled locally through
app/services/appConfig.ts. - The main API client lives in
app/services/apiClient.ts.