This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
SRCGo is an Expo/React Native mobile app that generates time-sensitive Code128 barcodes for UCR authentication via Innosoft Fusion. The app implements a multi-step OAuth-like authentication flow with UCR CAS.
# Install dependencies
npm install
# Start development server (opens options for iOS/Android/web)
npx expo start
# Platform-specific development
npm run ios # iOS simulator
npm run android # Android emulator
npm run web # Web browser
# Linting
npm run lint # Uses expo lint with ESLint 9 flat config- Framework: Expo SDK 54 / React Native 0.81
- Language: TypeScript 5.9 (strict mode enabled)
- Navigation: Expo Router (file-based routing in
app/directory) - State Management: React Context + Hooks (planned)
- Storage: Expo SecureStore for credentials, AsyncStorage for non-sensitive data
app/ # Expo Router file-based routing
├── (auth)/ # Auth group (login screens)
└── (main)/ # Main app group (barcode, settings)
src/
├── components/ # Reusable UI components
├── hooks/ # Custom hooks (useAuth, useBarcode, useNetwork)
├── services/ # API client, auth service, storage
├── context/ # React Context providers
├── types/ # TypeScript type definitions
└── theme/ # Design tokens (colors, typography, spacing)
The app authenticates with UCR CAS through a 4-step process (see docs/AUTH_IMPLEMENTATION.md):
- Start Login - Initialize session with Innosoft Fusion
- Get Execution - Extract execution token from UCR CAS login page
- Login - Submit credentials to UCR CAS, receive service ticket
- Get Barcode - Exchange fusion token for barcode ID
Key implementation details:
- Cookie handling is essential - use axios with
withCredentials: true - Fusion tokens should be cached and reused until expiry
- Barcode auto-refreshes every 12 seconds
The project uses @/* path alias mapping to the root directory (configured in tsconfig.json).
expo-secure-store- Credential storage@react-native-async-storage/async-storage- Non-sensitive storage@react-native-community/netinfo- Network connectivity detectionaxioswithaxios-cookiejar-support- HTTP client with cookie supportreact-native-barcode-svgorreact-native-svg- Barcode rendering
Brand colors defined in implementation plan:
- Blue:
#003DA5 - Gold:
#FFD700 - Light Blue:
#87CEEB - Rose:
#FF007F
Enabled in app.json:
typedRoutes- Type-safe routingreactCompiler- React Compiler optimizationnewArchEnabled- React Native New Architecture