A native iOS app for tracking package deliveries across major Japanese carriers — Yamato Transport, Sagawa Express, and Japan Post — all in one place. Built entirely with SwiftUI, Combine, and Apple-native frameworks. No third-party dependencies.
Available on the App Store.
- Multi-Carrier Tracking — Track packages from Yamato (ヤマト運輸), Sagawa (佐川急便), and Japan Post (日本郵便) in a unified interface
- Zero Dependencies — Built entirely with Apple-native frameworks
- Apple Watch App — View delivery status from your wrist with watch complications (code in place, under testing)
- Home Screen Widget — WidgetKit-powered widget for at-a-glance delivery status
- Background Refresh — Automatic status updates via BGTaskScheduler at configurable intervals
- Push Notifications — Alerts on status changes and delivery completion
- Dark Mode — Full support for both light and dark appearances
MVVM with Combine for reactive data binding. The codebase is organized into four targets:
BlackCat/ # Main iOS app
├── Scenes/
│ ├── Splash/ # Launch screen
│ ├── DeliveryList/ # Main list of tracked packages
│ ├── AddList/ # Register a new tracking number
│ ├── StateDetail/ # Delivery status timeline
│ ├── Settings/ # Background refresh, notifications, display
│ ├── Onboarding/ # First-run experience
│ └── Help/ # FAQ
├── Models/ # DeliveryItem, DeliveryCarrier, DeliveryStatus
├── Utils/ # BackgroundRefreshManager, NotificationManager
└── CommonViews/ # Reusable UI components
Domain/ # Networking & API layer
├── APIProtocols/ # Generic API client, error handling
├── Endpoints/ # Carrier-specific request/response (Tneko, Sagawa, JapanPost)
└── DomainTests/ # Unit tests per carrier + API error tests
Shared/ # Cross-target models
├── SharedDeliveryItem # Common delivery model
├── SharedDataManager # App Group data sync (iOS ↔ Widget ↔ Watch)
└── WatchDeliveryData # Lightweight Codable model for WatchConnectivity
BlackCatWatch/ # watchOS companion app
├── Views/ # Watch-optimized list & detail views
├── Complications/ # Watch face complications
└── Utils/ # WatchConnectivityManager
BlackCarWidget/ # WidgetKit home screen widget
| Carrier | Tracking Format | API |
|---|---|---|
| Yamato Transport (ヤマト運輸) | 12 digits | HTML scraping |
| Sagawa Express (佐川急便) | 12 digits | HTML scraping |
| Japan Post (日本郵便) | 11–13 digits / international (e.g. EA123456789JP) | REST API |
| Category | Technology |
|---|---|
| UI | SwiftUI |
| Reactive | Combine |
| Testing | XCTest |
| Background (planned) | BGTaskScheduler |
| Widget (planned) | WidgetKit |
| Watch (planned) | WatchConnectivity, App Groups |
- Xcode 26 or later (recommended)
- iOS deployment target: 26.0
git clone https://github.com/tosh7/BlackCat.git
cd BlackCat
open BlackCat.xcodeprojSelect the BlackCat scheme and run on a simulator or device.
xcodebuild test -project BlackCat.xcodeproj -scheme BlackCat -destination 'platform=iOS Simulator,name=iPhone 16'Tests cover:
- Carrier API parsing (Tneko, Sagawa, Japan Post)
- ViewModel logic (DeliveryList, AddList, StateDetail)
- API error handling and HTTP method routing
- Email: zlia.6.lj.425@gmail.com
- Twitter: tosh_3
- LinkedIn: Satoshi Komatsu