A macOS app store for Northwoods Community Church apps. Discover, install, and update all Northwoods tools from one place.
- Browse all Northwoods apps from the GitHub organization
- One-click install from GitHub releases
- Automatic update checking via Sparkle appcasts
- See which apps are installed and their versions
- Update apps without opening them first
- Search and filter by name or description
- Canopy updates itself via Sparkle
- macOS 14.0 (Sonoma) or later
- Apple Silicon Mac
- Download the latest
.zipfrom Releases - Extract the zip
- Move
Canopy.appto/Applications - Try to open it (macOS will block it)
- Go to System Settings > Privacy & Security and click Open Anyway
- Canopy will now open normally going forward
- Launch Canopy
- Browse the All Apps tab to see available Northwoods apps
- Click Install to download and install an app to
/Applications - The Updates tab shows apps with newer versions available
- Click Update to update an app in place
- Click Open to launch an installed app, or use the dropdown to uninstall
# Install xcodegen if needed
brew install xcodegen
# Build
./build.shThe built app will be at build/Build/Products/Release/Canopy.app.
Canopy/
├── project.yml # XcodeGen configuration
├── build.sh # Build, sign, and zip script
├── Resources/
│ ├── Info.plist # App metadata + Sparkle config
│ └── Assets.xcassets/ # App icon
└── Sources/Canopy/
├── CanopyApp.swift # App entry point + Sparkle self-updater
├── Models/
│ ├── AppInfo.swift # App, release, and install state models
│ └── CanopyError.swift # Error types
├── Services/
│ ├── GitHubService.swift # GitHub API for repo/release discovery
│ ├── AppcastService.swift # Sparkle appcast XML parser
│ ├── IconService.swift # Icon fetching and caching
│ └── InstallService.swift # Download, extract, install to /Applications
├── ViewModels/
│ └── CatalogViewModel.swift # Main state management
└── Views/
├── ContentView.swift # Sidebar + grid layout
└── AppCardView.swift # Individual app cards
See LICENSE.
See CREDITS.md.