Fedicat is a Mastodon/Fediverse client app on iOS developed in Swift and SwiftUI with TootSDK.
Supported Platforms#
Mastodon is the primary target, but other fediverse platforms that support the Mastodon API are supported to various extents.
- Akkoma
- Catodon (recognized as Firefish)
- Firefish
- Friendica
- Iceshrimp (recognized as Firefish)
- Mastodon
- Pixelfed
- Pleroma
- Sharkey
The Fediverse#
The hardest part of joining the fediverse is deciding where to join. Here are some resources.
Goals#
- comprehensive support of the Mastodon API, shouldn’t have to go to the web front end (or any other app)
- fediverse compatibility, support at least everything recognized by TootSDK (and by implication any platform that works with the Mastodon API)
- convenient switching among multiple accounts
- accessibility: support alt-text, light/dark mode, respond to Accessibility settings (voiceover, type size…)
- safe, mood-maintenance, social experience: make blocking easy, avoid accidents
- discovery: make exploration easy
- economical: run on low-cost devices and in low-bandwidth environments (e.g. turn off image downloads)
- learn
Non-Goals#
- cross-platform. Since this is Swift/SwiftUI, forget about it.
Tips#
The left menu allows you to log in and out of instances, switch among multiple sessions, view/edit your profile, and set your app preferences.
The top menu allows you to select among feeds, including the home feed, local/global feeds for the current instance, feeds for followed hashtags, and the public feeds of instances you’ve saved.
The top right thumbnail is a reminder of the current instance you’re operating in. Tapping it brings up the instance description.
In most screens with lists, including feeds, pull-down to refresh. Feeds do not auto-refresh.
Long-press on posts for more options, including deleting and pinning posts, viewing favoriters and boosters, and reporting problematic posts.
Long-press on profile headers for more options, including reporting accounts, browsing their instance.
Tap on images to see full screen/full resolution view.
Double-tap on card thumbnails to see full screen/full resolution views.
Graphics#
The app icon is from my attempt at handcoding an SVG icon library.
Arcticons includes fediverse icons under the Creative Commons CC-BY-SA 4.0 license
All other icons are from Apple’s built-in SF Symbols.
Open Source#
This app is built with the following open source Swift packages:
- AlertToast, for displaying error messages.
- EmojiText, for rendering emojis.
- Fedicat, TootSDK extensions for Fedicat.
- HTML2Markdown converts HTML using SwiftSoup.
- ImagePickerView, for camera access.
- Nuke, for downloading and caching images.
- SwiftUI-Flow, for arranging hashtags in left-to-right wraparound fashion.
- SwiftUIKit, various SwiftUI widgets. I’m using the text field clear button.
- SwiftSys, my own hodgepodge of somewhat reusable Swift code
- TootSDK, a fediverse library