Dimillian / IceCubesApp

A SwiftUI Mastodon client
https://apps.apple.com/us/app/ice-cubes-for-mastodon/id6444915884
GNU Affero General Public License v3.0
5.57k stars 539 forks source link
ios mastodon swift swiftui

IceCubesApp

Download on the App Store

Swift Version License: AGPL v3

IceCubesApp is an open-source application for accessing the decentralized social network Mastodon! It's built entirely in SwiftUI, making it fast, lightweight, and easy to use.

You can connect to any Mastodon instance, browse your timeline, interact with other users, and post updates and media.

It's multiplatform and works on iOS, macOS, iPadOS, and visionOS. It has a dedicated UI with a sidebar on macOS and iPadOS.

Features

Timeline

Code -> Status & Timeline package

Editor / Composer

Code -> Status package -> StatusEditor component Code -> OpenAIClient

Notifications

Code -> Notifications package and NotificationService extension.

Explore / Search

Code -> Explore package

Direct Messages

Code -> Conversations package

Profile

Code -> Account package

Multi Accounts

Code -> Account & AppAcount packages

Other

A note on the architecture

The project is split into different Swift Packages to make managing and maintaining the codebase easier. Each package focuses on a specific application aspect, such as the UI, network communication, or data models. This modular approach allows for easier collaboration and ensures the code is organized and easily understood.

It's a great starting point for learning SwiftUI. The app covers many of the basic concepts of SwiftUI, such as building layouts, working with data, and handling user interaction. By exploring the code, you can understand how to use SwiftUI in your daily life. Plus, the open-source nature of IceCubesApp means you can see how real-world applications are built and get a sense of best practices for using SwiftUI.

The architecture is straightforward MVVM for most parts, there is no redux on this one ;)

Thanks!

Building the project

To build the project, you need to clone the repo and create a copy of the included .xcconfig file to create your config before you can compile the project. Otherwise, you will get an error.

Here are the steps:

  1. Clone the repo
  2. In the same folder that contains the IceCubesApp.xcconfig.template, run this command:
cp IceCubesApp.xcconfig.template IceCubesApp.xcconfig
  1. Fill in the DEVELOPMENT_TEAM and BUNDLE_ID_PREFIX values. The first should have your Apple Team ID (which you can find by logging into the Apple Developer Portal). The latter is your domain in reverse notation or whatever you use as the prefix for your projects.
  2. Save your changes, and then you should be able to compile the project without any issues.