• TypeScript 74.3%
  • HTML 25.5%
  • JavaScript 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
muhammedfatihercakir 8f46aeefe5
All checks were successful
CI Pipeline / Validate (push) Successful in 11m1s
Merge pull request 'test/forge-runner-check' (#1) from test/forge-runner-check into main
Reviewed-on: #1
2026-09-30 17:09:09 +03:00
.cursor/rules cut monoliths 2026-06-08 18:40:23 +03:00
.forgejo/workflows ci: finalize Forgejo workflow triggers 2026-09-30 16:56:56 +03:00
.github/workflows add ci and linting 2026-06-08 19:00:01 +03:00
.husky add ci and linting 2026-06-08 19:00:01 +03:00
app remove 2026-09-15 00:53:15 +03:00
assets Replace api.ts header block + global axios config with apiClient import 2026-06-02 14:52:50 +03:00
components fix infinite loop 2026-07-01 16:09:59 +03:00
constants init files 2026-05-06 23:56:16 +03:00
context Logging edits 2026-06-08 18:52:58 +03:00
data fix arch screen 2026-06-09 00:08:12 +03:00
docs Fix MkDocs strict-mode link warnings in setup docs. 2026-06-24 02:23:14 +03:00
hooks init files 2026-05-06 23:56:16 +03:00
requirements docs: add multi-language documentation with mkdocs 2026-06-01 14:37:53 +03:00
scripts init files 2026-05-06 23:56:16 +03:00
site explicit boolean check 2026-06-24 13:18:53 +03:00
src/types init files 2026-05-06 23:56:16 +03:00
.env.example update photo upload url 2026-06-03 16:36:55 +03:00
.gitignore fix infinite loop 2026-07-01 16:09:59 +03:00
.lintstagedrc.json add ci and linting 2026-06-08 19:00:01 +03:00
app.config.ts edit docs 2026-06-24 01:48:51 +03:00
eas.json init files 2026-05-06 23:56:16 +03:00
eslint.config.js fix arch screen 2026-06-09 00:08:12 +03:00
expo-extra.d.ts mplementing security 2026-06-03 15:50:38 +03:00
google-services.json init files 2026-05-06 23:56:16 +03:00
GoogleService-Info.plist init files 2026-05-06 23:56:16 +03:00
metro.config.js edit docs 2026-06-24 01:48:51 +03:00
mkdocs.yml edit docs 2026-06-24 01:48:51 +03:00
package-lock.json edit docs 2026-06-24 01:48:51 +03:00
package.json edit docs 2026-06-24 01:48:51 +03:00
README.md edit docs 2026-06-24 01:48:51 +03:00
reset.sh init files 2026-05-06 23:56:16 +03:00
tsconfig.json init files 2026-05-06 23:56:16 +03:00

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

  1. Clone the repository
  2. Install dependencies with npm (not pnpm):
npm install
  1. Create .env from .env.example and set backend URLs plus Firebase values. Backend URLs must be full URLs including path suffixes, for example http://192.168.10.135:8000/api.

  2. Generate the native iOS project (not stored in git):

npx expo prebuild --platform ios
  1. Install iOS pods:
cd ios && pod install && cd ..
  1. Start Metro in terminal 1:
npx expo start -c
  1. 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 install does not create ios/
  • ios/ and android/ are not pushed to git; run npx expo prebuild after clone
  • .env is local only; never commit it
  • Metro must be running before the app launches
  • Changing .env requires stopping Metro and running npx expo start -c again
  • Adding native packages requires pod install and npm run ios again
  • 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 /api
  • EXPO_PUBLIC_TASK_PHOTO_API_URL — task photo backend, must include /api/v1
  • EXPO_PUBLIC_FIREBASE_PROJECT_ID
  • EXPO_PUBLIC_FIREBASE_STORAGE_BUCKET
  • EXPO_PUBLIC_FIREBASE_MESSAGING_SENDER_ID
  • EXPO_PUBLIC_FIREBASE_IOS_API_KEY
  • EXPO_PUBLIC_FIREBASE_IOS_APP_ID
  • EXPO_PUBLIC_FIREBASE_ANDROID_API_KEY
  • EXPO_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:

  1. Linting Configuration: Supported by a visible eslint.config.js (using ESLint flat config format) backing npm run lint.
  2. 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 with npx tsc --noEmit.
  3. 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 to main.
  4. App-Level Smoke Testing: A comprehensive smoke testing suite has been committed at app/services/__tests__/smoke.test.ts verifying critical user flows (login, task creation, quote creation, and calendar events).

Documentation

  • Local development setup: docs/setup.md
  • Public docs site: docs/ and the generated site/ 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-store under user_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.