Skip to content

tosh7/BlackCat

Repository files navigation

BlackCat - Package Delivery Tracker for iOS

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.

Features

  • Multi-Carrier Tracking — Track packages from Yamato (ヤマト運輸), Sagawa (佐川急便), and Japan Post (日本郵便) in a unified interface
  • Zero Dependencies — Built entirely with Apple-native frameworks

Coming Soon

  • 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

Architecture

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

Supported Carriers

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

Tech Stack

Category Technology
UI SwiftUI
Reactive Combine
Testing XCTest
Background (planned) BGTaskScheduler
Widget (planned) WidgetKit
Watch (planned) WatchConnectivity, App Groups

Getting Started

Requirements

  • Xcode 26 or later (recommended)
  • iOS deployment target: 26.0

Build & Run

git clone https://github.com/tosh7/BlackCat.git
cd BlackCat
open BlackCat.xcodeproj

Select the BlackCat scheme and run on a simulator or device.

Testing

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

License

MIT

Contact

About

BlackCat iOS App made with SwiftUI. Check where your delivery item is!

Resources

License

Stars

3 stars

Watchers

1 watching

Forks

Packages

 
 
 

Contributors

Languages