A Swift package that lists Bad Bundle's apps the way badbundle.com does, with their icons and a list row that opens each app's page, so the apps can point people at each other.
.package(url: "https://github.com/badbundle/bad-bundle-apps", exact: "0.1.0")import BadBundleApps
Section("More Apps") {
ForEach(BadBundleApp.all(except: .gps)) { app in
BadBundleAppLink(app)
}
}BadBundleApp: an app's name, its tagline from the site, and the URL of its page on badbundle.com.BadBundleApp.alllists every app in the site's order, andall(except:)leaves one out, so an app can list the others.BadBundleAppIcon: the app's icon, cut to the Home Screen's rounded square. It fills the frame it's given.BadBundleAppLink: aListorFormrow with the icon, name and tagline, which opens the app's page. The section around it is left to the app.
iOS 17 and macOS 14 or later. There are no dependencies.
Once an app has a page on badbundle.com (content/apps/<slug>/_index.md in bad-bundle-web):
- Add its icon to
Sources/BadBundleApps/Icons.xcassetsas<slug>.imageset: a 512 px square PNG, full bleed, without rounded corners.BadBundleAppIcondraws the corners, so every icon gets the same shape. - Add a
static lettoBadBundleApp.swiftwith the slug, the page's title and itstagline, copied word for word, and put it inallin the order of the pages'weight. - Run
swift test, tag a new version and move the apps on to it.
The icons came from: Track Slash and Split Thing, their repos' icon.svg with the corner radius taken out; Vault, its app icon (AppIcon-Light.png); GPS, badbundle.com's GPSLogo-512.jpeg.
The code is under the MIT licence (see LICENSE). The app names and icons identify Bad Bundle Limited's apps and aren't licensed for any other use.
