mirror of
https://github.com/wahyd4/links.git
synced 2026-08-09 05:06:16 +10:00
200 lines
6.5 KiB
Markdown
200 lines
6.5 KiB
Markdown
# 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 metadata
|
|
- `Tag` - Categorization system with many-to-many relationship
|
|
- `ClickLog` - Track individual clicks with timestamps
|
|
- `ChangeLog` - Audit trail for link modifications
|
|
|
|
#### ViewModels
|
|
- `LinkViewModel` - Manages link CRUD operations and business logic
|
|
- `TagManager` - Handles tag creation, search, and suggestions
|
|
|
|
#### Views
|
|
- `LinkListView` - Main interface showing all links with search/filter
|
|
- `LinkFormView` - Create/edit links with validation
|
|
- `LinkDetailView` - Comprehensive link information and analytics
|
|
- `SearchView` - Advanced search with filters and suggestions
|
|
- `AnalyticsView` - Charts and insights dashboard
|
|
|
|
#### Utilities
|
|
- `URLTemplateProcessor` - Parse and process template URLs
|
|
- `MarkdownRenderer` - Render markdown content to AttributedString
|
|
- `AnalyticsCalculator` - Generate chart data and statistics
|
|
- `PersistenceController` - 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
|
|
|
|
1. Open `Heygo.xcodeproj` in Xcode
|
|
2. Select your development team in project settings
|
|
3. Choose your target device or simulator
|
|
4. 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]
|