Skip to content

tanmayraut45/Personal_call_log_saver

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

1 Commit
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Personal Call Log Saver

A fully offline React Native app for managing personal call logs with Material Design 3 UI, built with Expo and TypeScript.

๐Ÿ“ฑ Features

  • ๐Ÿ“ž Call Log Management: Add, edit, delete, and search call log entries
  • ๐ŸŽจ Material Design 3: Modern UI with dynamic theming (light/dark mode)
  • ๐ŸŒ Internationalization: Support for English and Marathi languages
  • ๐Ÿ’พ Offline Storage: All data stored locally using AsyncStorage
  • ๐Ÿ” Search Functionality: Quick search through call logs
  • ๐Ÿ“ฑ Cross-Platform: Runs on Android (iOS support available)
  • โšก Performance: Optimized with React Native best practices

๐Ÿš€ Quick Start

Prerequisites

  • Node.js (v16 or higher)
  • npm or yarn
  • Android Studio (for Android development)
  • Expo CLI
  • EAS CLI (for building APK)

Installation

  1. Clone the repository

    git clone <repository-url>
    cd Personal_call_log_saver
  2. Install dependencies

    npm install
  3. Start the development server

    npm start
    # or
    npx expo start

Running the App

Option 1: Expo Go (Development)

  1. Install Expo Go on your Android device/emulator
  2. Scan the QR code or enter the URL manually: exp://192.168.1.3:8081

Option 2: Development Build

npm run android
# or
npx expo run:android

Option 3: Production APK

npm run build:android:local
# or
eas build --local --platform android

๐Ÿ“ Project Structure

Personal_call_log_saver/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ components/          # Reusable UI components
โ”‚   โ”‚   โ”œโ”€โ”€ CallItem.tsx     # Individual call log item
โ”‚   โ”‚   โ””โ”€โ”€ CallModal.tsx    # Add/Edit call modal
โ”‚   โ”œโ”€โ”€ context/             # React Context providers
โ”‚   โ”‚   โ”œโ”€โ”€ ThemeContext.tsx # Theme management
โ”‚   โ”‚   โ””โ”€โ”€ I18nContext.tsx  # Internationalization
โ”‚   โ”œโ”€โ”€ i18n/                # Internationalization setup
โ”‚   โ”‚   โ””โ”€โ”€ index.ts         # i18next configuration
โ”‚   โ”œโ”€โ”€ locales/             # Translation files
โ”‚   โ”‚   โ”œโ”€โ”€ en.json          # English translations
โ”‚   โ”‚   โ””โ”€โ”€ mr.json          # Marathi translations
โ”‚   โ”œโ”€โ”€ navigation/          # Navigation setup
โ”‚   โ”‚   โ””โ”€โ”€ BottomTabNavigator.tsx
โ”‚   โ”œโ”€โ”€ screens/             # App screens
โ”‚   โ”‚   โ”œโ”€โ”€ CallLogsScreen.tsx
โ”‚   โ”‚   โ””โ”€โ”€ SettingsScreen.tsx
โ”‚   โ”œโ”€โ”€ storage/             # Data persistence
โ”‚   โ”‚   โ””โ”€โ”€ callLog.ts       # AsyncStorage service
โ”‚   โ””โ”€โ”€ types/               # TypeScript type definitions
โ”‚       โ””โ”€โ”€ index.ts
โ”œโ”€โ”€ assets/                  # App assets (icons, splash)
โ”œโ”€โ”€ android/                 # Android native code
โ”œโ”€โ”€ App.tsx                  # Main app component
โ”œโ”€โ”€ index.js                 # App entry point
โ”œโ”€โ”€ app.json                 # Expo configuration
โ”œโ”€โ”€ eas.json                 # EAS Build configuration
โ”œโ”€โ”€ package.json             # Dependencies and scripts
โ””โ”€โ”€ README.md               # This file

๐Ÿ› ๏ธ Technologies Used

  • React Native 0.73.6: Cross-platform mobile framework
  • Expo SDK 50: Development platform and tools
  • TypeScript: Type-safe JavaScript
  • React Navigation 6: Navigation library
  • React Native Paper: Material Design components
  • AsyncStorage: Local data persistence
  • i18next: Internationalization framework
  • React Native Reanimated: Advanced animations
  • React Native Gesture Handler: Touch gestures
  • React Native Vector Icons: Icon library

๐ŸŽจ UI/UX

  • Material Design 3: Modern, accessible design system
  • Dynamic Theming: Automatic light/dark mode support
  • Responsive Layout: Optimized for different screen sizes
  • Intuitive Navigation: Bottom tab navigation with clear labels
  • Accessible: Screen reader support and proper contrast ratios

๐ŸŒ Localization

The app supports multiple languages:

  • English (default)
  • Marathi (เคฎเคฐเคพเค เฅ€)

Adding New Languages

  1. Create a new translation file in src/locales/
  2. Add translations for all keys used in the app
  3. Update the language picker in SettingsScreen.tsx
  4. Update the i18n configuration in src/i18n/index.ts

๐Ÿ“ฑ App Screens

Call Logs Screen

  • View all saved call logs
  • Search functionality
  • Add new call log entries
  • Edit existing entries
  • Delete entries with confirmation

Settings Screen

  • Language selection (English/Marathi)
  • Theme toggle (Light/Dark/System)
  • App information

๐Ÿ”ง Development

Available Scripts

# Development
npm start                    # Start Expo development server
npm run android             # Run on Android emulator/device
npm run ios                 # Run on iOS simulator/device
npm run web                 # Run on web browser

# Building
npm run build:android       # Build APK with EAS (cloud)
npm run build:android:local # Build APK locally with EAS

# Code Quality
npm run lint               # Run ESLint
npm run lint:fix           # Fix ESLint issues automatically
npm run type-check         # Run TypeScript type checking

Environment Setup

  1. Android Development

    • Install Android Studio
    • Set up Android SDK and emulator
    • Configure environment variables (ANDROID_HOME)
  2. iOS Development (macOS only)

    • Install Xcode
    • Set up iOS simulator

Building for Production

Local Build (Recommended)

eas build --local --platform android

Cloud Build

eas build --platform android

The built APK will be available in the project root directory.

๐Ÿ“ฆ Dependencies

Core Dependencies

  • react-native: Cross-platform framework
  • expo: Development platform
  • react-navigation: Navigation
  • react-native-paper: UI components
  • @react-native-async-storage/async-storage: Data storage
  • i18next & react-i18next: Internationalization

Development Dependencies

  • typescript: Type checking
  • @types/*: Type definitions
  • eslint: Code linting
  • prettier: Code formatting

๐Ÿš€ Deployment

Android APK

  1. Build the APK using EAS Build
  2. Test on physical devices
  3. Distribute via Google Play Store or direct APK sharing

Expo Updates

For OTA updates, configure Expo Updates in app.json and use:

eas update --branch production

๐Ÿ› Troubleshooting

Common Issues

  1. Metro bundler cache issues

    npx expo start --clear
  2. Android build issues

    cd android && ./gradlew clean && cd ..
    npx expo run:android
  3. Dependency conflicts

    rm -rf node_modules package-lock.json
    npm install
  4. Storage permission issues

    • Ensure proper permissions are set in android/app/src/main/AndroidManifest.xml

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ‘จโ€๐Ÿ’ป Author

Created with โค๏ธ by [Your Name]

๐Ÿค Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

๐Ÿ“ Changelog

v1.0.0 (2025-07-06)

  • Initial release
  • Call log management functionality
  • Material Design 3 UI
  • English and Marathi localization
  • Dark/Light theme support
  • AsyncStorage integration
  • Expo EAS Build support

๐Ÿ”ฎ Future Enhancements

  • Export call logs to CSV/JSON
  • Call statistics and analytics
  • Contact integration
  • Voice memo attachments
  • Cloud backup and sync
  • Widget support
  • iOS version
  • Additional language support

๐Ÿ“ž Support

If you encounter any issues or have questions:

  1. Check the Troubleshooting section
  2. Search existing Issues
  3. Create a new issue with detailed information

Made with React Native & Expo ๐Ÿš€

  • โœ… Easy Copy: One-tap copy phone numbers to clipboard
  • โœ… Bottom Tab Navigation: Intuitive navigation between Call Logs and Settings
  • โœ… Search & Filter: Real-time search by name or phone number
  • โœ… Data Persistence: All data stored locally on device

Screenshots

Screenshots would go here

Technology Stack

  • React Native 0.72.6 - Cross-platform mobile development
  • React Navigation 6 - Navigation with bottom tabs
  • React Native Paper 5 - Material Design 3 components
  • AsyncStorage - Local data persistence
  • i18next - Internationalization (English & Marathi)
  • React Native Vector Icons - Material Design icons
  • TypeScript - Type safety and better development experience

Installation & Setup

Prerequisites

  • Node.js 16 or higher
  • React Native CLI
  • Android Studio (for Android development)
  • Java 11 or higher

Setup Instructions

  1. Clone and Install Dependencies

    cd /Users/tanmay/Documents/Personal_call_log_saver
    npm install
  2. Install iOS Dependencies (if building for iOS)

    cd ios && pod install && cd ..
  3. Start Metro Bundler

    npm start
  4. Run on Android

    npm run android
  5. Run on iOS (if needed)

    npm run ios

Vector Icons Setup

After installation, link vector icons:

npx react-native-vector-icons link

For Android, you may need to manually add vector icons to your build configuration.

Project Structure

src/
โ”œโ”€โ”€ components/           # Reusable UI components
โ”‚   โ”œโ”€โ”€ CallItem.tsx     # Individual call log item
โ”‚   โ””โ”€โ”€ CallModal.tsx    # Add/edit call modal
โ”œโ”€โ”€ context/             # React context providers
โ”‚   โ”œโ”€โ”€ I18nContext.tsx  # Internationalization context
โ”‚   โ””โ”€โ”€ ThemeContext.tsx # Theme management context
โ”œโ”€โ”€ i18n/               # Internationalization setup
โ”‚   โ””โ”€โ”€ index.ts        # i18n configuration
โ”œโ”€โ”€ locales/            # Translation files
โ”‚   โ”œโ”€โ”€ en.json         # English translations
โ”‚   โ””โ”€โ”€ mr.json         # Marathi translations
โ”œโ”€โ”€ navigation/         # App navigation
โ”‚   โ””โ”€โ”€ BottomTabNavigator.tsx
โ”œโ”€โ”€ screens/           # App screens
โ”‚   โ”œโ”€โ”€ CallLogsScreen.tsx
โ”‚   โ””โ”€โ”€ SettingsScreen.tsx
โ”œโ”€โ”€ storage/           # Data persistence layer
โ”‚   โ””โ”€โ”€ callLog.ts     # AsyncStorage operations
โ””โ”€โ”€ types/             # TypeScript type definitions
    โ””โ”€โ”€ index.ts

Usage

Adding Call Logs

  1. Tap the + (FAB) button on the Call Logs screen
  2. Enter name (optional) and phone number (required)
  3. Tap Save

Editing Call Logs

  1. Tap on any call log entry
  2. Modify the details in the modal
  3. Tap Save

Deleting Call Logs

  1. Long press on any call log entry
  2. Confirm deletion in the alert dialog

Copying Phone Numbers

  1. Tap the copy icon next to any phone number
  2. Number is copied to clipboard with confirmation

Searching

  1. Use the search bar at the top of Call Logs screen
  2. Search by name or phone number
  3. Results filter in real-time

Changing Language

  1. Go to Settings screen
  2. Select desired language (English/Marathi)
  3. App immediately updates to selected language

Data Storage

All data is stored locally using @react-native-async-storage/async-storage:

  • Call Logs: Stored in call_logs key
  • Language Preference: Stored in app_language key

Data persists across app sessions and device restarts.

Customization

Adding New Languages

  1. Create new translation file in src/locales/
  2. Add language to src/i18n/index.ts
  3. Update language picker in Settings screen

Styling

  • Themes are defined in src/context/ThemeContext.tsx
  • Material Design 3 colors used throughout
  • Automatic dark/light theme detection

Adding Features

  • New screens can be added to src/screens/
  • Additional storage methods in src/storage/
  • New components in src/components/

Build for Production

Android APK

cd android
./gradlew assembleRelease

Android Bundle (for Play Store)

cd android
./gradlew bundleRelease

Contributing

  1. Follow the existing code structure
  2. Use TypeScript for type safety
  3. Follow Material Design 3 guidelines
  4. Add translations for new text content
  5. Test on both light and dark themes

License

This project is open source and available under the MIT License.

Support

For issues or questions, please create an issue in the project repository.

About

personal call log saver

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors