Version 1.0.0 | Built with β€οΈ by Whiz IT
LoginX is a modern, enterprise-grade, cross-platform mobile authentication application built with React Native and Expo. It provides a seamless, secure, and accessible user authentication experience with support for multiple languages, biometric authentication, two-factor authentication, and comprehensive profile management.
β οΈ SECURITY NOTICE (October 2, 2025)
Critical security updates have been implemented. Environment variables are now mandatory.
Please read SECURITY.md before running the app in production.
- Features
- What's New
- Getting Started
- Available Scripts
- Technologies & Dependencies
- Project Structure
- Configuration
- Security
- Development Guidelines
- Contributing
- License
- Support
- About
- Acknowledgments
- Project Status
- Firebase Authentication Integration - Secure email/password authentication
- Multi-Step Registration Flow - Guided 3-step onboarding process with validation
- Email Verification - Automated verification emails with secure token handling
- Password Reset - Secure forgot password flow with email validation
- Biometric Authentication - Support for Face ID, Touch ID, and fingerprint (iOS/Android)
- Two-Factor Authentication (2FA) - Additional security layer for user accounts
- Session Management - Active session monitoring and management
- Input Sanitization - All user inputs are sanitized to prevent XSS and injection attacks
- Firestore Security Rules - Comprehensive backend security rules
- Complete Profile System - User profiles stored in Firebase Firestore
- Profile Editing - Update display name, email, and profile information
- Email Updates - Secure email change process with verification
- Password Management - Change password with old password verification
- Soft Delete - Account deletion with data retention for recovery
- Multi-Language Support - English (en), Spanish (es), Hindi (hi)
- Dynamic Language Switching - Change language without app restart
- Locale-Aware Formatting - Date, time, and number formatting based on locale
- RTL Support Ready - Architecture supports right-to-left languages
- Light & Dark Mode - Automatic and manual theme switching
- System Theme Detection - Respects device theme preferences
- Themed Components - Comprehensive themed UI component library
- Dynamic Text Sizing - Adjustable text sizes for better readability
- Accessibility Labels - Full VoiceOver/TalkBack support
- High Contrast Support - Optimized for accessibility standards
- Platform-Specific Design - Follows iOS HIG and Android Material Design guidelines
- Onboarding Flow - First-time user experience with feature highlights
- Haptic Feedback - Tactile feedback for interactions (iOS/Android)
- Push Notifications - Firebase Cloud Messaging integration
- Splash Screen - Custom branded splash screens for light/dark modes
- Error Boundaries - Graceful error handling with user-friendly messages
- Loading States - Skeleton screens and loading indicators
- Form Validation - Real-time validation with Zod schemas
- TypeScript - 100% type-safe codebase
- Expo Router - File-based routing with typed routes
- React Hook Form - Performant form management
- Zod Validation - Runtime type checking and validation
- ESLint & Prettier - Code quality and formatting
- Markdown Linting - Documentation quality checks
- Type Checking - Strict TypeScript configuration
- Environment Variables - Secure configuration management
- Debug Utilities - Development-only logging and debugging tools
- Firebase Firestore - Cloud-based NoSQL database
- AsyncStorage - Persistent key-value storage
- Secure Storage - Encrypted storage for sensitive data (expo-secure-store)
- Caching System - Intelligent data caching with TTL
- Retry Logic - Automatic retry for failed network requests
- Push Notifications - Rich push notifications with Firebase
- Notifications Center - Dedicated screen showing all past notifications with history
- In-App Notifications - Contextual alerts and messages
- Notification Management - Mark as read, delete, and clear all notifications
- Email Integration - Automated emails for verification and notifications
- Mandatory Environment Variables - All Firebase credentials now required
- Enhanced Input Sanitization - XSS and injection prevention
- Firestore Security Rules - Comprehensive backend security
- Session Security - Platform-specific authentication persistence
- 2FA Support - Two-factor authentication implementation
- Biometric Auth - Face ID, Touch ID, fingerprint support
- Session Management - View and manage active sessions
- Language Picker - Enhanced multi-language support (EN, ES, HI)
- Text Size Adjustment - Accessibility text sizing
- What's New Screen - In-app changelog viewer
- Themed Components Library - Complete themed UI system
- Skeleton Loading - Better loading state indicators
- Error Boundaries - Comprehensive error handling
- Haptic Feedback - Enhanced tactile feedback
- Accessibility - WCAG 2.1 AA compliance improvements
- pnpm Package Manager - Faster, more efficient dependency management
- Validation Script - Combined lint, format, and type-check validation
- Markdown Linting - Documentation quality automation
- TypeScript Strict Mode - Enhanced type safety
- Debug Utilities - Development logging system
Follow these instructions to get LoginX running on your local machine for development and testing.
Ensure you have the following installed on your system:
-
Node.js (v18.0.0 or newer)
-
pnpm (v8.0.0 or newer)
npm install -g pnpm
-
pnpm install -g expo-cli
-
Firebase Account - Create a free account at Firebase Console
-
Expo Go App (for quick testing) - Download for iOS or Android
-
iOS Simulator (Mac only) or Android Emulator for mobile development
-
EAS CLI (optional, for builds)
pnpm install -g eas-cli
π± Expo Go vs Development Build
- Expo Go: Quick testing - Most features work including email auth, 2FA, and biometrics β
- Development Build: Required for Google Sign-In and other custom native modules
β οΈ See EXPO_GO_GUIDE.md for detailed instructions on what works in Expo Go and when you need a development build.
-
Clone the repository:
git clone https://github.com/vivekbarsagadey/loginx.git cd loginx -
Install dependencies:
pnpm install
Note: This project uses pnpm as the package manager for better performance and disk space efficiency.
-
Set up Firebase:
- Go to Firebase Console
- Create a new project or select an existing one
- Enable Authentication (Email/Password provider)
- Enable Firestore Database
- Go to Project Settings > General
- In "Your apps" section, add a Web app
- Copy the Firebase configuration values
-
Set up Firestore Security Rules:
firebase init firestore firebase deploy --only firestore:rules
The security rules are already defined in
firestore.rules.
LoginX uses a secure Android upload keystore for signing production builds. The
keystore file and credentials are stored in the keystore/ directory.
-
Locate keystore files:
keystore/ βββ @vivekbarsagadey__loginx-keystore.bak.jks # Keystore file βββ @vivekbarsagadey__loginx-keystore-credentials.md # Credentials -
View keystore information:
To inspect the keystore and verify its details:
# Windows PowerShell keytool -list -v -keystore .\keystore\@vivekbarsagadey__loginx-keystore.bak.jks -storepass YOUR_KEYSTORE_PASSWORD # Mac/Linux keytool -list -v -keystore ./keystore/@vivekbarsagadey__loginx-keystore.bak.jks -storepass YOUR_KEYSTORE_PASSWORD
This will display:
- Keystore type (JKS)
- Key alias information
- Certificate fingerprints (SHA1, SHA256)
- Validity period
- Owner information
-
View specific key information:
# Windows PowerShell keytool -list -v -keystore .\keystore\@vivekbarsagadey__loginx-keystore.bak.jks -alias YOUR_KEY_ALIAS -storepass YOUR_KEYSTORE_PASSWORD -keypass YOUR_KEY_PASSWORD # Mac/Linux keytool -list -v -keystore ./keystore/@vivekbarsagadey__loginx-keystore.bak.jks -alias YOUR_KEY_ALIAS -storepass YOUR_KEYSTORE_PASSWORD -keypass YOUR_KEY_PASSWORD
-
Export certificate (optional):
To export the public certificate for Google Play Console:
# Windows PowerShell keytool -export -rfc -keystore .\keystore\@vivekbarsagadey__loginx-keystore.bak.jks -alias YOUR_KEY_ALIAS -file loginx-certificate.pem -storepass YOUR_KEYSTORE_PASSWORD # Mac/Linux keytool -export -rfc -keystore ./keystore/@vivekbarsagadey__loginx-keystore.bak.jks -alias YOUR_KEY_ALIAS -file loginx-certificate.pem -storepass YOUR_KEYSTORE_PASSWORD
-
Keystore credentials:
The credentials are securely stored in
keystore/@vivekbarsagadey__loginx-keystore-credentials.md.β οΈ NEVER share or commit actual credential values publicly!The credentials file contains:
- Keystore password - Required to access the keystore
- Key alias - Identifies the specific key within the keystore
- Key password - Required to use the key for signing
-
EAS Build configuration:
For EAS builds, configure credentials using:
eas credentials
Select "Android" β "Set up a new keystore" or "Use an existing keystore" and provide the credentials from the credentials file.
π¨ CRITICAL SECURITY WARNING:
- NEVER commit keystore files or credentials to public repositories
- NEVER share credential values in documentation or messages
- Keep backups of your keystore in multiple secure locations
- If the keystore is lost, you cannot update your app on Google Play Store
- Store credentials in a secure password manager (1Password, LastPass, etc.)
- Treat keystore credentials like production database passwords
- If credentials are exposed, generate a new keystore immediately
- The
keystore/directory should be in.gitignorefor production apps
-
Create environment file:
Create a
.envfile in the root directory:# Windows PowerShell New-Item .env -ItemType File # Mac/Linux touch .env
-
Add required environment variables:
Open
.envand add your Firebase credentials:# Firebase Configuration (REQUIRED) API_KEY="your-firebase-api-key" AUTH_DOMAIN="your-project.firebaseapp.com" PROJECT_ID="your-project-id" STORAGE_BUCKET="your-project.appspot.com" MESSAGING_SENDER_ID="123456789012" APP_ID="1:123456789012:web:abcdef123456" MEASUREMENT_ID="G-XXXXXXXXXX" # Expo Configuration EAS_PROJECT_ID="your-eas-project-id" # App Information APP_NAME="LoginX" APP_VERSION="1.0.0" APP_BUILD="100" # Social Authentication GOOGLE_WEB_CLIENT_ID="your-google-web-client-id.apps.googleusercontent.com" GOOGLE_IOS_CLIENT_ID="your-google-ios-client-id.apps.googleusercontent.com" GOOGLE_ANDROID_CLIENT_ID="your-google-android-client-id.apps.googleusercontent.com" # Apple Sign In (iOS) APPLE_TEAM_ID="your-apple-team-id" APPLE_BUNDLE_ID="com.whizit.loginx" # Google Places API (for address autocomplete in registration) EXPO_PUBLIC_GOOGLE_PLACES_API_KEY="your-google-places-api-key" # Firebase Functions (if using) FUNCTIONS_URL="https://us-central1-your-project.cloudfunctions.net" FIREBASE_STORAGE_URL="gs://your-project.firebasestorage.app" # Optional: Backend API configuration API_BASE_URL="https://api.myapp.com" API_TIMEOUT="10000" WS_URL="wss://ws.myapp.com" # Optional: Database configuration DB_NAME="myappdb" DB_ENCRYPTION_KEY="random-32byte-secret" CACHE_TTL="3600" # Security & Encryption JWT_SECRET="your-jwt-secret-key-here" AES_ENCRYPTION_KEY="your-32-character-encryption-key" # Feature Flags ENABLE_BIOMETRIC_AUTH="true" ENABLE_SOCIAL_LOGIN="true" ENABLE_EMAIL_VERIFICATION="true" ENABLE_PUSH_NOTIFICATIONS="false" ENABLE_ANALYTICS="false" # Development Settings USE_FIREBASE_EMULATOR="false" DEBUG_MODE="true" LOG_LEVEL="debug" # Optional: Analytics and monitoring SENTRY_DSN="https://xxxx.ingest.sentry.io/1234" AMPLITUDE_KEY="abcd1234" GOOGLE_MAPS_API_KEY="your-google-maps-api-key" MIXPANEL_TOKEN="your-mixpanel-token" # Email Service (if using custom email provider) SENDGRID_API_KEY="your-sendgrid-api-key" MAILGUN_API_KEY="your-mailgun-api-key" # SMS Service (for phone verification) TWILIO_ACCOUNT_SID="your-twilio-account-sid" TWILIO_AUTH_TOKEN="your-twilio-auth-token" TWILIO_PHONE_NUMBER="+1234567890" # Social Media APIs (for profile import) FACEBOOK_APP_ID="your-facebook-app-id" TWITTER_API_KEY="your-twitter-api-key" LINKEDIN_CLIENT_ID="your-linkedin-client-id"
-
Verify setup:
pnpm validate
This command runs linting, formatting checks, and type checking.
-
Start the development server:
pnpm start
Then press:
afor Androidifor iOSwfor web
β οΈ Important: Never commit the.envfile to version control. It's already included in.gitignorefor your security.
The following npm scripts are available for development and production workflows:
pnpm start- Start Expo development server with cache clearedpnpm android- Run on Android device/emulator with tunnelpnpm ios- Run on iOS simulatorpnpm web- Run in web browser
pnpm lint- Run ESLint to check code qualitypnpm lint:fix- Automatically fix ESLint issuespnpm lint:md- Lint all Markdown files with markdownlintpnpm lint:md:fix- Auto-fix Markdown linting issuespnpm lint:md:remark- Lint Markdown files with remarkpnpm lint:md:remark:fix- Auto-fix Markdown with remark
pnpm format- Format all code files with Prettierpnpm format:check- Check if files are formatted correctlypnpm format:md- Format Markdown with Prettier and remarkpnpm format:md:check- Check Markdown formattingpnpm format:md:prettier- Format Markdown with Prettier onlypnpm format:md:remark- Format Markdown with remark only
pnpm type-check- Run TypeScript compiler without emitting files
pnpm validate- Run all checks (lint, markdown lint with markdownlint and remark, format check, type check)pnpm validate:fix- Fix all auto-fixable issues
pnpm reset-project- Reset project to initial state (removes example code)
Before committing code:
pnpm validate:fix # Fix all auto-fixable issues
pnpm validate # Verify everything passesFor continuous development:
pnpm start # Start development server
# Then press 'a' for Android, 'i' for iOS, or 'w' for web- React (19.1.0) - UI library
- React Native (0.81.4) - Mobile framework
- Expo (~54.0.10) - React Native framework and platform
- TypeScript (~5.9.2) - Type-safe JavaScript
- Expo Router (~6.0.8) - File-based routing
- React Navigation (^7.1.17) - Navigation library
- @react-navigation/bottom-tabs (^7.4.0)
- Tab navigation
- Firebase (^12.3.0) - Backend services
- Firebase Authentication - User authentication
- Firebase Firestore - NoSQL cloud database
- Firebase Admin SDK Integration - Server-side operations
- React Hook Form (^7.63.0) - Performant form management
- Zod (^3.25.76) - TypeScript-first schema validation
- @hookform/resolvers (^5.2.2) - Zod integration
- AsyncStorage (2.2.0) - Persistent storage
- expo-secure-store (^15.0.7) - Encrypted storage
- i18n-js (^4.5.1) - Internationalization framework
- expo-localization (~17.0.7) - Locale detection
- @expo/vector-icons (^15.0.2) - Icon library
- expo-symbols (~1.0.7) - SF Symbols (iOS)
- expo-image (~3.0.8) - Optimized image component
- react-native-reanimated (~4.1.1) - Animations
- react-native-gesture-handler (~2.28.0) - Gesture handling
- expo-haptics (~15.0.7) - Haptic feedback
- expo-splash-screen (~31.0.10) - Splash screen API
- expo-status-bar (~3.0.8) - Status bar control
- expo-system-ui (~6.0.7) - System UI control
- react-native-biometrics (^3.0.1) - Biometric authentication
- expo-notifications (~0.32.11) - Push notifications
- expo-device (~8.0.8) - Device information
- @sentry/react-native (^6.22.0) - Error tracking
- expo-image-picker (~17.0.8) - Image selection
- expo-font (~14.0.8) - Custom fonts
- expo-constants (~18.0.9) - App constants
- expo-linking (~8.0.8) - Deep linking
- expo-web-browser (~15.0.7) - In-app browser
- dotenv (^17.2.3) - Environment variables
- ESLint (^9.25.0) - JavaScript linter
- eslint-config-expo (~10.0.0)
- Expo ESLint config
- Prettier (^3.6.2) - Code formatter
- prettier-plugin-organize-imports (^4.1.0) - Auto-organize imports
- markdownlint-cli (^0.43.0) - Markdown linter
- pnpm (>=8.0.0) - Fast, disk space efficient package manager
LoginX follows a well-organized, feature-based structure optimized for scalability and maintainability:
loginx/
βββ app/ # Expo Router file-based routing
β βββ _layout.tsx # Root layout with providers
β βββ +not-found.tsx # 404 error page
β βββ modal.tsx # Example modal screen
β βββ (auth)/ # Authentication group
β β βββ _layout.tsx # Auth layout
β β βββ welcome.tsx # Welcome/landing screen
β β βββ login.tsx # Login screen
β β βββ forgot-password.tsx # Password recovery
β β βββ verify-email.tsx # Email verification
β β βββ register/ # Multi-step registration
β β βββ _layout.tsx
β β βββ index.tsx # Registration entry
β β βββ step-1.tsx # Basic info
β β βββ step-2.tsx # Additional details
β β βββ step-3.tsx # Confirmation
β βββ (tabs)/ # Main app tabs (protected)
β β βββ _layout.tsx # Tab navigation layout
β β βββ index.tsx # Home/Dashboard
β β βββ items.tsx # Items/Data screen
β β βββ settings.tsx # Settings hub
β βββ onboarding/ # First-time user onboarding
β β βββ _layout.tsx
β β βββ index.tsx
β βββ profile/ # User profile management
β β βββ _layout.tsx
β β βββ edit.tsx # Edit profile
β β βββ update-email.tsx # Change email
β βββ security/ # Security settings
β β βββ 2fa.tsx # Two-factor authentication
β β βββ change-password.tsx # Password change
β β βββ sessions.tsx # Active sessions
β βββ settings/ # App settings
β β βββ theme.tsx # Theme selection
β β βββ language.tsx # Language picker
β β βββ notifications.tsx # Notification preferences
β β βββ text-size.tsx # Accessibility text size
β βββ about/ # About/Info screens
β β βββ whats-new.tsx # Changelog/What's new
β βββ legal/ # Legal documents
β βββ terms.tsx # Terms of service
β βββ privacy.tsx # Privacy policy
β βββ license.tsx # License information
βββ actions/ # Business logic layer
β βββ user.action.ts # User-related actions
β βββ setting.action.ts # Settings actions
βββ components/ # Reusable UI components
β βββ themed-view.tsx # Themed container component
β βββ themed-text.tsx # Themed text component
β βββ themed-button.tsx # Themed button component
β βββ themed-input.tsx # Themed input component
β βββ themed-text-input.tsx # Themed text input
β βββ themed-scroll-view.tsx # Themed scroll container
β βββ error-boundary.tsx # Error boundary wrapper
β βββ external-link.tsx # External link handler
β βββ haptic-tab.tsx # Tab with haptic feedback
β βββ language-picker.tsx # Language selection
β βββ theme-selector.tsx # Theme selection
β βββ features-slide.tsx # Onboarding feature slide
β βββ brand/ # Brand components
β β βββ logo.tsx # Full logo
β β βββ logomark.tsx # Logo icon
β βββ navigation/ # Navigation components
β β βββ TabBarIcon.tsx # Custom tab bar icons
β βββ onboarding/ # Onboarding components
β β βββ welcome.tsx
β β βββ features.tsx
β β βββ personalize.tsx
β βββ ui/ # Generic UI components
β βββ collapsible.tsx # Collapsible section
β βββ icon-symbol.tsx # Cross-platform icons
β βββ icon-symbol.ios.tsx # iOS-specific SF Symbols
βββ constants/ # Global constants
β βββ index.ts # Barrel export
β βββ theme.ts # Theme colors and styles
β βββ routes.ts # Route constants
β βββ validation.ts # Validation rules
β βββ accessibility.ts # Accessibility constants
βββ hooks/ # Custom React hooks
β βββ use-auth-provider.tsx # Authentication context
β βββ use-theme.tsx # Theme management
β βββ use-color-scheme.ts # Color scheme detection
β βββ use-language.tsx # Language/i18n hook
β βββ use-theme-color.ts # Theme color resolver
β βββ use-onboarding-provider.tsx # Onboarding state
β βββ use-async-operation.tsx # Async operation handler
β βββ use-push-notifications.tsx # Push notification handler
βββ i18n/ # Internationalization
β βββ index.ts # i18n configuration
β βββ locales/ # Translation files
β βββ en.json # English
β βββ es.json # Spanish
β βββ hi.json # Hindi
βββ types/ # TypeScript type definitions
β βββ user.ts # User-related types
βββ utils/ # Utility functions
β βββ debug.ts # Development logging
β βββ sanitize.ts # Input sanitization
β βββ error.ts # Error handling utilities
β βββ success.ts # Success handling
β βββ retry.ts # Retry logic
β βββ cache.ts # Caching utilities
β βββ env.ts # Environment validation
βββ config/ # Configuration files
β βββ settings.ts # App settings config
βββ assets/ # Static assets
β βββ fonts/ # Custom fonts
β βββ images/ # Images and icons
βββ scripts/ # Build/utility scripts
β βββ reset-project.js # Project reset script
βββ .github/ # GitHub-specific files
β βββ instructions/ # Development instructions
β βββ rule.instructions.md # Comprehensive dev guidelines
βββ app.config.ts # Expo app configuration
βββ firebase-config.ts # Firebase initialization
βββ firestore.rules # Firestore security rules
βββ tsconfig.json # TypeScript configuration
βββ eslint.config.js # ESLint configuration
βββ eas.json # EAS Build configuration
βββ package.json # Dependencies and scripts
βββ pnpm-lock.yaml # pnpm lock file
βββ env.d.ts # Environment variable types
βββ .env # Environment variables (gitignored)
βββ .env.example # Example environment variables
βββ .editorconfig # Editor configuration
βββ .prettierrc.json # Prettier configuration
βββ .prettierignore # Prettier ignore rules
βββ .remarkrc.json # Remark configuration
βββ .remarkignore # Remark ignore rules
βββ .markdownlint.json # Markdownlint configuration
βββ .gitignore # Git ignore rules
βββ README.md # This file
βββ SECURITY.md # Security guidelines
βββ QUICK_REFERENCE.md # Quick reference guide
βββ AUTHENTICATION_REVIEW.md # Authentication flow documentation
βββ docs/ # Additional documentation
βββ LINTING_FORMATTING.md # Code style guide
βββ DESIGN_SYSTEM.md # Design system documentation
βββ ... # Other docs
- Screens in
app/directory automatically become routes - Folders with
()are route groups (don't affect URL) _layout.tsxfiles define nested layouts- Route parameters:
[id].tsxfor dynamic routes
- Related functionality grouped together (profile, security, settings)
- Each feature can have its own components, actions, and types
- Promotes modularity and reusability
- Actions - Business logic and data operations
- Components - Pure UI components
- Hooks - Reusable stateful logic
- Utils - Pure functions and helpers
- Constants - Configuration and static values
All UI components use the themed system for automatic light/dark mode support:
import { ThemedView, ThemedText } from "@/components/themed-*";LoginX uses Firebase for authentication and data storage. Configuration is managed through environment variables.
-
Authentication:
- Enable Email/Password authentication
- Configure email templates (verification, password reset)
- Set authorized domains
-
Firestore Database:
- Create database in production mode
- Deploy security rules from
firestore.rules - Create indexes if needed for queries
-
Firebase Hosting (Optional):
- For web deployment
- Configure in
firebase.json
The project includes comprehensive Firestore security rules (firestore.rules):
- Users can only access their own data
- Input validation on all fields
- Email format validation
- String length limits
- Timestamp validation
- Soft delete enforcement
Deploy rules:
firebase deploy --only firestore:rulesApp configuration is managed in app.config.ts:
- App metadata - Name, version, slug
- Platform settings - iOS and Android specific configurations
- Splash screen - Custom splash screens for light/dark mode
- Plugins - Expo plugins configuration
- Experiments - Typed routes and React Compiler enabled
- EAS Project - EAS Build configuration
All environment variables are typed in env.d.ts for TypeScript safety.
API_KEY- Firebase API keyAUTH_DOMAIN- Firebase auth domainPROJECT_ID- Firebase project IDSTORAGE_BUCKET- Firebase storage bucketMESSAGING_SENDER_ID- Firebase messaging sender IDAPP_ID- Firebase app IDMEASUREMENT_ID- Google Analytics measurement IDEAS_PROJECT_ID- Expo Application Services project ID
GOOGLE_WEB_CLIENT_ID- Google OAuth web client IDGOOGLE_IOS_CLIENT_ID- Google OAuth iOS client IDGOOGLE_ANDROID_CLIENT_ID- Google OAuth Android client IDAPPLE_TEAM_ID- Apple Developer Team ID for Sign in with AppleAPPLE_BUNDLE_ID- App bundle identifier for Apple services
JWT_SECRET- JSON Web Token signing secretAES_ENCRYPTION_KEY- Advanced Encryption Standard key (32 characters)
ENABLE_BIOMETRIC_AUTH- Toggle biometric authentication (true/false)ENABLE_SOCIAL_LOGIN- Toggle social login features (true/false)ENABLE_EMAIL_VERIFICATION- Toggle email verification (true/false)ENABLE_PUSH_NOTIFICATIONS- Toggle push notifications (true/false)ENABLE_ANALYTICS- Toggle analytics tracking (true/false)
USE_FIREBASE_EMULATOR- Use Firebase emulator for development (true/false)DEBUG_MODE- Enable debug logging (true/false)LOG_LEVEL- Logging verbosity (debug/info/warn/error)
SENTRY_DSN- Sentry error tracking DSNAMPLITUDE_KEY- Amplitude analytics keyMIXPANEL_TOKEN- Mixpanel analytics tokenGOOGLE_MAPS_API_KEY- Google Maps API keyEXPO_PUBLIC_GOOGLE_PLACES_API_KEY- Google Places API for address autocomplete
SENDGRID_API_KEY- SendGrid API key for email deliveryMAILGUN_API_KEY- Mailgun API key for email delivery
TWILIO_ACCOUNT_SID- Twilio account SID for SMS verificationTWILIO_AUTH_TOKEN- Twilio authentication tokenTWILIO_PHONE_NUMBER- Twilio phone number for sending SMS
FACEBOOK_APP_ID- Facebook App ID for social featuresTWITTER_API_KEY- Twitter API key for social integrationLINKEDIN_CLIENT_ID- LinkedIn Client ID for professional features
See env.d.ts for the complete list and TypeScript definitions of all
configuration variables.
- Bundle Identifier:
com.whizit.loginx - Minimum iOS: 13.0+ (via Expo SDK)
- Build Number: Configurable via
APP_BUILDenv variable - Icons: Configured in
app.config.ts
- Package Name:
com.whizit.loginx - Minimum SDK: 26 (Android 8.0)
- Version Code: Configurable via
APP_BUILDenv variable - Adaptive Icons: Full support with foreground, background, and monochrome
- Output: Static site generation
- Favicon: Custom favicon included
- PWA Support: Can be configured for Progressive Web App
LoginX implements enterprise-grade security practices. For complete security documentation, see SECURITY.md.
- Environment Variables: All secrets managed via
.env(never committed) - Input Sanitization: XSS and injection prevention on all user inputs
- Firestore Security Rules: Server-side validation and authorization
- Database Encryption: SQLite encryption support
- Authentication Persistence: Platform-specific secure persistence
- Biometric Authentication: Support for Face ID, Touch ID, fingerprint
- 2FA: Two-factor authentication support
- Session Management: Active session monitoring and control
- Secure Storage: expo-secure-store for sensitive client data
- HTTPS Only: All network requests use secure connections
Before deploying to production:
- All environment variables configured
-
.envfile is gitignored - Firebase security rules deployed
- Separate Firebase projects for dev/staging/production
- Error monitoring configured (Sentry)
- SSL/TLS certificates valid
- Dependencies audited (
pnpm audit) - User privacy policy in place
- GDPR compliance reviewed (if applicable)
LoginX follows comprehensive development guidelines to ensure code quality, maintainability, and consistency.
- TypeScript - 100% type-safe, no
anytypes - ESLint - Enforced code quality rules
- Prettier - Automatic code formatting
- Conventional Commits - Standardized commit messages
-
Create a feature branch:
git checkout -b feature/your-feature-name
-
Make your changes following the guidelines in
.github/instructions/rule.instructions.md -
Validate your code:
pnpm validate
-
Commit your changes:
git add . git commit -m "feat: add new feature"
-
Push and create PR:
git push origin feature/your-feature-name
- Use functional components only
- Implement themed components for light/dark mode support
- Follow accessibility guidelines (WCAG 2.1 AA)
- Add TypeScript types for all props
- Include JSDoc comments for complex components
- Local state:
useStatefor component-local state - Context: For app-wide state (auth, theme, language)
- Custom hooks: Extract reusable stateful logic
- Test on both iOS and Android
- Test light and dark modes
- Test different screen sizes
- Test with VoiceOver/TalkBack for accessibility
- Test offline scenarios
- Use
React.memofor expensive components - Optimize FlatList with
keyExtractorandgetItemLayout - Use
useCallbackanduseMemoappropriately - Avoid inline functions in render
- Monitor bundle size
For complete development guidelines, see .github/instructions/rule.instructions.md.
We welcome contributions to LoginX! Here's how you can help:
- π Report bugs - Open an issue with details
- π‘ Suggest features - Share your ideas
- π Improve documentation - Fix typos, add examples
- π§ Submit pull requests - Fix bugs or add features
- π Add translations - Help with i18n
-
Fork the repository
gh repo fork vivekbarsagadey/loginx
-
Clone your fork
git clone https://github.com/YOUR-USERNAME/loginx.git cd loginx -
Create a feature branch
git checkout -b feature/amazing-feature
-
Install dependencies
pnpm install
-
Make your changes
- Follow the development guidelines
- Add tests if applicable
- Update documentation
-
Validate your changes
pnpm validate:fix pnpm validate
-
Commit your changes
git add . git commit -m "feat: add amazing feature"
Use Conventional Commits:
feat:- New featurefix:- Bug fixdocs:- Documentation changesstyle:- Code style changes (formatting)refactor:- Code refactoringtest:- Adding testschore:- Maintenance tasks
-
Push to your fork
git push origin feature/amazing-feature
-
Create a Pull Request
- Go to the original repository
- Click "New Pull Request"
- Select your branch
- Describe your changes
- Submit for review
All contributions go through code review. Reviewers will check:
- Code quality and style compliance
- Test coverage
- Documentation updates
- Security implications
- Performance impact
- Be respectful and inclusive
- Follow our Code of Conduct
- Help others learn and grow
- Provide constructive feedback
- Celebrate successes together
This project is licensed under the MIT License - see the LICENSE file for details.
- β Commercial use - Use in commercial projects
- β Modification - Modify the code
- β Distribution - Distribute copies
- β Private use - Use privately
- βΉοΈ Liability - Limited liability
- βΉοΈ Warranty - No warranty provided
Copyright (c) 2025 Vivek Barsagadey / Whiz IT
Need help? Here are your options:
- README.md - This file (getting started)
- SECURITY.md - Security guidelines
- QUICK_REFERENCE.md - Quick reference
- AUTHENTICATION_REVIEW.md - Authentication flow review
- docs/DESIGN_SYSTEM.md - Complete design system guide (1000+ lines)
- docs/DESIGN_SYSTEM_ANALYSIS.md - Industry comparison & analysis
- docs/DESIGN_SYSTEM_SUMMARY.md - Quick overview
- docs/DESIGN_SYSTEM_IMPROVEMENTS.md - 4-phase improvement plan (25 components)
- docs/DESIGN_SYSTEM_IMPROVEMENT_SUMMARY.md - Implementation roadmap
- docs/DESIGN_SYSTEM_CHECKLIST.md - Implementation checklist
- docs/CONSTANTS_REFERENCE.md - All constants reference
- docs/LINTING_FORMATTING.md - Linting and formatting setup
- docs/LOGIN_FLOW_DOCUMENTATION.md - Login flow details
- docs/REGISTRATION_FLOW.md - Registration flow documentation
- docs/LOCAL_FIRST_IMPLEMENTATION.md - Local-first architecture
- docs/DOCUMENTATION_STRUCTURE.md - Documentation organization
- docs/IMPLEMENTATION_STATUS.md - Implementation status
- .github/instructions/rule.instructions.md - Complete dev guidelines
- π¬ GitHub Discussions - Ask questions, share ideas
- π GitHub Issues - Report bugs or request features
- π§ Email - vivek@whizit.co.in
- π Website - https://whizit.co.in
- Expo Documentation - https://docs.expo.dev/
- React Native Docs - https://reactnative.dev/docs/getting-started
- Firebase Docs - https://firebase.google.com/docs
- TypeScript Handbook - https://www.typescriptlang.org/docs/
For security vulnerabilities, please DO NOT open a public issue. Email security concerns directly to vivek@whizit.co.in.
Vivek Barsagadey is a passionate software engineer and mobile app developer specializing in React Native, Expo, and modern JavaScript/TypeScript technologies. With a focus on creating intuitive, accessible, and high-performance mobile applications, Vivek brings enterprise-grade solutions to life with clean code and best practices.
Expertise:
- π± Cross-platform mobile development (React Native, Expo)
- π Authentication & security implementations
- π¨ UI/UX design and accessibility
- β‘ Performance optimization
- π Internationalization (i18n)
- π§ DevOps and CI/CD pipelines
Connect with Vivek:
- π Website: https://vivekbarsagadey.com (if available)
- πΌ LinkedIn: linkedin.com/in/vivekbarsagadey (if available)
- π GitHub: @vivekbarsagadey
- π§ Email: vivek@whizit.co.in
- π¦ Twitter/X: @vivekbarsagadey (if available)
Whiz IT is a forward-thinking software development company specializing in innovative digital solutions. We create cutting-edge mobile and web applications that help businesses transform their ideas into reality.
What We Do:
- π± Mobile App Development - Native and cross-platform solutions
- π Web Development - Modern, responsive web applications
- π¨ UI/UX Design - User-centered design that delights
- βοΈ Cloud Solutions - Scalable cloud infrastructure and services
- π Security & Compliance - Enterprise-grade security implementations
- π Digital Transformation - End-to-end digital solutions
Our Values:
- Quality First - We never compromise on code quality and best practices
- Security Minded - Security is built into everything we create
- User-Centric - Every decision is made with the end user in mind
- Innovation - We stay at the forefront of technology trends
- Transparency - Open communication and honest relationships
- Accessibility - Building inclusive products for everyone
Technologies We Love:
React Native β’ Expo β’ TypeScript β’ Node.js β’ Firebase β’ AWS β’ React β’ Next.js β’ PostgreSQL β’ MongoDB β’ GraphQL β’ Docker β’ Kubernetes
Get in Touch:
- π Website: https://whizit.co.in
- π§ Email: hello@whizit.co.in or vivek@whizit.co.in
- πΌ LinkedIn: linkedin.com/company/whizit (if available)
- π GitHub: @whizit (if available)
Project Portfolio:
LoginX is just one of many innovative projects from Whiz IT. We're committed to open-source development and contributing back to the developer community. Check out our other projects and contributions on our website and GitHub.
Interested in working with us? Whether you need a mobile app, web platform, or custom software solution, we'd love to hear from you. Contact us to discuss your next project!
Built with β€οΈ by Vivek Barsagadey at Whiz IT
Special thanks to:
- The Expo team for an amazing framework
- The React Native community
- All contributors and supporters
- The open-source community for incredible tools and libraries
Current Version: 1.0.0
Last Documentation Review: October 11, 2025
Status: β
Production Ready (Grade: A+)
π Project Health Report
A comprehensive project review was completed on October 11, 2025. Overall Grade: A+
See docs/PROJECT_REVIEW_OCT_2025.md for the full report. Status: Active Development
Last Updated: October 2, 2025
Made with β€οΈ using Expo and React Native