A comprehensive React Native application for managing access control systems with QR code generation, user management, and secure file storage.
GaterLinkNative/
βββ src/ # Main source code
β βββ components/ # Reusable UI components
β βββ screens/ # Screen components
β βββ navigation/ # Navigation configuration
β βββ services/ # API and external service integrations
β βββ store/ # Redux store and slices
β βββ utils/ # Utility functions and helpers
β βββ types/ # TypeScript type definitions
β βββ config/ # Configuration files
β βββ contexts/ # React contexts
βββ docs/ # Documentation
β βββ status-reports/ # Project status and progress reports
β βββ setup-guides/ # Setup and configuration guides
β βββ implementation-guides/ # Implementation documentation
β βββ fixes/ # Bug fixes and troubleshooting
βββ scripts/ # Build and utility scripts
β βββ test-*.js # Test scripts
β βββ setup-*.js # Setup scripts
β βββ deploy-*.sh # Deployment scripts
βββ android/ # Android-specific files
βββ ios/ # iOS-specific files
βββ functions/ # Firebase Cloud Functions
βββ supabase/ # Supabase configuration
βββ __tests__/ # Jest test files
βββ __mocks__/ # Test mocks
- User Authentication: Firebase-based authentication with role-based access control
- QR Code Management: Generate, print, and share QR codes for access control
- User Profile Management: Complete user profiles with document uploads
- Secure File Storage: Supabase Storage with signed URLs and quota management
- Real-time Messaging: In-app messaging system for communication
- Door Type Management: Comprehensive door and access point management
- Enhanced User Registration: Extended profile fields (DOB, company, ID, OSHA card, selfie)
- Secure Storage Integration: Zero-cost Supabase Storage with Edge Functions
- QR Code Generation: Admin interface for creating and exporting QR codes
- Profile Completion Flow: Intelligent post-login profile completion
- Quota Protection: Client-side storage tracking and usage monitoring
- Image Processing: Automatic compression and optimization
[Screenshots will be added here]
- React Native: 0.73.2
- TypeScript: Type-safe development
- React Navigation: Navigation management
- Redux Toolkit: State management
- React Native Paper: UI components
- Firebase Authentication: User authentication
- Firestore: User data and metadata storage
- Supabase Storage: Secure file storage with Edge Functions
- Supabase Edge Functions: Signed URL generation and file management
- react-native-qrcode-svg: QR code generation
- react-native-image-picker: Image selection
- react-native-image-resizer: Image compression
- react-native-fs: File system operations
- react-native-print: QR code printing
- react-native-share: File sharing
- react-native-date-picker: Date selection
- date-fns: Date manipulation
βββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββ
β React Native β β Supabase Edge β β Supabase β
β Application βββββΊβ Functions βββββΊβ Storage β
βββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββ
β β β
β β β
βΌ βΌ βΌ
βββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββ
β Firebase β β JOSE Library β β Private β
β Authenticationβ β (JWT Verify) β β Bucket β
βββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββ
- Upload: Client β Edge Function β Signed URL β Supabase Storage
- Download: Client β Edge Function β Signed URL β File Access
- Delete: Client β Edge Function β Service Role β Storage Delete
- Node.js 18+
- React Native CLI
- Xcode 15+ (iOS)
- Android Studio (Android)
- Firebase project
- Supabase project
-
Clone the repository
git clone <repository-url> cd Gaterlinkapp
-
Install dependencies
npm install
-
Environment Configuration Create
.envfile in the root directory:# Firebase Configuration FIREBASE_API_KEY=your_firebase_api_key FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com FIREBASE_PROJECT_ID=your_project_id FIREBASE_STORAGE_BUCKET=your_project.appspot.com FIREBASE_MESSAGING_SENDER_ID=your_sender_id FIREBASE_APP_ID=your_app_id # Supabase Configuration SUPABASE_URL=your_supabase_url SUPABASE_ANON_KEY=your_supabase_anon_key SUPABASE_SERVICE_ROLE_KEY=your_service_role_key # FCM Configuration FCM_SERVER_KEY=your_fcm_server_key
-
iOS Setup
cd ios && pod install && cd ..
-
Start the application
# Start Metro bundler npm start # Run on iOS npm run ios # Run on Android npm run android
# Run all tests
npm test
# Run tests with coverage
npm test -- --coverage
# Run specific test file
npm test -- --testPathPattern=ComponentNamescripts/test-fcm.js- Test Firebase Cloud Messagingscripts/test-firebase-integration.js- Test Firebase integrationscripts/test-free-tier-integration.js- Test Supabase free tier integration
# Deploy all functions
npm run deploy
# Deploy specific function
firebase deploy --only functions:functionName# Validate environment configuration
npm run env:validate- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
For support and questions:
- Check the Troubleshooting Guide
- Review Current Issues
- Create an issue in the repository
See CHANGELOG.md for a detailed history of changes and updates.