{"id":30343572,"url":"https://github.com/lsafonso/receiptlock","last_synced_at":"2025-08-18T11:13:36.020Z","repository":{"id":308969715,"uuid":"1034741020","full_name":"lsafonso/ReceiptLock","owner":"lsafonso","description":null,"archived":false,"fork":false,"pushed_at":"2025-08-08T23:40:26.000Z","size":93,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-09T01:13:39.810Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lsafonso.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-08T22:48:11.000Z","updated_at":"2025-08-08T23:40:29.000Z","dependencies_parsed_at":"2025-08-09T01:13:41.780Z","dependency_job_id":"a969b712-cb2c-41ab-8b96-b11483f7e4d7","html_url":"https://github.com/lsafonso/ReceiptLock","commit_stats":null,"previous_names":["lsafonso/receiptlock"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/lsafonso/ReceiptLock","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lsafonso%2FReceiptLock","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lsafonso%2FReceiptLock/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lsafonso%2FReceiptLock/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lsafonso%2FReceiptLock/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lsafonso","download_url":"https://codeload.github.com/lsafonso/ReceiptLock/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lsafonso%2FReceiptLock/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270982215,"owners_count":24679454,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-18T02:00:08.743Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-08-18T11:13:35.355Z","updated_at":"2025-08-18T11:13:36.003Z","avatar_url":"https://github.com/lsafonso.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ReceiptLock\n\n\u003e **📝 Documentation Updated**: This documentation has been updated as of January 2025 to reflect the current implementation with smart dashboard sorting functionality, appliance-based management, enhanced settings hierarchy, and complete security implementation.\n\nA comprehensive iOS app for managing receipts and warranty information with OCR capabilities, local notifications, data export/import features, and enterprise-grade security.\n\n## 📚 **Documentation**\n\n- **README.md**: This file - comprehensive feature overview and user guide\n- **PROJECT_REQUIREMENTS.md**: Detailed feature requirements and implementation status\n- **PROJECT_IMPLEMENTATION_STATUS.md**: Current project completion status and roadmap\n- **BUILD_INSTRUCTIONS.md**: Technical build and development instructions\n- **SECURITY_IMPLEMENTATION.md**: Security features and implementation details\n- **SECURITY_STATUS_SUMMARY.md**: Security assessment and compliance status\n- **CURRENCY_IMPLEMENTATION_SUMMARY.md**: Multi-currency support details\n- **USER_INTERACTION_IMPROVEMENTS.md**: Swipe action fixes and gesture enhancements\n\n## Features\n\n### 🔒 **Security \u0026 Privacy** ✅ **COMPLETE**\n- **Face ID/Touch ID Protection**: Biometric authentication with device passcode fallback\n- **Data Encryption**: AES-256 encryption for all sensitive data using CryptoKit\n- **Secure Storage**: Encrypted data storage with iOS Keychain integration\n- **Privacy Controls**: GDPR-compliant consent management and data retention policies\n- **Security Auditing**: Comprehensive security assessment and real-time monitoring\n- **Auto-Lock System**: Configurable session timeout and biometric lock protection\n- **Data Export/Deletion**: Full GDPR compliance with data portability and right to be forgotten\n\n### 💰 **Multi-Currency Support** ✅ **COMPLETE**\n- **20+ Supported Currencies**: USD, EUR, GBP, CAD, AUD, JPY, CHF, CNY, INR, BRL, and more\n- **Dynamic Currency Switching**: Change currency preferences in settings\n- **Global Updates**: All price displays update automatically\n- **OCR Integration**: Receipt scanning adapts to selected currency\n- **Persistent Storage**: Currency preferences saved automatically\n\n### Core Functionality\n- **Receipt Management**: Create, edit, and delete receipts with detailed information\n- **Warranty Tracking**: Automatic expiry date calculation based on purchase date and warranty months\n- **Receipt Scanning \u0026 OCR**: Complete camera integration with intelligent text extraction\n- **File Management**: Store receipt images and PDFs locally in Documents/receipts directory\n\n### Receipt Scanning \u0026 OCR Features\n- **Camera Integration**: Take photos of receipts directly in the app with optimized settings\n- **OCR Processing**: Automatically extract text and data from receipt images using Vision framework\n- **Smart Data Extraction**: Auto-fill receipt fields from scanned images with intelligent parsing\n- **Image Storage**: Store receipt images alongside data with automatic optimization\n- **Image Editing**: Built-in image editor with filters for better OCR results\n- **PDF Support**: Import and process PDF documents with OCR text extraction\n- **PDF Processing**: Convert PDF pages to images for enhanced OCR accuracy\n- **Multi-format Support**: Handle both image-based and text-based PDFs\n- **OCR Results Management**: Review and selectively apply extracted data\n\n### Dashboard\n- **Warranty Summary**: Overview of total devices, valid warranties, and expired warranties\n- **Smart Appliance Sorting**: Sort appliances by Recently Added, Expiring Soon, Alphabetical, or Brand\n- **Expandable Appliance Cards**: Interactive cards showing appliance details with expandable information\n- **Store Badge System**: Dynamic retailer/store badges that display the purchase location with smart truncation\n- **Floating Action Button**: Quick access to add new appliances\n- **Enhanced User Interaction**: \n  - **Swipe Actions**: Left swipe to share, right swipe for edit/delete actions\n  - **Long Press Alternative**: Long press (0.5s) to access action sheet with all options\n  - **Visual Hints**: Clear indicators showing available swipe actions\n  - **Gesture Separation**: Tap chevron to expand/collapse, swipe for actions - no conflicts\n\n### Receipt List\n- **Search \u0026 Filter**: Search by title/store and filter by status (All, Active, Expired, Expiring Soon)\n- **Swipe to Delete**: Easy deletion with associated file cleanup\n- **Navigation**: Tap to view detailed receipt information\n\n### ⚙️ **Enhanced Settings Structure** ✅ **COMPLETE**\nThe app features a comprehensive, logically organized settings hierarchy:\n\n#### **1. Profile \u0026 Personalization**\n- **Profile Photo \u0026 Name**: Update avatar and display name with integrated profile management\n- **Currency Preferences**: Full currency selection with 20+ supported currencies\n- **Language/Locale**: Comprehensive language selection (10+ languages)\n- **Theme \u0026 Appearance**: System, Light, or Dark theme with dynamic switching\n\n#### **2. Receipt \u0026 Appliance Settings**\n- **Receipt Categories**: Manage receipt organization and categorization\n- **Warranty Reminder Defaults**: Configure default reminder periods and behavior\n- **Receipt Storage Preferences**: Manage storage compression and optimization\n\n#### **3. Notifications \u0026 Reminders**\n- **Reminder Settings**: Configure multiple reminders and custom messages\n- **Active Reminders**: View and manage configured reminder counts\n- **Notification Preferences**: Sound, badges, and alert style configuration\n- **Custom Reminder Messages**: Personalize notification content\n\n#### **4. Security \u0026 Privacy**\n- **Biometric Authentication**: Face ID, Touch ID, and passcode configuration\n- **Encryption Settings**: Data encryption levels and security configuration\n- **Privacy Controls**: Data sharing consent and retention management\n\n#### **5. Backup \u0026 Sync**\n- **iCloud Sync**: Automatic cross-device synchronization\n- **Backup Settings**: Data backup and restore management\n- **Import/Export**: Manual backup and restore functionality\n- **Last Backup Tracking**: Monitor backup status and timestamps\n\n#### **6. Data Management**\n- **Storage Usage**: View app storage and cleanup options\n- **Data Export**: Export all receipts and files with compression\n- **Data Deletion**: Permanently remove data with confirmation\n\n#### **7. About \u0026 Support**\n- **App Version**: Current version and build information\n- **Terms \u0026 Privacy**: Legal documentation and privacy policy\n- **Support \u0026 Feedback**: Help resources and feedback channels\n- **Onboarding Reset**: Reset onboarding flow for new users\n\n### Receipt Details\n- **Full Information Display**: All receipt fields with expiry status\n- **Image/PDF Preview**: View attached receipt files\n- **Edit Capability**: Modify receipt information with OCR reprocessing\n- **PDF Export**: Generate and share receipt summaries as PDF\n- **Delete Function**: Remove receipts with confirmation\n\n## Technical Stack\n\n### Core Technologies\n- **SwiftUI**: Modern declarative UI framework\n- **Core Data**: Local data persistence with lightweight migrations\n- **Vision Framework**: On-device OCR for text extraction\n- **AVFoundation**: Camera integration for receipt scanning\n- **PDFKit**: PDF generation and preview\n- **UserNotifications**: Local notification scheduling\n- **PhotosUI**: Image selection from photo library\n- **FileManager**: Local file storage management\n\n### 🔒 **Security Technologies**\n- **LocalAuthentication**: Face ID and Touch ID biometric authentication\n- **CryptoKit**: AES-256 encryption and secure key management\n- **Security Framework**: iOS Keychain integration for secure storage\n- **Core Data Encryption**: Encrypted attributes and secure data persistence\n\n### Architecture\n- **MVVM Pattern**: Clean separation of concerns\n- **Feature-based Organization**: Views organized by feature\n- **Dependency Injection**: Core Data context injection\n- **Error Handling**: Comprehensive error handling with user feedback\n\n### Data Model\n```swift\nAppliance Entity:\n- id: UUID\n- name: String\n- brand: String\n- model: String\n- purchaseDate: Date\n- warrantyMonths: Int16\n- warrantyExpiryDate: Date (calculated)\n- price: Double\n- store: String\n- receiptImage: Data? (optional)\n- notes: String? (optional)\n- createdAt: Date\n- updatedAt: Date\n```\n\n## Build Instructions\n\n### Prerequisites\n- Xcode 15.0 or later\n- iOS 17.0+ deployment target\n- iPhone device or simulator\n\n### Setup Steps\n\n1. **Clone the Repository**\n   ```bash\n   git clone \u003crepository-url\u003e\n   cd ReceiptLock\n   ```\n\n2. **Open in Xcode**\n   ```bash\n   open ReceiptLock.xcodeproj\n   ```\n\n3. **Build and Run**\n   - Select your target device/simulator\n   - Press `Cmd+R` to build and run\n   - The app will request notification permissions on first launch\n\n### Project Structure\n```\nReceiptLock/\n├── ReceiptLock/\n│   ├── ReceiptLockApp.swift          # Main app entry point\n│   ├── ContentView.swift             # Root tab view\n│   ├── PersistenceController.swift   # Core Data stack\n│   ├── Views/                        # Feature views\n│   │   ├── DashboardView.swift       # Dashboard with warranty overview and sorting\n│   │   ├── ApplianceListView.swift   # Full appliance list with search/filter\n│   │   ├── AddApplianceView.swift    # Add new appliance with comprehensive fields\n│   │   ├── EditApplianceView.swift   # Edit existing appliance\n│   │   ├── ApplianceDetailView.swift # Detailed appliance view\n│   │   ├── ApplianceRowView.swift    # Appliance list item component\n│   │   ├── ReceiptListView.swift     # Receipt list with search/filter\n│   │   ├── ReceiptDetailView.swift   # Detailed receipt view\n│   │   ├── AddReceiptView.swift      # Add new receipt\n│   │   ├── EditReceiptView.swift     # Edit existing receipt\n│   │   ├── CameraView.swift          # Camera interface for receipt scanning\n│   │   ├── OnboardingView.swift      # Welcome tutorial for new users\n│   │   ├── ProfileView.swift         # User profile management\n│   │   └── SettingsView.swift        # Enhanced settings hierarchy\n│   ├── 🔒 Security/                  # Security \u0026 Privacy\n│   │   ├── AuthenticationWrapperView.swift\n│   │   ├── BiometricAuthenticationManager.swift\n│   │   ├── DataEncryptionManager.swift\n│   │   ├── SecureStorageManager.swift\n│   │   ├── PrivacyManager.swift\n│   │   ├── SecuritySettingsView.swift\n│   │   ├── AuthenticationService.swift\n│   │   └── KeychainWrapper.swift\n│   ├── Managers/                     # Business logic\n│   │   ├── NotificationManager.swift\n│   │   ├── CurrencyManager.swift     # Multi-currency support\n│   │   ├── UserProfile.swift         # Profile management\n│   │   ├── ReminderSystem.swift      # Advanced reminder system\n│   │   ├── DataBackupManager.swift   # Backup and sync\n│   │   ├── ImageStorageManager.swift # Storage optimization\n│   │   ├── OCRService.swift          # OCR text extraction\n│   │   ├── CameraService.swift       # Camera integration\n│   │   ├── PDFService.swift          # PDF generation and processing\n│   │   ├── ValidationSystem.swift    # Input validation and error handling\n│   │   └── AppTheme.swift            # Design system and theming\n│   ├── ReceiptLock.xcdatamodeld/    # Core Data model\n│   └── Assets.xcassets/             # App assets\n├── ReceiptLockTests/                 # Unit tests\n└── ReceiptLockUITests/              # UI tests\n```\n\n## Usage Guide\n\n### Adding an Appliance\n1. Tap the \"+\" floating action button on Dashboard or Appliances tab\n2. **Camera Integration**: Take photos directly in the app or choose from photo library\n3. **OCR Processing**: Automatically extract text and data from receipt images\n4. **Smart Data Extraction**: Auto-fill appliance fields from scanned images\n5. **Image Storage**: Store receipt images alongside data\n6. **Comprehensive Information**: Fill in detailed appliance information:\n   - **Basic Information**: Appliance name, store/brand, model, serial number\n   - **Purchase Details**: Purchase date, price, warranty duration\n   - **Warranty Information**: Warranty summary and additional notes\n7. Save the appliance\n\n### Managing Appliances\n- **View**: Tap any appliance in the list to see details\n- **Edit**: Use the menu in appliance details to edit\n- **Delete**: Swipe left on list items or use menu in details\n- **Search**: Use the search bar in the Appliances tab\n- **Filter**: Use the segmented control to filter by status\n- **Store Badges**: Each appliance displays a dynamic badge showing the retailer/store name with smart truncation for long names\n\n### Dashboard Features\n- **Warranty Summary**: Quick overview of warranty status across all devices\n- **Smart Sorting**: Sort appliances by different criteria:\n  - **Recently Added**: Shows newest appliances first\n  - **Expiring Soon**: Shows warranties expiring soonest first\n  - **Alphabetical**: Sorted by appliance name\n  - **Brand**: Grouped by manufacturer\n- **Expandable Cards**: Tap appliance cards to see more details\n- **Store Badge System**: Dynamic retailer/store badges with smart truncation and accessibility features\n- **Quick Actions**: Floating action button for adding new appliances\n\n### ⚙️ **Settings Configuration**\nThe enhanced settings provide comprehensive control over your app experience:\n\n#### **Profile \u0026 Personalization**\n- Update your profile photo and display name\n- Select your preferred currency from 20+ options\n- Choose your language and locale\n- Switch between system, light, or dark themes\n\n#### **Receipt \u0026 Appliance Management**\n- Organize appliances with custom categories\n- Set default warranty reminder periods\n- Configure storage preferences and optimization\n\n#### **Notifications \u0026 Reminders**\n- Set up multiple reminder notifications\n- Customize notification sounds and styles\n- Create personalized reminder messages\n\n#### **Security \u0026 Privacy**\n- Enable biometric authentication (Face ID/Touch ID)\n- Configure encryption settings\n- Manage privacy controls and data consent\n\n#### **Backup \u0026 Data Management**\n- Enable iCloud sync for cross-device access\n- Export your data for backup\n- Import data from previous backups\n- Monitor storage usage and cleanup options\n\n### Notifications\n- Configure default reminder days in Settings\n- Notifications are automatically scheduled when appliances are saved\n- Notifications appear before warranty expiry based on your settings\n\n### Data Management\n- **Export**: Creates a ZIP file with JSON data and assets\n- **Import**: Restore from a previously exported backup\n- **Delete All**: Permanently removes all data (use with caution)\n\n## Testing\n\n### Unit Tests\nRun unit tests with `Cmd+U` in Xcode. Tests cover:\n- Date calculation logic\n- Expiry status determination\n- Price formatting\n- Warranty validation\n- Store badge truncation and fallback behavior\n- Currency management\n- Security features\n- OCR processing\n\n### UI Tests\nBasic UI tests are included for core workflows:\n- Add appliance flow\n- OCR processing\n- Save and reminder scheduling\n- Settings navigation\n- Authentication flows\n\n## Permissions\n\nThe app requires the following permissions:\n- **Notifications**: For warranty expiry reminders\n- **Photo Library**: For selecting receipt images\n- **File Access**: For importing/exporting data\n\n### 🔒 **Security Permissions**\n- **Face ID/Touch ID**: For biometric authentication (optional, with passcode fallback)\n- **Keychain Access**: For secure storage of encryption keys and sensitive data\n\n## File Storage\n\nReceipt files are stored in:\n```\nDocuments/receipts/\n├── appliance-uuid-1.jpg\n├── appliance-uuid-2.pdf\n└── ...\n```\n\n## Error Handling\n\nThe app includes comprehensive error handling for:\n- Core Data operations\n- File I/O operations\n- OCR processing\n- Notification scheduling\n- User input validation\n- Security operations\n- Currency operations\n\n## Accessibility\n\n- VoiceOver labels on all interactive elements\n- Dynamic Type support\n- High contrast mode compatibility\n- Focus states for navigation\n- Store badge accessibility with full retailer names for screen readers\n\n## Future Enhancements\n\n### 🔒 **Security \u0026 Privacy** ✅ **COMPLETE**\n- **All security features implemented and production-ready**\n\n### ⚙️ **Settings \u0026 Configuration** ✅ **COMPLETE**\n- **Enhanced settings hierarchy fully implemented and production-ready**\n\n### 💰 **Multi-Currency Support** ✅ **COMPLETE**\n- **20+ currencies supported with dynamic switching**\n\n### Core Features\n- Cloud sync with iCloud ✅ **IMPLEMENTED**\n- Multiple currency support ✅ **IMPLEMENTED**\n- Enhanced OCR with machine learning\n- Appliance categorization ✅ **IMPLEMENTED**\n- Statistics and analytics\n- Widget support\n- Apple Watch companion app\n- Batch OCR processing for multiple receipts\n- Receipt template recognition for different store formats\n- Advanced image preprocessing for better OCR accuracy\n\n## License\n\nThis project is licensed under the MIT License - see the LICENSE file for details.\n\n## Support\n\nFor issues or questions, please create an issue in the repository or contact the development team. ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flsafonso%2Freceiptlock","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flsafonso%2Freceiptlock","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flsafonso%2Freceiptlock/lists"}