A native macOS menu bar app for tracking and managing your subscriptions.
Built with Swift + SwiftUI.
Companion to the Suber Chrome Extension
- Menu bar app — lives in the macOS menu bar, always one click away
- Calendar view — visual monthly calendar with animated month transitions and billing date indicators
- List view — searchable, filterable, sortable subscription list
- Smart favicon caching — 3-tier image cache (memory → disk → network) for fast icon loading
- Light / Dark mode — follows system appearance automatically
- Chrome extension sync — import subscriptions exported from the Chrome extension
- Multi-currency — supports 20+ currencies (USD, EUR, CNY, JPY, etc.)
- Notifications — configurable reminders before billing dates
- Data export / import — JSON backup and restore
- Custom typography — Space Grotesk font throughout the UI
- macOS 14.0 (Sonoma) or later
- Apple Silicon or Intel Mac
Download the latest Suber-v1.0.0.dmg from Releases, open it, and drag Suber.app to Applications.
Note: The app is ad-hoc signed. On first launch, right-click the app → Open → Open to bypass Gatekeeper.
# Clone
git clone https://github.com/createpjf/suber-macos.git
cd suber-macos
# Install xcodegen (if not installed)
brew install xcodegen
# Generate Xcode project
xcodegen generate
# Build Release
xcodebuild build -project SubReminder.xcodeproj -scheme SubReminder -configuration Release -derivedDataPath .build
# The app is at .build/Build/Products/Release/SubReminder.app# After building, create DMG
DMG_DIR=$(mktemp -d)
cp -R .build/Build/Products/Release/SubReminder.app "$DMG_DIR/Suber.app"
ln -s /Applications "$DMG_DIR/Applications"
hdiutil create -volname "Suber" -srcfolder "$DMG_DIR" -ov -format UDZO Suber-v1.0.0.dmg- In the Chrome extension, go to Settings → Export JSON
- In the macOS app, go to Settings → Import JSON
- Select the exported file — subscriptions and settings will be imported
- Swift 5.9+, SwiftUI, macOS 14+
MenuBarExtrawith.windowstyleUserDefaults+CodableJSON persistenceNSCache+ disk cache for favicon imagesxcodegenfor project generation- Space Grotesk custom font family
Sources/
├── SubReminderApp.swift # App entry point (MenuBarExtra)
├── Info.plist # App configuration
├── Models/
│ ├── Constants.swift # Theme, AppFont, currencies, categories
│ ├── Settings.swift # AppSettings model
│ └── Subscription.swift # Subscription model & form data
├── Services/
│ ├── BillingCalculator.swift # Next billing date calculations
│ ├── ImageCache.swift # 3-tier favicon cache (memory/disk/network)
│ ├── NotificationService.swift # Local notification scheduling
│ └── StorageService.swift # JSON persistence & import/export
├── Utilities/
│ ├── CurrencyFormatter.swift # Currency display formatting
│ └── DateHelpers.swift # Calendar grid & date formatting
├── ViewModels/
│ ├── SettingsStore.swift # Settings state management
│ └── SubscriptionStore.swift # Subscription CRUD operations
├── Views/
│ ├── MenuBarView.swift # Root view with tab navigation
│ ├── TopBarView.swift # Navigation bar with Suber branding
│ ├── CalendarView.swift # Monthly calendar with slide animation
│ ├── CalendarDayCellView.swift # Calendar day cell with billing dots
│ ├── DayDetailView.swift # Day detail popup
│ ├── ListView.swift # Subscription list with sort/filter
│ ├── SubCardView.swift # Subscription card component
│ ├── SubscriptionFormView.swift # Add/edit subscription form
│ ├── SettingsView.swift # Settings page
│ └── Components/
│ ├── FilterBarView.swift # Status filter tabs
│ ├── LogoView.swift # Favicon with cache integration
│ ├── SearchBarView.swift # Search input
│ └── ToggleRow.swift # Toggle setting row
└── Resources/
└── Fonts/ # Space Grotesk TTF files
Assets.xcassets/
├── AppIcon.appiconset/ # macOS app icon (blue S-knot)
└── MenuBarIcon.imageset/ # Menu bar template icon
Tests/
├── BillingCalculatorTests.swift
├── StorageServiceTests.swift
└── SubscriptionStoreTests.swift
createpjf — @createpjf
MIT © createpjf


