mirror of
https://github.com/wahyd4/links.git
synced 2026-08-08 21:04:53 +10:00
Heygo iOS App (黑狗)
A comprehensive iOS link management application that replicates the functionality of the Django-based link management system. Built with SwiftUI, Core Data, and modern iOS development practices.
Features
Core Link Management
- ✅ Create, edit, and delete links with unique aliases
- ✅ Support for regular links, custom markdown content, and template URLs
- ✅ URL template processing with parameter placeholders (
{param,default=value}) - ✅ Real-time alias validation and duplicate prevention
- ✅ Click tracking and analytics
Advanced Features
- ✅ Tag-based organization with auto-completion
- ✅ Powerful search with fuzzy matching
- ✅ Comprehensive analytics with charts
- ✅ Markdown rendering for custom content
- ✅ Multi-language support (English and Chinese)
- ✅ Dark mode support
- ✅ Accessibility features
Analytics & Insights
- ✅ Click tracking with timestamps
- ✅ Visual charts showing usage trends
- ✅ Top performing links analysis
- ✅ Link type distribution
- ✅ Time-based filtering (1 week to all time)
- ✅ Export capabilities
User Experience
- ✅ Clean, modern SwiftUI interface
- ✅ Intuitive navigation with tab-based structure
- ✅ Pull-to-refresh functionality
- ✅ Swipe actions for quick operations
- ✅ Real-time search and filtering
- ✅ Template parameter input dialogs
Architecture
Design Pattern
- MVVM (Model-View-ViewModel) with Combine framework
- Core Data for persistent storage
- SwiftUI for modern, declarative UI
Key Components
Models
Link- Core link entity with alias, URL, type, and metadataTag- Categorization system with many-to-many relationshipClickLog- Track individual clicks with timestampsChangeLog- Audit trail for link modifications
ViewModels
LinkViewModel- Manages link CRUD operations and business logicTagManager- Handles tag creation, search, and suggestions
Views
LinkListView- Main interface showing all links with search/filterLinkFormView- Create/edit links with validationLinkDetailView- Comprehensive link information and analyticsSearchView- Advanced search with filters and suggestionsAnalyticsView- Charts and insights dashboard
Utilities
URLTemplateProcessor- Parse and process template URLsMarkdownRenderer- Render markdown content to AttributedStringAnalyticsCalculator- Generate chart data and statisticsPersistenceController- Core Data stack management
Technology Stack
Frameworks & Libraries
- SwiftUI - Modern declarative UI framework
- Core Data - Local data persistence
- Charts - Native charting framework (iOS 16+)
- Combine - Reactive programming framework
- Foundation - Core system services
iOS Features Used
- Universal App - Supports iPhone and iPad
- Internationalization - English and Chinese localization
- Accessibility - VoiceOver and accessibility features
- URL Schemes - Handle external link opening
- Share Extensions - (Future enhancement)
Project Structure
Heygo/
├── HeygoApp.swift # App entry point
├── ContentView.swift # Main tab navigation
├── Views/ # SwiftUI views
│ ├── LinkListView.swift # Main link list interface
│ ├── LinkFormView.swift # Link creation/editing
│ ├── LinkDetailView.swift # Detailed link information
│ ├── SearchView.swift # Advanced search interface
│ └── AnalyticsView.swift # Analytics dashboard
├── ViewModels/ # Business logic
│ └── LinkViewModel.swift # Main view model
├── Models/ # Core Data entities
│ ├── CoreDataModel.xcdatamodeld
│ ├── PersistenceController.swift
│ └── [Entity]+CoreDataClass.swift
├── Utils/ # Utility classes
│ ├── URLTemplateProcessor.swift
│ ├── TagManager.swift
│ ├── MarkdownRenderer.swift
│ └── AnalyticsCalculator.swift
└── Resources/ # Assets and localization
├── Assets.xcassets
├── Info.plist
├── en.lproj/
└── zh-Hans.lproj/
Requirements
- iOS 17.0+ (for Charts framework and latest SwiftUI features)
- Xcode 15.0+
- Swift 5.9+
Installation & Setup
- Open
Heygo.xcodeprojin Xcode - Select your development team in project settings
- Choose your target device or simulator
- Build and run (⌘+R)
Key Features Implementation
URL Template System
The app supports dynamic URL templates with parameters:
https://google.com/search?q={query}
https://github.com/{user}/{repo}
https://maps.apple.com/?q={location,default=New York}
Analytics Engine
Comprehensive analytics with multiple time ranges and metrics:
- Click trends over time
- Top performing links
- Link type distribution
- Activity timeline
Tag Management
Intelligent tag system with:
- Auto-completion based on existing tags
- Tag suggestions based on URL patterns
- Bulk tag operations
- Usage statistics
Search & Filter
Advanced search capabilities:
- Fuzzy text matching
- Filter by link type and tags
- Search history
- Quick URL opening
Performance Considerations
- Lazy Loading - Large link collections loaded incrementally
- Core Data Optimization - Proper indexing and fetch request optimization
- Memory Management - Efficient image and data caching
- Background Processing - Analytics calculations performed off main thread
Accessibility
- VoiceOver Support - All UI elements properly labeled
- Dynamic Type - Respects user's text size preferences
- High Contrast - Supports accessibility color schemes
- Keyboard Navigation - Full keyboard accessibility
Localization
Currently supports:
- English (en)
- Simplified Chinese (zh-Hans)
Easy to extend for additional languages by adding new .lproj directories.
Future Enhancements
- iCloud sync capabilities
- Share extension for adding links from other apps
- Widgets for quick access to popular links
- Shortcuts app integration
- Export/import functionality
- QR code generation for links
- Backup and restore features
Contributing
This iOS app is designed to be a faithful replica of the Django web application. When adding new features, ensure they maintain parity with the web version while taking advantage of iOS-specific capabilities.
License
[Add your license information here]