Skip to content

GaterLink - React Native mobile app with server backend for door access management

Notifications You must be signed in to change notification settings

mml555/gaterlink

Repository files navigation

GaterLink iOS App

A native iOS application for door access management with QR code scanning, real-time messaging, and admin dashboard.

Features

  • Native iOS App: React Native application optimized for iOS
  • QR Code Scanner: Scan door QR codes for access management
  • Door Access Management: Easy-to-use interface for managing door access
  • In-App Messaging: Real-time chat between users and administrators
  • Admin Dashboard: Comprehensive dashboard for managing access and users
  • Role Management: Switch between user and admin modes
  • Local Database: SQLite database for offline functionality
  • Push Notifications: Real-time notifications for access updates
  • Status Management: Track access status (granted, denied, pending, expired)
  • Search and Filter: Advanced search and filtering capabilities
  • iOS Native Features: Face ID/Touch ID, iOS share sheet, haptic feedback
  • Biometric Authentication: Secure login with Face ID/Touch ID

Tech Stack

iOS App

  • React Native 0.80.0 - Cross-platform mobile framework
  • React Navigation 7 - Navigation and routing
  • React Native Paper - Material Design components
  • Firebase - Authentication and real-time database
  • AsyncStorage - Local data persistence
  • React Native Vector Icons - Icon library
  • Socket.io - Real-time communication
  • React Native Biometrics - Biometric authentication

Backend Server

  • Node.js/Express - RESTful API server
  • SQLite - Database storage
  • JWT - Authentication and authorization
  • WebSocket - Real-time communication

Logging & Monitoring

  • LoggingService - Structured logging with context and error tracking
  • Development/Production - Different logging levels for different environments
  • Error Tracking - Automatic error logging with stack traces

Development Tools

  • Metro - JavaScript bundler
  • Xcode - iOS development IDE
  • CocoaPods - iOS dependency management
  • TypeScript - Type safety

Quick Start

Prerequisites

  • Node.js (v18 or higher)
  • npm or yarn
  • Xcode (latest version)
  • iOS Simulator or physical iOS device
  • CocoaPods

Installation

  1. Clone the repository

    git clone <repository-url>
    cd gaterlink
  2. Navigate to the app directory

    cd GaterLinkApp
  3. Install dependencies

    npm install
    cd ios && pod install && cd ..
  4. Set up environment

    cp ../env.example .env
    # Edit .env with your configuration
  5. Start the backend server

    cd ../server
    npm install
    npm start
  6. Run on iOS

    # Start Metro bundler
    npm start
    
    # In another terminal, run on iOS simulator
    npm run ios
    
    # Or run on physical device
    npm run ios -- --device
    
    # For clean builds
    npm run ios:clean
    
    # For release builds
    npm run ios:build

Available Scripts

  • npm start - Start Metro bundler
  • npm run ios - Run on iOS simulator
  • npm run ios:clean - Clean build and run on iOS
  • npm run ios:build - Build for release
  • npm run ios:fix - Apply build fixes
  • npm run ios:reset - Reset and reinstall dependencies
  • npm run lint - Run ESLint
  • npm test - Run tests
  • npm run test:watch - Run tests in watch mode
  • npm run test:coverage - Run tests with coverage

Project Structure

gaterlink/
├── GaterLinkApp/          # Main React Native app
│   ├── ios/              # iOS native code
│   ├── src/              # React Native source code
│   │   ├── context/      # React contexts
│   │   ├── screens/      # App screens
│   │   └── services/     # Business logic services
│   ├── __tests__/        # Test files
│   └── package.json      # App dependencies
├── server/               # Backend server
│   ├── routes/           # API routes
│   ├── services/         # Server services
│   └── data/             # Database files
└── README.md            # This file

Usage

For Users

  1. Open the app on your iOS device
  2. Navigate to the "Home" tab to see your saved doors
  3. Use the "Scan" feature to scan door QR codes
  4. View access history and status
  5. Use the "Chat" feature to communicate with administrators

For Administrators

  1. Open the app and go to "Settings"
  2. Switch to "Admin Mode" by entering your credentials
  3. Navigate to the "Admin" tab to view all access requests

Development Notes

Recent Build Fixes

  • Fixed React Native 0.80.0 compatibility issues
  • Resolved CocoaPods dependency conflicts
  • Updated Firebase configuration
  • Fixed TypeScript compilation errors
  • Resolved Metro bundler issues

Codebase Cleanup (Latest)

  • Removed duplicate files and system artifacts
  • Eliminated duplicate FirebaseService (kept TypeScript version)
  • Removed unused SMSService
  • Implemented proper logging service to replace console statements
  • Added database profile management functions
  • Resolved TODO items in authentication routes
  • Consolidated documentation

Known Issues

  • App is optimized for iPhone only (Android support removed)
  • Requires iOS 13.0 or higher
  • Some features require physical device testing (camera, biometrics)

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Run tests: npm test
  5. Submit a pull request

License

[Add your license information here]

About

GaterLink - React Native mobile app with server backend for door access management

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published